1、文件、目录的权限和归属
权限:r可读4、w可写2、x可执行1、-无权限0
归属:属主、属组(新创建的文件和目录的属主是当前用户,属组是当前用户的基本组)
1)查看文件和目录的权限
ls –l /etc/passwd
drwxr-xr-x 1 root root 12288 05-12 04:03 /etc
第1字符表示文件类型,-普通文件、d目录、l链接文件、b块设备文件、c字符设备文件
第2-4字符表示文件的属主对该文件的权限
第5-7字符表示文件的属组内的用户对该文件的权限
第8-10字符表示其他用户对该文件的权限
注:第二列的含义,如果是文件则表示文件的硬链接数,如果是目录则表示包含的子目录数(默认.和..)
2)设置文件和目录的权限
语法:①chmod [ugoa] [+-=] [rwx] 文件或目录
②chmod nnn 文件或目录 (简便易用)
u 代表属主;g 代表属组;o 代表其他任何用户;a 代表所有用户(省略时也代表所有用户)
+ 表示添加权限;- 表示删除权限;= 表示仅设置对应的权限
r表示可读;w表示可写;x表示可执行;- 表示相应的权限没有被授予
rwx也可以用数字来代替:r 4;w 2;x 1;- 0
-R选项表示递归修改目录中所有子目录和文件的权限
注:①root是超级管理员,所有权限设置对root无效
②也可通过字母方式同时设置多个权限,如chmod u=rw,g=w,o=x install.log
③rwx是文件/目录权限的基本ACL规则
3)设置文件和目录的归属
语法:chown 属主[:属组] 文件或目录
-R选项表示递归修改目录中所有子目录和文件的归属
注:①只有root用户才能使用chown命令
②同时修改属主、属组时中间用冒号分隔,即使只设置属组,也要保留冒号
③chown可同时修改属主和属组,而chgrp只能修改属组,所以一般都使用chown
④默认只有root能修改属主和属组,其他任何用户都没权限,除非执行chmod u+s /bin/chown
⑤即使文件的所有者对文件没有写权限,也可以写入文件,保存时使用!强制保存即可
注:①用户宿主目录的所有者是其对应的用户,权限是700,即其他用户没有任何权限
②当为目录设置某用户具有可执行权限,但没有读取权限时,用户必须直接访问目录下的子目录或文件才行,用户不能使用ls命令浏览目录中的内容
2、umask权限掩码
新建目录默认权限:root用户新建目录的权限是755,普通用户新建目录的权限是775
新建文件默认权限:root用户新建文件的权限是644,普通用户新建文件的权限是664
1)概念
权限掩码用于设置用户新创建的文件或目录的默认权限
权限掩码由三位数字组成,用默认满权限减去权限掩码,就是创建文件或目录时的默认权限
注:默认满权限,即Linux内核级别新建目录或文件时的默认权限,分别为777(目录)和666(文件)
2)设置
语法:umask 权限掩码
#umask --直接执行umask可查看当前用户权限掩码
#umask 0077 --设置root的umask为0077,使创建的文件或目录只对root有权限(700、600)
注:①默认root用户的umask值为022,普通用户的umask值为002
②将默认满权限减去权限掩码,得出root新建的目录权限应为755,新建的文件权限为644
③直接使用umask命令修改只是临时生效,重启后失效,可将命令写入~/.bashrc文件中永久生效
④使用umask命令显示权限掩码时为4位,千位的0表示SUID、SGID、Sticky属性
3、附加权限
1)SET位权限(SUID、SGID)
执行文件被设置了SUID、SGID权限后,任何用户在执行时都将获得文件属主、属组相对应的权限
SUID表示对属主用户增加SET位权限;SGID表示对属组内用户增加SET位权限
语法:chmod u+s myfile | chmod g+s myfile
SUID对应数字为4;GUID对应数字为2,其也可通过数字形式表示4775,2775,6775
设置SET位权限后对应位置的x将变为s
例: ls -l /usr/bin/passwd 查看权限
/etc/passwd文件,普通用户虽无法直接修改文件,但可通过passwd命令修改自己的密码
2)粘滞位Sticky
用于对目录设置的附加权限,设置粘滞位后只有文件目录的所有者或root用户可以删除对应文件
语法:chmod u+t myfile | chmod g+t myfile
对应数字为1和0,1表示添加粘滞位;0表示移除粘滞位
设置粘滞位后其他用户的x将变为t
例:ls –ld /tmp 或 ls –ld /var/tmp
注:①SET位权限只对可执行文件有效,为普通文件设置无效,设置后标记字符将变为大写字母“S”
②粘滞位只对目录有效,为普通文件设置无效,设置后标记字符将变为大写字母“T”
4、ACL访问控制列表
1)概述
ACL是Linux文件系统的一种文件访问控制机制,可以设置特定用户或者组对于一个文件的操作权限
setfacl是用来设定文件的ACL
getfacl命令是用来读取文件的ACL
2)开启ACL功能
#setfacl --version //查看setfacl版本
#tune2fs -l /dev/sdb1 //查看文件系统是否支持acl权限控制
#tune2fs -o acl /dev/sdb1 //开启acl功能,永久生效
#mount -o remount,acl /dev/sdb1 //重新挂载,开启acl功能,临时生效
#vi /etc/fstab //使分区永久支持acl功能
/dev/sdb1 /mnt/acltest ext4 defaults,acl 0 0
注:①默认只有在安装系统时建立的分区才支持ACL功能,后建立的分区默认都不支持ACL功能
②开启acl功能,既可以通过tune2fs命令,也可以通过修改/etc/fstab文件
3)设置权限
语法:setfacl 选项 文件|目录
-m修改权限、-x删除指定权限、-b删除全部权限、-d设置默认权限、-k删除默认权限、-R递归操作
(1)配置用户权限
#setfacl -m u:tom:rw a.txt
#setfacl -m u:tom:r,u:jack:rw a.txt
#ls -l
#getfacl a.txt
注:①权限可以使用字母或数字,多条acl规则间以逗号相隔
②当为文件设置acl规则后,使用ls查看时文件权限后会出现+号,表示此文件被设置了acl规则
③当为文件设置acl规则后,使用getfacl来查看其权限,以此为准,不要再使用ls -l查看权限
(2)配置组权限
#setfacl -m g:manager:rw a.txt
(3)配置默认权限DEFAULT ACL
默认权限是指对于一个目录进行Default ACL设置,并且在此目录下建立的文件都将继承此目录的ACL
例:创建目录software,并希望在此目录下建立的文件都可以被tom读写
#mkdir software
# setfacl -d -m u:tom:rw ./software/
或#setfacl -m d:u:tom:rw ./software/ ---此两种方式都可以设置默认ACL属性
#getfacl ./software/ ---查看
#touch ./software/b.txt
#getfacl ./software/b.txt ---验证
注:只能为目录指定default ACL属性,不能针对文件设置
(4)删除acl规则
#setfacl -x g:manager a.txt ----取消某项权限
#setfacl -k a.txt ----删除默认acl规则,如果没有默认规则,则不会提示
#setfacl -b a.txt ----删除所有扩展的acl规则,基本的acl规则被保留
#chacl -B ----彻底删除文件或者目录ACL属性(包括Default ACL),ls –l查看不再显示+号
(5)配置有效权限(Effective permission),可用于限制最大权限
#setfacl -m m:r a.txt
注:①设置有效权限后,以“#effective:”后的权限为准,但最大权限设置并不影响基本的acl规则
②设置有效权限后,通过ls看到的属组权限其实不再是属组的权限,而ACL的最大权限,所以要查看准备的权限应使用getfacl命令
注:①默认文件目录仅包含3个基本的acl规则(属主、属组、其他)
②用cp复制文件时候加上-p选项保留文件的ACL属性,mv命令将会默认地移动文件的ACL属性
③setfacl和chmod设置的权限可以相互覆盖