5.1 查看权限信息
ls -l file #####查看文件属性
ls -ld test/ #####查看目录属性
文件中各个属性字段的含义:
字段 | - | rwxr--r-- | . | 1 | root | root | 0 | Jan 8 05:39 | file | ||
---|---|---|---|---|---|---|---|---|---|---|---|
含义 | 类型 | 文件权限 | SELinux Context | 硬链接数个数 | 文件所属人 | 文件所属组 | 文件大小 | 文件最后一次修改时间 | 文件名 |
目录中各个属性字段的解释:
字段 | d | rwxr-xr-x | . | 2 | root | root | 6 | Jan 8 05:45 | test/ | ||
---|---|---|---|---|---|---|---|---|---|---|---|
含义 | 类型 | 目录权限 | SELinux Context | 目录中子目录个数 | 文件所属人 | 文件所属组 | 文件大小 | 目录内容最后一次修改时间 | 目录名称 |
5.2 文件所属人和所属组
Linux下所有资源、设备均被视作文件来操作(一切皆文件),而文件权限则是决定用户对文件操作的范围,文件对用户身份一般划分下面的为三种:
user | group | other |
文件所属人 | 文件所属组 | 其他 |
更改文件所属人和所属组的方法:
chown 用户名 文件 | 更改文件所属人 |
chgrp 组名称 文件 | 更改文件所属组 |
chown –R 用户名 目录 | 更改目录所属人 |
chgrp –R 组名称 目录 | 更改目录所属组 |
chown 用户名 : 组名称 文件 | 目录 | 更改文件/目录的所属人和所属组 |
实验:
1. 更改用户所属人
使用命令监控文件属性
watch -n 1 ls -l file
使用chown命令更改文件file的所属人为huayu
chown huayu file ####更改file文件所属人为huayu
2. 更改用户所属组
使用chgrp命令更改文件file的所属组为huayu
chgrp huayu file #####更改file文件所属组为huayu
3. 更改文件所属人和所属组
使用命令chown更改file文件所属人和所属组为root
chown root:root file
5.3 文件权限的理解
5.3.1 文件权限的读取
d | rwx | r-x | r-x |
类型 | 文件所属人权限 | 文件所属组权限 | 其他人权限 |
使用命令ls查看test目录属性
ls -ld test/
5.3.2 权限类型
- | r | w | x | |
---|---|---|---|---|
文件 | 权限未开启 | 查看文件内容 | 更改文件内容 | 可以执行文件(程序) |
目录 | 权限未开启 | 查看目录中的文件名称 | 在目录中新建删除文件或目录 | 可以进入目录 |
5.4 设定文件权限
chmod [u|g|o|a][+|-|=][r|w|x] 目标 | 字符方式设定 |
chmod [0-7][0-7][0-7] 目标 | 数字方式设定 |
chmod --reference=模板 目标 | 依照模板复制文件权限 |
5.4.1 字符方式设定文件权限
实验:
使用命令监控文件属性
watch -n 1 ls -l testfile
使用chmod命令通过字符方式对testfile文件所属人添加x(执行)权限
chmod u+x testfile
对所属组和其他用户添加w权限
chmod go+w testfile
对所有用户删去r权限
chmod ugo-r testfile
5.4.2 数字方式设定文件权限
权限 | 二进制 | 八进制 |
---|---|---|
--- | 000 | 0 |
--x | 001 | 1 |
-w- | 010 | 2 |
-wx | 011 | 3 |
r-- | 100 | 4 |
r-x | 101 | 5 |
rw- | 110 | 6 |
rwx | 111 | 7 |
实验:
监控文件file1的属性
watch -n 1 ls -l file1
使用chmod命令通过数字方式更改文件file1的权限
chmod 777 file1 ###为所有用户添加所有权限
chmod 775 file1 ####所属人和所属组拥有所有权限,其他用户只有读和执行权限
5.4.3 通过模板复制文件权限
实验:
使用chmod命令通过--reference参数复制文件file的权限给文件tom
ls -l file;ls -l test/tom ###查看file和tom的权限
chmod --reference=file test/tom ####以file的权限为模板复制给文件tom
ls -l file;ls -l test/tom ####再查看执行操作后的权限
5.5 系统预留权限阈值
5.5.1 预留权限阈值的意义
- 资源存在意义在于共享,权限开放越大,共享效果越明显,但是安全性越差
- 对于系统安全而言,开放权利越小,系统越安全
- 在系统中开放应开放的权利,保留不安全的权利以确保系统功能性及安全性
5.5.2 权限预留阀值设定
可以通过umask命令来查看或设定权限阈值
umask ###查看预留权限阈值
umask 077 ###设定预留权限阈值为077
上面的操作实在shell中通过umask命令直接修改预留权限阈值,只是临时的修改。永久修改需要在shell配置文件 /etc/bashrc和系统环境配置文件 /etc/profile中修改
vim /etc/bashrc
图中75行的umask为普通用户的系统预留权限阈值,77行为root的系统预留权限阈值。
5.6 特殊权限
5.6.1 SUID
- 只针对于二进制可执行文件 , 使用拥有SUID权限的文件发其中记录的程序时以文件拥有者的身份去执行
实验:
在这里以cat为例,先查看cat文件的属性
ls -l /usr/bin/cat
可以看出cat所属人为root用户
创建一个文件,设定其权限为其他用户无任何权限
[root@localhost Desktop]# touch /mnt/file
[root@localhost Desktop]# chmod 700 /mnt/file
[root@localhost Desktop]# ls -l /mnt/file
-rwx------. 1 root root 0 Jan 8 08:11 /mnt/file
切换到huayu直接使用cat查看文件内容
显示请求被拒绝,这时候我们可以通过suid特殊权限解决,开启cat的suid权限,当普通用户使用cat时身份会变成文件所属人也就是root,而root拥有权限查看file文件
[root@localhost Desktop]# chmod u+s /usr/bin/cat
[root@localhost Desktop]# ls -l /usr/bin/cat
-rwsr-xr-x. 1 root root 51856 Jan 11 2019 /usr/bin/cat
文件所属人最后一位x变为s说明开启了suid权限,这时候使用切换到hauyu再使用cat命令查看文件file内容
最后关闭cat文件的suid特殊权限
[root@localhost Desktop]# chmod u-s /usr/bin/cat
[root@localhost Desktop]# ls -l /usr/bin/cat
-rwxr-xr-x. 1 root root 51856 Jan 11 2019 /usr/bin/cat
5.6.2 SGID
- 针对二进制可执行文件 : 该命令发起的程序是以该命令所有组的身份去执行
- 针对目录 : 目录新建文件的所属组与该目录的所有组保持一致
实验:
1.针对文件:
监控cat进程
watch -n 1 'ps ax -o user,group,comm|grep cat'
调用cat,查看进程
可以看到cat进程所属组为root,所属人为root更改cat所属组
[root@localhost Desktop]# chgrp huayu /usr/bin/cat
[root@localhost Desktop]# ls -l /usr/bin/cat
-rwxr-xr-x. 1 root huayu 51856 Jan 11 2019 /usr/bin/cat
开启cat文件的sgid权限
[root@localhost Desktop]# chmod g+s /usr/bin/cat
[root@localhost Desktop]# ls -l /usr/bin/cat
-rwxr-sr-x. 1 root huayu 51856 Jan 11 2019 /usr/bin/cat
执行cat,查看cat进程
可以看到cat进程所属组变为huayu
2.针对目录:
监控目录test,并在目录te中新建文件file
watch -n 1 ls -lR /mnt/test/
切换普通用户huayu,新建文件file1
可以看到新建文件的所属人和所属组取决于建立文件的用户以及其主组。
目录te开启sgid特殊权限
切换到huayu新建文件file2
可以看到新建的文件file2所属组为父目录所属组
5.6.3 STICKYID
- 表示当目录上有 STICKYID 的权限时 , 所有用户在该目录下均可创 建文件 , 但只有文件拥有者和 root 用户可以删除该目录下的文件
实验:
root用户在dir目录中新建file1,切换到huayu用户新建file2
[root@localhost mnt]# touch dir/file1
[root@localhost mnt]# su - huayu
Last login: Wed Jan 8 09:12:13 PST 2020 on pts/1
[huayu@localhost ~]$ touch /mnt/dir/file2
查看file1,fle2属性
在huayu账户下尝试删除由root建立的file1
结果表明可以删除不属于自己的文件。
为父目录dir添加STICKYID权限
chmod o+t /mnt/dir/
使用root账户新建文件file3,切换到账户huayu尝试删除
[root@localhost mnt]# chmod o+t /mnt/dir/
[root@localhost mnt]# touch dir/file3
[root@localhost mnt]# su - huayu
Last login: Wed Jan 8 09:12:57 PST 2020 on pts/1
[huayu@localhost ~]$ rm -rf /mnt/dir/file3
删除失败,提示操作不被允许
5.7 ACL权限列表
5.7.1 facl概述及注意事项
传统的权限仅有三种身份 (user,group,other) 搭配三种权限 (r,w,x), 并没有办法单纯的针对某一个使用者或某一个群组来设置特定的权限需求 , 此时就得要使用ACL( 文件访问控制列表 ,Access Control List) 这个机制
5.7.2 facl相关命令
getfacl | 查看权限列表 |
setfacl -m | 设定权限 |
setfacl -x | 删除指定用户 |
setfacl -b | 关闭列表功能 |
实验:
监控/mnt/dir目录的权限列表
watch -n 1 getfacl /mnt/dir/
使用setfacl命令为用户huayu对/mnt/dir目录设定权限rw-
setfacl -m u:huayu:rw- dir/
使用setfacl删除为用户huayu设定的权限
setfacl -x u:huayu dir/
我们可以看到为用户huayu设定的权限被移除了,虽然没有特殊acl权限条目,但acl列表并没有关闭(权限属性后面的.还是+的状态)
我们可以通过setfacl -b命令关闭acl列表