小白课堂Go go on! 今天和大家分享的是文件权限管理,对于刚刚开始学习linux的小白来说,这部分内容很容易把自己搞迷糊,文件权限和目录权限一定要搞清楚。 权限是什么呢,首先要明确linux一切皆文件(文件、目录、命令...都是文件,我们执行一个命令实际就是执行一个有操作权限(x)的文件),权限就是用户对于文件的操作权限,简单说就是你对一个文件有什么权力,你能对它做什么。 结合图片学习文件权限的管理,rwx权限对于文件和目录的关系和区别。x权限对文件慎用,w对于目录慎用,思考原因。

基本权限 UGO

文件权限设置: 可以赋于某个用户或组 能够以何种方式 访问某个文件 权限对象: 属主: u 属组: g 其他人: o

基本权限类型: 读:r 4 写:w 2 执行: x 1

[root@youryg ~]# ll file1.txt -rw-r--r--. 1 root root 56 Dec 16 11:11 file1.txt rw- r-- r-- root root 属主权限 属组权限 其他人权限 属主 属组

 设置权限
  1. 更改文件的属主、属组 (用户alice属于hr组) =chown: [root@youryg ~]# chown alice.hr file1 //改属主、属组 [root@youryg ~]# chown alice file1 //只改属主 [root@youryg ~]# chown .hr file1 //只改属组

=chgrp: [root@youryg ~]# chgrp it file1 //改文件属组 [root@youryg ~]#chgrp -R it dir1 //改文件属组

  1. 更改权限 =a. 使用符号 对象 赋值符 权限类型 u + r chmod g -w file1 o = x

[root@youryg ~]# chmod u+x file1 //属主增加执行 [root@youryg ~]# chmod a=rwx file1 //所有人等于读写执行 [root@youryg ~]# chmod a=- file1 //所有人没有权限 [root@youryg ~]# chmod ug=rw,o=r file1 //属主属组等于读写,其他人只读 [root@youryg ~]#ll file1 //以长模式方式查看文件权限 -rw-rw-r-- 1 alice it 17 10-25 16:45 file1 //显示的结果

=b. 使用数字 [root@tianyun ~]# chmod 644 file1 //数字对应ugo的权限 [root@tianyun ~]# ll file1 -rw-r--r-- 1 alice it 17 10-25 16:45 file1

高级权限:umask suid sgid sticky(t) facl umask 用户掩码 控制用户创建文件和目录的默认权限 用户 目录777 文件666 755 644

[root@youryg ~]# umask 0022 root账户默认 0002 普通用户默认

先把掩码做取反操作,然后在与原始权限做与运算 或者 按位减

suid 提权 [root@youryg ~]# chmod 4755 命令 [root@youryg ~]# chmod u+s 命令 suid只能给命令添加,当给命令添加了suid之后,后面再有人去执行这个命令的时候 就会拥有命令操作符所有者的权限

sgid 组权限继承 [root@youryg ~]# chmod 2755 目录 [root@youryg ~]# chmod g+s 目录 sgid只能给目录添加,当你给一个目录添加了sgid之后,后面不管谁来这个目录下创 建文件,文件的所属组都会继承目录的所属组

sticky(t权限) 权限控制 [root@youryg ~]# chmod 1777 目录 [root@youryg ~]# chmod o+t 目录 t权限只能给目录添加,当你给一个目录添加了t权限之后,后面所有人在这个目录下不 能删除其他人的文件

-R 递归修改权限

facl权限 扩展ugo权限,可以单独的对某一个用户或者某一组用户设置权限

查看facl [root@youryg ~]# getfacl 文件(目录)名

设置facl [root@youryg ~]# setfacl -m u:tom:r a.txt [root@youryg ~]# setfacl -m u:tom:4 a.txt [root@youryg ~]# setfacl -m g:组名:rwx a.txt

-R 递归修改 必须写到-m的前面,可以写到一起
#setfacl -R -m u:tom:4  目录名称

设置facl的继承权限 只能对目录,对目录本身不生效 [root@youryg ~]# setfacl -m d:u:wing:r dir1

mask:和权限做与运算,最后的结果是有效权限 [root@youryg ~]# setfacl -m m::rw ccc.txt

取消 [root@youryg ~]# setfacl -b ccc.txt [root@youryg ~]# setfacl -x u:wing: ccc.txt