文件管理
Linux的目录结构
- Windows以
多根的方式
组织文件C:\ 、D:\、E:\
, Linux以单根的方式
组织文件/ .
- 目录结构:跳转到根目录,在终端输入ls,就可以查看根目录下的所有内容
[root@localhost Test]# cd /
[root@localhost /]# ls
bin boot dev etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var
- bin: 存储执行命令
- boot:启动目录
- dev:硬件(键盘、鼠标、硬盘等)
- etc:配置文件,控制台文件
- home:用户自己的文件,存储不同普通 用户的文件
- root:除了root账号和超级管理员其他账号不能查看。存放的是系统自带的一些文件夹,如图片、视频等,
当我们使用超级管理员账号远程连接服务器的时候默认进入到的是root目录 - run:运行文件
- sbin:超管的执行命令
- tmp:临时文件
- usr:安装程序的目录(相当于windows的Program File)
- var:存放日志或邮件等内容
文件类型
- 普通文件:使用
-
表示,(文本文件,二进制文件,压缩文件,电影,图片…) - 目录文件:使用
d
表示,表示文件夹 - 设备文件(块设备):使用
b
表示,存储设备硬盘。(U盘,/dev/sda,/dev/sda1) - 设备文件(字符设备):使用
c
表示(打印机,终端/dev/tty1) - 链接文件:使用
i
表示(淡蓝色) - 套接字文件:使用
s
表示 - 管道文件:使用
p
表示
文件管理命令
ctrl + l : 清屏
- ls:列出文件夹内容
ls 后面可以跟着文件夹名(绝对路径/相对路径),如果不指定代表(./)列出当前文件夹内容
[root@localhost ~]# ls
anaconda-ks.cfg initial-setup-ks.cfg 公共 模板 视频 图片 文档 下载 音乐 桌面
参数:
-l:列出文件的详细信息
[root@localhost ~]# ls -l
总用量 8
-rw-------. 1 root root 1514 9月 14 09:15 anaconda-ks.cfg
-rw-r--r--. 1 root root 1545 9月 14 09:21 initial-setup-ks.cfg
drwxr-xr-x. 2 root root 6 10月 12 08:08 公共
drwxr-xr-x. 2 root root 6 10月 12 08:08 模板
drwxr-xr-x. 2 root root 6 10月 12 08:08 视频
drwxr-xr-x. 2 root root 6 10月 12 08:08 图片
drwxr-xr-x. 2 root root 6 10月 12 08:08 文档
drwxr-xr-x. 2 root root 6 10月 12 08:08 下载
drwxr-xr-x. 2 root root 6 10月 12 08:08 音乐
drwxr-xr-x. 3 root root 18 10月 22 13:19 桌面
-a:查看隐藏的文件
-
cd: 切换目录
cd 绝对路径/相对路径
eg:
cd 绝对目录(以/开始的目录) cd /home/alice
cd 相对目录 (以.或…开始的命令)cd … -
pwd: 当前文件夹
-
touch:创建文件,后面可以有多个参数用空格分隔,代表同时创建多个文件
touch 绝对路径/相对路径+文件名
eg:
touch /aaa/bbb/ccc
表示在根目录下的aaa下的bbb中创建ccc文件
- mkdir:创建文件夹
mkdir 绝对路径/相对路径+文件夹名 (直接使用该命令时不能连续创建多个文件夹)
mkdir /aaa/bbb/ccc
表示在根目录下的aaa下的bbb中创建ccc文件夹
mkdir /aaa/bbb/{ccc,ddd}
表示在根目录下的aaa下的bbb中创建ccc文件夹和ddd文件夹
参数:
-p 父系,当创建目录没有上一级时,自动创建。允许连续创建多个文件夹
mkdir -p /a1/b1/c1
表示如果根目录下没有al文件夹,就直接在根目录下创建a1文件夹,里面有b1文件夹,再下面有c1文件夹。
-v 把创建文件的过程显示出来
- cp 复制文件/文件夹
cp 源文件夹/文件 目标文件夹
cp /home/a1/b1/c1/d1 /root/桌面/
表示将/home/a1/b1/c1
文件夹下的d1
复制到/root/桌面/
文件夹下
参数:
-r: 表示将文件夹及文件夹下的所有内容都拷贝过去(拷贝文件夹的时候没有-r参数会报错)
cp -r /home/a1 /root/桌面/
表示将/home
下的 a1文件夹下复制到/root/桌面/
文件夹下
- mv 移动文件/文件夹
mv 源文件夹/文件 目标文件夹
mv /home/a1/b1/c1/d1 /root/桌面/
就是把home下a1下b1下c1下的d1文件移动到桌面上。
- 移动并重命名
mv 源文件夹/文件 目标文件夹/新文件夹的名字
mv /home/a1/b1/c1/d1 /root/桌面/d2
就是把home下a1下b1下c1下的d1文件移动到桌面上并重命名为d2
mv /root/桌面/d2 /root/桌面/d3
就是桌面上的d2文件重命名为d3
- 删除
rm 文件/目录的路径
参数:
-rf 强制删除
rm -rf /home/a1/b1/c1/d1
删除d1文件
rm -rf /home/a1
删除home下的a1文件夹
rm -rf /home/a1/*
删除home下的a1文件夹下的所有内容但是保留a1文件及
*是通配符可以匹配任意数字的任意字符
但是/* 并不会匹配隐藏文件(.开头的文件)
rm -rf /home/a1/b*
删除home下的a1文件夹下的所有以b开头的文件或文件夹删除
rm 后面可以有多个参数,以空格分开,代表同时删除
rm -rf /home/a1 /home/a2
表示删除home下的a1和a2文件
当然等效于rm -rf /home/a*
千万不要执行rm -rf /*
会删除所有文件。
- cat 查看文件全部内容
cat 文件路径名
cat /home/1,txt
会输出1.txt的内容
- head 查看文件头部内容
head -n 文件路径名
查看文件前n行内容 - tail 查看文件尾部部内容
tail -n 文件路径名
查看文件后n行内容 - grep 通过关键字查看文件内容
grep “leo” 文件路径名
查看文件后n行内容
查看文件中leo开头的行 - more 翻页查看文件所有内容
cat 可以查看文件全部内容,但是文件过长的时候就直接显示到最后一行不利于查看,所以可以使用more进行翻页查看,会展示第一屏的内容,之后每输入一个回车符就展示下一行内容,每输入一个空格就展示下一屏内容
more /home/1.txt
会输出1.txt的内容
>
可以正确执行的命令 > 文件地址/文件名
就可以将命令的输出结果填写到目标文件中。- gedit 图形文件编辑器
以可视化的方式操作文件。
gedit 1.txt
创建1.txt文件,并以可视化记事本的方式打开文件进行操作。
-
修改文件
vi vim,这两个命令可以修改文件,vim是vi的升级版
vim /1.txt
对1.txt文件进行编辑:
i
:输入i命令(insert)之后才可以对文件进行编辑,编辑完成之后点击esc按钮退出编辑模式
:wq
:保存并退出
:w
:只保存不退出
:q
:不保存直接退出
:q!
:强制不保存并直接退出
:set nu
:设置文本行号
(:开头的命令是末行模式)
yy
: 复制一行数据
nyy
:从当前行开始向下复制n行数据
p
: 粘贴一行数据
dd
: 删除一行数据
ndd
:从当前行开始向下删除n行数据
u
:撤销上一步操作
v
:可视化模式,使用该模式可以实现部分选中的效果,在没有鼠标的情况下可以实现选中状态。按v之后使用上下左右键进行选中,选中之后点击y
就可以只复制选中的区域,点击删除就可以删除选中的区域。可视化模式中使用y进行复制即可,注意光标闪烁的位置也是选中的内容。
-
几种修改命令的区别
除了i
命令可以进入插入模式,a、o、A命令
也可以进入插入模式。
区别:i命令是在该位置插入
o命令是在下一行进行插入
A命令是在行末进行插入
-
光标定位
kljh 上右下左
0:光标移到行首
$(shift+4): 光标移到行末
gg:定位到页首
G:定位到页尾
nG:定位到第n行 -
查找替换
/要查找的字符串
:查找指定字符串(相当于ctrl+f),n向下翻,N向上翻
:行范围 s/原内容/新内容/全局
:
:1,5 s/aaa/bbb/g
该命令行的意思就是:将第一行到第五行的所有aaa换成bbb,g表示所有的都匹配替换
- 另存为
:w 另存为的目录
:w /tmp/aaa.txt
表示将文件另存为/tmp/aaa.txt
- 设置环境
:set nu
:设置文本行号
:set list
:显示控制字符
:set nonu
:取消设置行号 - 命令来源
我们所学的cd、rm这些命令都属于shell命令集
,shell命令集属于一个软件,他是一个命令解释器,作用是定义命令、接受命令、执行命令。shell命令有许多版本:ashell、bshell、bash
。
但是vim不是shell命令集的命令,它属于另一个软件的命令。
临时文件
当我饿们编辑的文件没有保存而意外关闭的时候,再次编辑该文件就会报如下内容
vim 1.txt
这是因为我们没有保存而退出的时候系统会自动为我们生成一个.1.txt.swap
文件作为备份,存储修改未保存的内容,是一个隐藏文件。
- 可以直接删除该文件(rm -rf .1.txt.swap)
- 也可以接着上次修改未保存的内容进行操作,根据提示信息输入R,就可以接着上次的内容进行编辑。但是这个操作并不会删除.1.txt.swap文件,删除之后记得手动删除.1.txt.swap文件
相对路径
.
代表当前目录,不写点什么也不写也表示当前路径
..
代表上一级目录
用户管理
用户/组的基本概念
1. 用户的作用
- 常看当前登录的用户信息
- 查看文件的所有者
- 查看运行进程的username
2. 用户/组信息存储的文件
用户基本信息文件
/etc/passwd 该文件是用户的配置文件,包含各个用户的详细信息。
每一条数据表示一个用户的信息,该文件包含7列(以:
分隔),每一列表示不同的意义:
用户名:x:uid:gid:描述:HOME:shell
– 用户名:登录系统的名字,不能重名
– x:密码占位符,具体的内容不在这里
– uid:用户的身份证号码。超管是0,系统用户是1-499,普通用户是1000+
操作系统也有一个自己的名字一般是STSTEM,分配的uid是500以内的。即机器人给自己授权的都是500以内的,给人授权的才是普通用户1000+
500-999为系统预留使用
– gid:Group的ID,组号
– 描述:账号的补充信息,如经理
– home:家目录,登录系统时的目录
(超管:/root ; 普通用户:/home/用户名)
– shell:登录的shell,命令解释器。/bin/bash 表示使用bash壳,如果不想要该用户登录系统,直接修改成 /bin/nologin
eg:
root : x : 0 : 0 : root : /root : /bin/bash
用户密码信息文件
/etc/shadow 该文件是各个用户的密码信息文件,但是该文件是加密文件。
(注意每次加密出的结果都是不一样的)
root:$6$KXU6fMAhJT/oSQQL$hX9Ay50DUbotBJ.lRieLotPKNr1AxaxO5zy6kggRrHxjM26ckdCMx2iyH2eTLGnt9UWjAqcPnVj3c5oDigNSl/::0:99999:7:::
加密就是将明文加密成密文,即使数据被截获,攻击者也无法提取有效信息。
eg: 明文:320 , 密码333, 加密后的密文就是 853
当然除了明文和密码之外还有结合加密算法才能获取密文,上述的例子就是简单的加法运算,实际上有序度已经比较成熟的加密算法:MD5、DES、3DES、AES、DF散列对数(私钥、公钥)
shadow文件的每一条数据是由9列组成
用户名:密码:最后一次修改时间:最小时间间隔:最大时间间隔:警告时间:不活动时间:保留项
– 用户名:登录系统的名字,不能重名
– 密码:密码是加密后的密码
密码包括两部分密码前缀和密码值
密码前缀:
星号代表帐号被锁定,不能使用;
双叹号表示这个密码已经过期了。
$6$开头的,表明是用SHA-512加密的;
$1$表明是用MD5加密的
$2$是用Blowfish加密的
$5$是用SHA-256加密的
– 最后一次修改时间:
表示的是从某个时刻起,到用户最后一次修改口令时的天数
。时间起点对不同的系统可能不—样。例如在SCOLinux中,这个时间起点是1970年1月1日。
– 最小时间间隔:后一次修改密码到前一次修改密码的最小时间间距,如果为0代表修改密码后当天可以修改,如果为5代表修改密码后5天后才可以再次修改。
– 最大时间间隔:密码可以保持有效的最大天数,超过该时间必须重新设置密码。——也叫令牌,如果是99999表示永久有效
– 警告时间:表示的是从系统开始警告用户到用户密码正式失效之间的天数。
– 不活动时间:表示的是用户没有登录活动但账号仍能保持有效的最大天数
,一旦用户登绿系统重新计时。超过该天数系统自动禁用该用户。
– 失效时间:表示的是该账户的有效期,如果为30代表该账户30天后就不能用了,不管期间有没有登陆过该账户。
– 保留项:目前还没有定义
组信息文件
/etc/group 该文件是组信息文件
group 文件的每一条数据是由4列组成
组名:组密码:组ID:组成员
– 组名:组的名字
– 组密码:一般不配组密码,用x进行占位
– 组ID:组的ID
– 组成员:改组包含哪些成员
eg:
root:x:0:
bin:x:1:
daemon:x:2:
linux在创建用户的时候会同时创建一个同名组。
用户/组管理
用户管理
-
创建用户
useradd 用户名
创建一个用户即创建一个账号,可以通过该账号登录系统
useradd 用户名 -u 用户id
可以指定创建的用户的id
useradd 用户名 -d 目录
可以指定创建的用户的家目录
useradd 用户名 -g 组id
可以指定创建的用户的基本组id
useradd 用户名 -G 组id
可以指定创建的用户的附加组id -
查看用户是否存在
id 用户名
如果用户存在:
uid是用户的id
gid是组的id
组是该用户所属的所有组,包括基本组和附加组。
用户BBB的基本组是BBB,附加组是CCC -
修改用户密码
passwd 用户名
如果passwd 后面不加用户名代表修改当前用户自己的密码。
同时,只有超级管理员才可以修改所有用户的密码,普通用户只能需改自己的密码、
修改好密码之后,该用户就创建成功了,可以通过该用户登录系统。
创建完用户之后系统胡自动创建一个/var/spool/mail/user01
文件用来存储用户的邮件信息。 -
删除用户
userdel -r 用户名
-r 代表把家目录一起删除 -
查看当前登录的用户
whoami
[root@localhost mail]# whoami
root
- 修改用户属性
usermod -s shell命令 用户名
表示使用shell命令修改用户的权限
eg:
禁止user01登录系统
usermod -s /sbin/nologin user01
usermod 用户名 -g 组id/组名
可以修改用户的基本组
usermod 用户名 -G 组id/组名
可以为用户添加附加组
- 组操作
usermod 用户名 -g 组id/组名
可以修改用户的基本组
usermod 用户名 -G 组id/组名
可以为用户添加附加组
gpasswd -d 用户名 组id/组名
可以为用户删除附加组,但是用户必须有一个组,基本组有且只有一个
用户组管理
用户和组和文件权限的关系:
不同的组拥有不同的文件权限,不同的用户分属不同的组从而获取不同的权限。
- 添加用户组
groupadd 组名
创建完成之后可以在/etc/group中查看是否创建成功。
每列的信息含义:
组名:组密码:组ID:组成员
groupadd 组名 -g 组id
创建组并设置组id
-
查看用户组是否存在
grep 组名 /etc/group
-
删除组
groupdel 组名
-
修改组
groupmod -g 修改后的id 需要修改的组id/组名
:可以吧组的id进行修改
组的分类
对于用户而言
,组可以分为基本组和附加组
。
- 基本组:随用户创建而创建,组名同用户名的组,一般用
g
表示。基本组有且只有一个(一个用户必须有一个基本组)。
不同的用户的基本组可以是一样的。
etc/passwd中用户对应的组就是基本组 - 附加组:用户加入的除基本组外的组,一般用
G
表示。附加组可以有多个。
基本组,和附加组的区分是对用户而言的,如果一个组里面没有用户也就无所谓基本组和附加组了。
hr组对user02用户来说什么组也不是,因为user02不是hr组的成员。
提权
永久提权
根据用户提升权限
:普通用户需要执行特殊指令时,没有特权,此时需要使用su
切换到超管身份进行提权,提权后获取到的是目标用户的全部权限
。
su - 目标权限用户
或
su 目标权限用户
eg:执行su - root
,之后输入root的密码,就可以提升为管理员权限。
此时执行exit命令就可以退出超管权限,回到普通用户身份。
exit
只要不输入exit
命令,就可以一直使用该身份权限,所以说是永久提权。
临时提权
根据命令提升权限
:
普通用户需要执行特殊指令时,没有特权,此时需要使用su
切换到超管身份进行提权,提权后获取到的是目标用户的部分权限
。需要使用sudo命令进行临时提权
sudo的配置文件:/etc/sudoers
配置文件中有如下内容:
@wheel ALL=(ALL) ALL
表示谁( @wheel )在什么机器上(ALL=(ALL))有什么权限(ALL),该句表示wheel组中的所有用户拥有所有权限。
提权步骤:
- 首先需要将用户放在有对应权限的组中
如在root账号中
useradd user1 -G wheel
表示创建user1用户并且放到wheel组中。
- 执行sudo命令
当我们使用创建好的user1用户登录,执行一些命令提示权限不够,这个时候我们需要输入sudo 命令
进行临时提权,此时需要输入user1的密码进行身份验证,验证成功之后就可以执行命令。但是只对当前命令有效,每次临时提全都要输入sudo命令。
补充
IDC: 互联网数据控制中心
IDC中的服务器都是双电,一个是市电(城市供电系统),另一个是UPS(不间断供电系统),一旦市电停电,UPS就为服务器供电,同时用油机发电机为UPS供电。