文件权限

权限管理:


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_Nameorchmod 4××× File_Name
  属主权限位的变化:x-->s--->S
sgid:当一个目录具有此权限时,其他用户进入此目录后所创建的文件/目录的属组都为此目录的属组,并且能编辑/删除其他属于此属组的文件/目录
  chmod -g+s Dir_Nameorchmod 2××× Dir_Name
  属组权限位的变化:x-->s--->S
sbit:当一个公共目录具有此权限时,其他用户可编辑同属组的文件/目录,但不能删除文件/目录,可以破坏文件
  chmod -o+s Dir_Nameorchmod 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

posted @ 2018-04-02 16:02  张飘扬  阅读(179)  评论(0编辑  收藏  举报