Linux 基本权限和归属、附加权限、ACL策略管理

一、 环境准备
开启CentOS虚拟机

二、本地Yum仓库构建
[root@localhost ~]# mkdir /nsd30
[root@localhost ~]# mount /dev/cdrom /nsd30
[root@localhost ~]# ls /nsd30
[root@localhost ~]# rm -rf /etc/yum.repos.d/*
[root@localhost ~]# vim /etc/yum.repos.d/nsd.repo
[nsd]
name=centos
baseurl=file:///nsd30
enabled=1
gpgcheck=0
[root@localhost ~]# yum -y install gcc

二、 权限简介
 访问权限
读取:允许查看内容-read 利用r表示
写入:允许修改内容-write 利用w表示
可执行:允许运行和切换-excute 利用x表示
对于文本文件:
r:查看文件内容 cat head tail less grep
w:修改文件内容并且能够保存 vim > >>
x:学习shell与Python时期

 归属关系
– 所有者:拥有此文件/目录的用户-user 利用u表示
– 所属组:拥有此文件/目录的组-group利用g表示
– 其他用户:除所有者、所属组以外的用户-other利用o表示

zhangsan(所有者)     zhangsan组(所属组)          a.txt  

 查看文件或目录,权限与归属关系
执行 ls -l … … 命令查看,输出信息包括7个字段
以-开头:文本文件
以d开头:目录
以l开头:快捷方式
[root@localhost ~]# ls -l /etc/passwd
[root@localhost ~]# ls -l /etc/shadow
[root@localhost ~]# ls -ld /etc/
[root@localhost ~]# ls -ld /root
[root@localhost ~]# ls -ld /home/lisi
[root@localhost ~]# ls -ld /tmp #tmp目录拥有特殊权限

三、 修改权限
 chmod命令
– 格式:chmod [ugoa] [±=][rwx] 文件…

 常用命令选项
– -R:递归修改权限

[root@localhost ~]# mkdir /nsd01
[root@localhost ~]# ls -ld /nsd01
[root@localhost ~]# chmod u-w /nsd01 #所有者去掉w权限
[root@localhost ~]# ls -ld /nsd01

[root@localhost ~]# chmod u+w /nsd01 #所有者加上w权限
[root@localhost ~]# ls -ld /nsd01

[root@localhost ~]# chmod u=w /nsd01 #所有者重新定义权限
[root@localhost ~]# ls -ld /nsd01
[root@localhost ~]# chmod g+w /nsd01 #所属组加上w权限
[root@localhost ~]# ls -ld /nsd01

[root@localhost ~]# chmod u=rwx,g=rx,o=rwx /nsd01
[root@localhost ~]# ls -ld /nsd01

[root@localhost ~]# mkdir -p /opt/aa/bb/cc
[root@localhost ~]# chmod -R o=— /opt/aa
[root@localhost ~]# ls -ld /opt/aa
[root@localhost ~]# ls -ld /opt/aa/bb/
[root@localhost ~]# ls -ld /opt/aa/bb/cc/

四、 判定用户具备的权限
1.首先判断用户对于该数据所处身份
2.查看相应身份的权限位
对于目录:
r:可以查看目录下内容
w:可以新建、删除、改名、目录的内容 ,对目录本身无法修改
x:可以切换到此目录下

案例1:设置基本权限
1)以root身份新建/nsddir1/目录,在此目录下新建readme.txt文件
[root@localhost ~]# mkdir /nsddir1
[root@localhost ~]# echo 123456 > /nsddir1/readme.txt
[root@localhost ~]# cat /nsddir1/readme.txt
2)使用户zhangsan能够修改readme.txt文件内容
[root@localhost ~]# chmod o+w /nsddir1/readme.txt
3)使用户zhangsan不可以修改readme.txt文件内容
[root@localhost ~]# chmod o-w /nsddir1/readme.txt

4)使用户zhangsan能够在此目录下创建/删除子目录
[root@localhost ~]# chmod o+w /nsddir1/
[root@localhost ~]# ls -ld /nsddir1/
5)调整此目录的权限,使任何用户都不能进入,然后测试用户zhangsan是否还能修改readme.txt(测试结果不能,对父目录没有权限)
[root@localhost ~]# chmod a-x /nsddir1/
6)为此目录及其下所有文档设置权限 rwxr-x—
[root@localhost ~]# chmod -R u=rwx,g=rx,o=— /nsddir1/

五、 权限可以用数字方式表示
权限位的8进制数表示
r、w、x分别对应4、2、1,后3组分别求和
分组 User权限 Group权限 Other权限
字符 r w x r - x r - x
数字 4 2 1 4 0 1 4 0 1
求和 7 5 5

[root@localhost ~]# mkdir /nsd04
[root@localhost ~]# ls -ld /nsd04
[root@localhost ~]# chmod 700 /nsd04
[root@localhost ~]# ls -ld /nsd04

[root@localhost ~]# chmod 750 /nsd04
[root@localhost ~]# ls -ld /nsd04

[root@localhost ~]# chmod 755 /nsd04
[root@localhost ~]# ls -ld /nsd04

六、 修改归属关系
 chown命令
chown 属主 文件…
chown 属主:属组 文件…
chown :属组 文件…
常用命令选项
-R:递归修改权限
[root@localhost ~]# mkdir /nsd05
[root@localhost ~]# ls -ld /nsd05
[root@localhost ~]# groupadd tarena #创建tarena组
[root@localhost ~]# groupadd sg #创建sg组

[root@localhost ~]# chown zhangsan:tarena /nsd05
[root@localhost ~]# ls -ld /nsd05

[root@localhost ~]# chown lisi /nsd05 #单独修改所有者
[root@localhost ~]# ls -ld /nsd05
[root@localhost ~]# chown :sg /nsd05 #单独修改所属组
[root@localhost ~]# ls -ld /nsd05

判定用户具备的权限 匹配及停止
1.首先判断用户对于该数据所处身份 所有者>所属组>其他人
2.查看相应身份的权限位

案例2:归属关系练习
1)利用root的身份新建/tarena目录,并进一步完成下列操作
[root@localhost ~]# mkdir /tarena
2)将/tarena属主设为gelin01,属组设为tmooc组
[root@localhost ~]# useradd gelin01
[root@localhost ~]# groupadd tmooc
[root@localhost ~]# chown gelin01:tmooc /tarena
3)使用户gelin01对此目录具有rwx权限,除去所有者与所属组之外的用户对此目录无任何权限
[root@localhost ~]# chmod o=— /tarena
4)使用户gelin02能进入、查看此目录
[root@localhost ~]# useradd gelin02
[root@localhost ~]# gpasswd -a gelin02 tmooc
5)将gelin01加入tmooc组,将tarena目录的权限设为450,测试gelin01用户能否进入此目录
[root@localhost ~]# gpasswd -a gelin01 tmooc
[root@localhost ~]# chmod 450 /tarena

七、 创建数据的默认权限
 新建文件/目录的默认权限
一般文件默认均不给 x 执行权限
其他取决于 umask(权限掩码) 设置
默认情况下,umask值为022。新建目录权限为755,新建文件权限为644

八、 附加权限(特殊权限)
 粘滞位,Sticky Bit 权限
– 占用其他人(Other)的 x 位
– 显示为 t 或 T,取决于其他人是否有 x 权限
– 适用于目录,用来限制用户滥用写入权
– 在设置了粘滞位的文件夹下,即使用户有写入权限,也不能删除或改名其他用户文档
[root@localhost ~]# mkdir /home/public
[root@localhost ~]# chmod 777 /home/public
[root@localhost ~]# ls -ld /home/public
[root@localhost ~]# chmod o+t /home/public
[root@localhost ~]# ls -ld /home/public
drwxrwxrwt. 2 root root 6 8月 8 15:42 /home/public

 SGID权限
– 占用属组(Group)的 x 位
– 显示为 s 或 S,取决于属组是否有 x 权限
– 对目录有效
– 在一个具有SGID权限的目录下,新建的文档会自动继承此目录的属组身份

[root@localhost ~]# mkdir /nsd11
[root@localhost ~]# ls -ld /nsd11
[root@localhost ~]# chown :tmooc /nsd11 #修改所属组
[root@localhost ~]# ls -ld /nsd11

[root@localhost ~]# mkdir /nsd11/test01
[root@localhost ~]# ls -ld /nsd11/test01

[root@localhost ~]# chmod g+s /nsd11 #赋予SGID权限
[root@localhost ~]# ls -ld /nsd11/
[root@localhost ~]# mkdir /nsd11/test02
[root@localhost ~]# ls -ld /nsd11/test02 #查看继承效果

九、 ACL策略管理
 文档归属的局限性
任何人只属于三种角色:属主、属组、其他人
无法实现更精细的控制
 acl访问策略
作用:能够对个别用户、个别组设置独立的权限
大多数挂载的EXT3/4、XFS文件系统默认已支持
 setfacl命令
– 格式:setfacl [选项] u:用户名:权限 文件…
setfacl [选项] g:组名:权限 文件…
 常用命令选项
– -m:定义一条ACL策略
– -x:清除指定的ACL策略
– -b:清除所有已设置的ACL策略
– -R:递归设置ACL策略

[root@localhost ~]# mkdir /nsd13
[root@localhost ~]# chmod 770 /nsd13
[root@localhost ~]# ls -ld /nsd13
[root@localhost ~]# su - zhangsan
[zhangsan@localhost ~]$ cd /nsd13
-bash: cd: /nsd13: 权限不够
[zhangsan@localhost ~]$ exit
登出
[root@localhost ~]# setfacl -m u:zhangsan:rx /nsd13
[root@localhost ~]# getfacl /nsd13 #查看ACL策略
[root@localhost ~]# su - zhangsan
[zhangsan@localhost ~]$ cd /nsd13
[zhangsan@localhost nsd13]$ pwd
[zhangsan@localhost nsd13]$ exit
[root@localhost ~]#

设置/etc/shadow文件权限,让lisi用户可以查看其文件内容,您有几种办法?
方法一:利用其它人
chmod o+r /etc/shadow
方法二:利用所属组
chown :lisi /etc/shadow #修改所属组
chmod g+r /etc/shadow
方法三:利用所有者
chown lisi /etc/shadow #修改所有者
chmod u+r /etc/shadow
方法四:利用ACL策略
Setfacl -m u:lisi:r /etc/shadow

 练习命令的选项
[root@localhost ~]# setfacl -m u:zhangsan:rwx /nsd15
[root@localhost ~]# setfacl -m u:lisi:rx /nsd15
[root@localhost ~]# setfacl -m u:dc:rwx /nsd15
[root@localhost ~]# setfacl -m u:gelin01:rx /nsd15
[root@localhost ~]# getfacl /nsd15

]# setfacl -x u:zhangsan /nsd15 #删除指定用户的ACL策略
]# getfacl /nsd15

]# setfacl -b /nsd15 #清空所有的ACL策略
]# getfacl /nsd15

-R:递归设置ACL策略
[root@localhost ~]# setfacl -Rm u:dc:rwx /opt/aa
[root@localhost ~]# getfacl /opt/aa
[root@localhost ~]# getfacl /opt/aa/bb
[root@localhost ~]# getfacl /opt/aa/bb/cc

 利用ACL策略拉黑某个用户
[root@localhost ~]# mkdir /nsd16
[root@localhost ~]# chmod 777 /nsd16
[root@localhost ~]# chmod o+t /nsd16
[root@localhost ~]# ls -ld /nsd16
[root@localhost ~]# setfacl -m u:lisi:— /nsd16

十、 Set UID附加权限(了解内容)
SUID权限
– 占用属主(User)的 x 位
– 显示为 s 或 S,取决于属主是否有 x 权限
– 仅对可执行的程序有意义
– 当其他用户执行带SUID标记的程序时,具有此程序属主的身份和相应权限

[root@localhost ~]# ls /usr/bin/mkdir
[root@localhost ~]# /usr/bin/mkdir /opt/lele
[root@localhost ~]# ls /opt/
[root@localhost ~]# cp /usr/bin/mkdir /usr/bin/hahadir
[root@localhost ~]# ls /usr/bin/hahadir
[root@localhost ~]# /usr/bin/hahadir /opt/haxi
[root@localhost ~]# ls /opt/
[root@localhost ~]# chmod u+s /usr/bin/hahadir
[root@localhost ~]# ls -l /usr/bin/hahadir
[root@localhost ~]# su - dc
[dc@localhost ~]$ /usr/bin/mkdir dc01
[dc@localhost ~]$ ls -l
[dc@localhost ~]$ /usr/bin/hahadir dc02
[dc@localhost ~]$ ls -l
[dc@localhost ~]$ exit

猜你喜欢

转载自blog.csdn.net/wangboyujiayou/article/details/109384321