【1】各种参数
1】 u 代表用户(user) 表示文件或目录的所有者
g 代表同组(group)用户 即和所有者有相同组id的所有用户
o 代表其他(other)用户
a 代表所有用户 使系统默认值
2】 + 添加某项权限
- 取消某项权限
= 赋予某项权限并取消其他所有权限(如果有的话)
3】 r 4 可读
w 2 可写
x 1 可执行
- 0 空许可
4】 文件类型
- 一般文件
l 连接文件
d 目录文件
b 块设备文件
c 字符型设备文件 (/dev 目录下)
s 网络类型文件 (/tmp目录下存在)
p 管道文件
5】 特殊权限位
suid 设置在二进制可执行程序上,对目录和文本无效 4
不管谁来执行程序,linux都以程序拥有者的身份进入权限获取流程中从而决定存取权限
在user位的x显示为S和s,s代表包含x权限,S代表不包含x权限
sgid 可作用于二进制文件又可作用于目录 2
作用于二进制文件上和suid类似
作用于目录上:默认情况下用户建立文件时,文件的所属组是用户的主组,若设置了sgid 在目录下建立文件,则文件的所属组是继承目录的属组,且建立的权限也继承g+s权限
在group位的x显示为S或s,s代表包含了x权限,S代表未包含x权限 即未生效
sticky 粘滞位 1
只作用于目录
任何人都可以在一个目录下建立文件,却只有root和建立者本人才可以删除文件
在other位的x显示为T或t,t代表包含x权限,T代表未包含x权限
【2】权限设置
对普通用户而言,其umask值为002,即其建立起来的普通文件默认权限为664,目录权限为775。
超级用户的umask值为022,即建立普通文件默认权限为644,目录权限为755。
1】chmod改变当前权限
chmod u+x a.sh 为a.sh的拥有者加执行权限
chmod 777 a.sh 为a.sh增加完全权限 (-rwxrwxrwx)
chmod 4744 a.sh 改变a.sh的权限为 ( -rwsr--r--+ )
chmod -R g+w /tmp/work 为/tmp/work目录及以下文件的组用户增加写权限
chmod a=rw a.sh 清除原先权限,变为 所有用户可读写 (-rw-rw-rw)
2】chown 改变文件所有者
chown user1 file1 将file1修改为用户user1所有
chown -R user1 dir1 将目录dir1及其子目录中所有文件都改为用户user1所有
3】chgrp 改变文件的用户组
chgrp vivi file1 将文件file1的工作组修改为vivi组所有
chgrp -R baidu dir1 chown -R user1 dir1 将目录dir1及其子目录中所有文件都改为用户user1所有
【3】 访问控制列表(ACL,Access Control List的缩写)
适应更复杂的文件系统权限控制要求,列如,目录data的权限为:drwxr-x---,所有者与所属组均为root,在不改变所有者和所属组的前提下,要求用户user1 对该目录有完全访问权限(rwx),但又不能让其他有完全权限(rwx)。linux开发了一套新的文件系统权限管理方法。 ACL必须要有文件系统的支持才行。主要包括ReiserFS,EXT2/EXT3/ext4,JFS,XFS等文件系统。
1】查看是否支持ACL
dumpe2fs /dev/sda1 | grep acl
显示 : dumpe2fs 1.41.12(17-may-2010)+'-
Default mount options: user_xattr acl
若默认挂载项没有acl, 可以用
mount -o remount,acl /dev/sda1
来重新挂载。
2】查看acl权限
getfacl /root/dir1 获取/root/dir1的访问控制列表
3】设置acl权限
setfacl -m o:rwx install.log 为install.log的other用户设置完全权限 和通过chmod设置的效果是一样的。
setfacl -m u:user1:rwx /install.log 为user1用户设置install.log 的完全权限
setfacl -x u:user1 /install.log 清除user1用户的完全权限
setfacl -x m:: /install.log 把mask权限复位
setfacl -x u:user1:rwx /install 会报错 即 setfacl -x 不能单独删除某个权限。
setfacl -b /install.log 一次性把所有ACL权限清空 ,还原成文件原来权限。 mask值不用复位
4】 acl的mask值的设置
mask只对特定用户和组的权限有影响,而对owner和other的权限没有任何影响。
例: install.log文件 ( -rwxr-xr-x root root ....)
setfacl -m u:user1:rwx /install.log
getfacl /install.log
显示 ...
user::rwx
user:user1:rwx
group::r-x
mask::rwx
other::r--
设置 mask值
setfacl -m m::r /install.log
getfacl /install.log
显示 ...
user::rwx
user:user1:rwx #effective:r-- 说明:user1 只有读权限
group::r-x #effective:r-- 说明:group 组只有读权限
mask::r--
other::r--
setfacl -m d:u:user1:rwx /root/ceshi 预设acl 只对目录 在目录/root/ceshi下新建的目录或文件,user1拥有完全权限。