linux权限管理详解

文章目录

    • 普通权限
    • 权限修改相关命令
    • 特殊标识位
      • 1.SUID
      • 2. SGID
      • 3. SBIT
      • 4. 特殊权限变更命令
    • 权限掩码(umask)
      • 文件目录初始权限
      • 计算默认权限
    • ACL
    • 文件特殊属性

普通权限

-rw-r–r--. 1 root root 0 Feb 14 23:33 test

  • 第1位标识文件类型:

    -:普通文件
    b:块设备
    c:字符设备
    d:目录
    l:符号链接
    s:套接字文件
    p:命名管道

  • 2~4位表示拥有者的权限

  • 5-8位表示所属组的权限

  • 9~11位表示其他人的权限

  • 权限的定义:
    r:可读,对文件来说即可以读取文件的具体内容(cat,more,less,vim),对目录而已即为可读取目录列表(ls)
    w:可写,对文件即可以修改文件内容(vi),对目录即可以修改目录内容(创建,重命名,删除文件)
    x:可执行,对文件即能执行文件内容(这里的文件一般是二进制文件,shell脚本,其他任何需要执行的文件),对目录即为可以进入目录(cd)

权限修改相关命令

 - chown(改变文件所有者,也可以实现chgrp的功能)
 	* chown [-R] username filename/dirname:只修改所有者,-R是递归更改目录下的文件
	* chown [-R] username:groupname filename/dirname:同时修改所有者和用户组
	* chown [-R] .groupname filename/dirname:只修改用户组
 - chgrp(改变文件所属用户组)
	* chgrp [-R] groupname filename/dirname
 - chmod(改变文件的权限)
 	* 符号表达 chmod [-R]  [{ugoa}{+-=}{rwx}]  filename/dirname
 	备注:  u:所有者 g:所属组 o:其他人  a:所有人
	     +:为用户增加权限 -:为用户减少权限  =:为用户赋予权限
	     r:读权限  w:写权限  x:执行权限 
	 例子: 将一个文件的权限设置为-rwxr-xr-x
	     chmod u=rwx,g=rx,o=rx /tmp/test
 	* 数字表达 chmod [-R]  [mode=421]   filename/dirname     ←(这种方法用的比较多)
 	备注:  r:4  w:2	  x:1
 	例子: 将一个文件的权限设置为-rwxr-xr-x
 	    chmod 755 /tmp/test

特殊标识位

1.SUID

在这里插入图片描述当s出现在文件的所有者标记上,代替了x权限,就称为Set UID,简称为SUID,该权限针对命令和二进制程序,当普通用户执行某个(passwd)命令的时候,可以拥有这个命令对应用户的权限,
即让普通用户可以以root用户的角色执行程序或命令。

2. SGID

当s出现在用户所有组标记上,代替了x权限,就称为Set GID,简称为SGID
该权限具有以下功能:

SGID应用在文件上:

  • SGID对二进制程序有用
  • 程序执行者对于该程序来说,需具备x的权限
  • 执行者在执行过程中将会获得该程序用户组的支持

SGID应用在目录上:

  • 用户若对于此目录具有r和x的权限时,该用户能够进入此目录
  • 用户在此目录下的有效用户组将会变成该目录的用户组
  • 若用户在此目录下具有w的权限(可以新建文件),则用户所创建的新文件的用户组与此目录的用户组相同

3. SBIT

在这里插入图片描述
SBIT,只针对目录有效,当用户在该目录下创建文件或目录时,仅有自己与root才有权利删除该文件

4. 特殊权限变更命令

同样通过chmod命令来修改特殊权限
符号表达:
  chmod a+s filename
  chmod g+s filename/dirname
  chmod o+t dirname
数字表达:
  suid:4 sgid:2 sbit:1
  只要在普通权限的前面加上一位即可
  例如,要设置一个普通权限为755,并且是SUID,就使用命令:chmod 4755 filename即可

权限掩码(umask)

文件目录初始权限

文件:inux系统新建文件默认没有执行权限,其最大权限为rw-rw-rw-(666)
目录:新建目录的最大权限为rwx-rwx-rwx(777)

计算默认权限

文件:666-umask值所对应的权限
目录:777-umask值所对应的权限

可通过umask命令查看当前的umask值,一般情况下,root的umask022,普通用户为002,计算时建议将umask值转化为对应权限去相加减,数字加减后转换在umask值中有奇数的情况可能会产生错误。

ACL

ACL是Access Control List的缩写,主要提供更加细粒度的权限设置,ACL可以针对单一用户,单一文件或目录进行r、w、x的权限设置,对于需要特殊权限的使用状况非常有用,,需要文件系统选项(ACL)支持。

setfacl命令:设置某个目录/文件的ACL规定

用法:setfacl [-bkRd] [{-m | -x}] acl参数 filename

参数:

-m:设置后续的acl参数给文件使用,不可与-x合用

-x:删除后续的acl参数,不可与-m合用

-b:删除所有的acl参数

-k:删除默认的acl参数

-R:递归设置acl,子目录也会被设置acl

-d:设置默认的acl参数,只对目录有效,在该目录新建的数据都会引用该值

举例说明:几个程序员对同一个目录(/tmp/test)具有完全的权限,但是只允许项目经理(manager)进入到该目录里查看(不允许任何的其他人进入该目录,同时项目经理也不能修改任何的东西)。此时就要使用到acl:

setfacl -m u:manager:rx /tmp/test
在这里插入图片描述
设置acl的文件这里会有一个+号

getfacl命令:取得某个文件/目录的ACL设置项目
linux权限管理详解_第1张图片

文件特殊属性

  • chattr +a filename 只允许以追加方式读写文件
  • chattr +c filename 允许这个文件能被内核自动压缩/解压
  • chattr +d filename 在进行文件系统备份时,dump程序将忽略这个文件
  • chattr +i filename 设置成不可变的文件,不能被删除、修改、重命名或者链接
  • chattr +s filename 允许一个文件被安全地删除
  • chattr +S filename 一旦应用程序对这个文件执行了写操作,使系统立刻把修改的结果写到磁盘
  • chattr +u filename 若文件被删除,系统会允许你在以后恢复这个被删除的文件
  • lsattr filename 显示特殊的属性

你可能感兴趣的:(linux权限管理详解)