文件权限
权限管理:
owner(属主),group(属组),other(其他)
权限:read(4),write(2),execute(1)
文件:
r:可以使用查看类命令查看文件内容
w:可以编辑文件内容
x:文件可以发起一个进程,创建文件时都没有此权限
目录:
r:可使用查看类命令查看此目录内的文件名,如果仅有读权限则无法切换进此目录
w:可以创建、删除文件,建立在w权限基础之上
x:可以切换进此目录
若目录权限为 -wx
则可以切换进此目录创建、删除文件,但查看不了目录内文件名
[zyb@ZYB ~]$ ll -d test_dir1/
drwxrwxr-x. 2 zyb zyb 45 Apr 2 15:25 test_dir1/
[zyb@ZYB ~]$ ll test_dir1/
total 0
-rw-rw-r--. 1 zyb zyb 0 Apr 2 15:25 haha1
-rw-rw-r--. 1 zyb zyb 0 Apr 2 15:25 haha2
[zyb@ZYB ~]$ chmod u-r test_dir1/
[zyb@ZYB ~]$ ll test_dir1/
ls: cannot open directory test_dir1/: Permission denied
[zyb@ZYB ~]$ chmod u+r-x test_dir1/
[zyb@ZYB ~]$ ll -d test_dir1/
drw-rwxr-x. 2 zyb zyb 45 Apr 2 15:25 test_dir1/
[zyb@ZYB ~]$ ll test_dir1/
ls: cannot access test_dir1/haha1: Permission denied
ls: cannot access test_dir1/haha2: Permission denied
total 0
-????????? ? ? ? ? ? haha1
-????????? ? ? ? ? ? haha2
文件的权限实际上是文件的元数据信息,也叫属性信息,这些保存在inode中,每个文件都有一个缩影节点在元数据区域里,而每一个缩影节点都有一个缩影节点号,缩影节点号是缩影节点的属性,缩影节当中存储了每个节点的时间戳、权限、属主、属组、大小以及所指向的磁盘块等信息,所以用户的权限保存在文件属性中的inode中,并不是保存在文件的自身当中,而是保持在文件的属性数据当中,用stat命令查看
权限应用模型:
进程的属主,是否与文件的属主相同;如果相同,进程则以文件属主的权限来访问文件;否则,进程的属主所属的组,是否其中之一与文件的属组相同;如果相同,进程则以文件属组的权限来访问文件;否则,进程则以文件的其它用户的权限来访问文件
文件权限类命令:chmod,chown,chgrp
默认情况下不改变目录内文件权限,所有符号链接权限为777,所有对符号链接的权限操作都转换到源文件
常用格式: chmod [option] OCTAL-MODE file ...
-R
递归改变目录内文件的权限
=
操作指定账户类型权限
+/-
增加指定账户类型权限
--reference=/path/to/somefile
根据指定文件修改权限
-v
显示修改过程
修改属主、属组
chown [options] UserName[{:|.}GroupName] FILE...
chown [options] UserName:GroupName FILE...
chown [options] UserName.GroupName FILE...
chown [options] :GroupName FILE... 只修改属组
chgrp [options] UserName[{:|.}GroupName] FILE...
umask
创建文件:666-umask
文件默认决不允许出现执行权限:666-023=644(默认+1)
创建目录:777-umask
root:022
如果用户名和基本组名一致:002,否则为022
特殊类权限:suid、sgid、sbit
权值:suid 4 sgid 2 sticky 1
suid:当一个文件具有此权限时,其他进程对此文件执行操作时是以文件的属主来运行此文件
chmod -u+s File_Name
orchmod 4××× File_Name
属主权限位的变化:x
-->s
或-
-->S
sgid:当一个目录具有此权限时,其他用户进入此目录后所创建的文件/目录的属组都为此目录的属组,并且能编辑/删除其他属于此属组的文件/目录
chmod -g+s Dir_Name
orchmod 2××× Dir_Name
属组权限位的变化:x
-->s
或-
-->S
sbit:当一个公共目录具有此权限时,其他用户可编辑同属组的文件/目录,但不能删除文件/目录,可以破坏文件
chmod -o+s Dir_Name
orchmod 1××× Dir_Name
其他用户权限位的变化:x
-->t
或-
-->T
FACL:文件访问控制列表
在非root账号下给其他类型账号添加文件权限,CentOS7貌似是默认安装软件,7以下版本需额外安装
命令:
getfacl /path/to/file
获取facl权限,若具有facl权限表示在最后一位有+
setfacl -[R]m u:User_Name:perms
添加额外用户权限,R选项使文件夹内部文件具有facl权限
setfacl -[R]m g:Group_Name:perms
添加额外用户组,R选项使文件夹内部文件具有facl权限
setfacl -[R]m m:perms
设置mask,添加用户/组的实际权限是perms与mask相与后的值,R选项使文件夹内部文件具有facl权限
setfacl -m d:u:User_Name:perms
要继承的权限,此后创建的文件的facl权限为default的值
[root@ZYB tmp]# getfacl test_dir2/
# file: test_dir2/
# owner: zyb
# group: zyb
user::rwx
user:test_user1:rwx
group::r--
mask::rwx
other::r-x
default:user::rwx
default:user:test_user2:rwx
default:group::r--
default:mask::rwx
default:other::r-x
[test_user1@ZYB test_dir2]$ touch haha
[test_user1@ZYB test_dir2]$ getfacl haha
# file: haha
# owner: test_user1
# group: test_user1
user::rw-
user:test_user2:rwx #effective:rw-
group::r--
mask::rw-
other::r--
setfacl -x u:User_Name
取消额外用户权限
setfacl -x g:Group_Name
取消额外用户组
setfacl -x m
取消mask