Liunx 管理权限

1. ACL权限

ACL(access control list)用来设定用户(除所有者,所属组,其他组之外的用户或组)针对文件的读、写、执行权限。

# getfacl 文件名 # 查看ACL权限

# setfacl 选项 文件名 #设定ACL权限

选项

  • -m:设定ACL权限。如果给用户acl权限,则使用“u:用户名:权限” 格式来赋予权限。如果是给组acl权限,则使用“g:组名:权限”;
  • -x: 删除指定的acl权限;
  • -b: 删除所有acl 权限
  • -d:设定默认ACL权限。只对目录生效(操作对象为目录),指目录中新建立的文件拥有此默认权限
  • -k: 删除默认acl权限
  • -R: 递归设定ACL权限。指设定的ACL权限会对目录下的所有子文件生效

 

举例:我们要求 root 是 /acltest 目录的属主,权限是 rwx;tgroup 是此目录的属组,tgroup 组中拥有班级学员 zhangsan 和 lisi,权限是 rwx;其他人的权限是 0。这时,试听学员 st 来了,她的权限是 r-x。

[root@localhost ~]#  mkdir acltest

[root@localhost ~]#  chmod 770 alctest

[root@localhost ~]#  useradd zhangsan

[root@localhost ~]#  useradd lisi

[root@localhost ~]#  groupadd tgroup

[root@localhost ~]#  gpasswd -a zhangsan tgroup #将张三加入troup组

[root@localhost ~]#  gpasswd -a lisi tgroup

[root@localhost ~]# chown root:tgroup acltest #将acltest的所属组改为tgoup

[root@localhost ~]#  ll -d acltest

drwxrwx---. 2 root tgroup 4096 Jan 9 16:17 acltest

[root@localhost ~]#  useradd st

[root@localhost ~]#  setfacl -m u:st:rx acltest # 给用户st 赋acl权限

[root@localhost ~]#  ll -d acltest

drwxrwx---+ 2 root tgroup 4096 Jan 9 16:17 acltest

[root@localhost ~]#  getfacl acltest

# file: acltest/

# owner: root

# group: tgroup

user::rwx

user:st:r-x

group::rwx

mask::rwx

other::---

#给组添加acl权限

[root@localhost ~]# groupadd tgroup2

[root@localhost ~]# setfacl -m g:tgroup2:rx acltest

[root@localhost ~]# getfacl acltest

# file: acltest

# owner: root

# group: tgroup

user::rwx

user:st:r-x

group::rwx

group:tgroup2:r-x

mask::rwx

other::---

#设置默认acl权限

[root@localhost ~]# setfacl -d u:st:rx acltest

[root@localhost ~]# getfacl acltest

# file: acltest

# owner: root

# group: tgroup

user::rwx

user:st:r-x

group::rwx

group:tgroup2:r-x

mask::rwx

other::---

default:user::rwx

default:user:st:r-x

default:group::rwx

default:mask::rwx

default:other::---

#设置递归ACL权限

[root@localhost ~]# setfacl -m u:st:rx -R acltest

#删除指定的acl权限

[root@localhost ~]# setfacl -d u:st acltest

#删除所有acl权限

[root@localhost ~]# setfacl -x acltest

 

2.SetUID、SetGID、Stick BIT 文件特殊权限

SetUID: 文件在拥有SetUID权限后,普通用户在执行该文件过程中,可以获得文件所有者的权限。表现为:文件所有者的x(执行)权限位置出现一个小写s。

[root@localhost ~]#ll /usr/bin/passwd

-rwsr-xr-x 1 root root 25980 2月22 2012/usr/bin/passwd

 

SetGID:执行者在执行程序的时候,组身份升级为改程序文件的所属组。同样SetGID权限只在程序运行过程中有效。

表现为:文件所属组的x(执行)权限位置出现一个小写s。

[root@localhost ~]# ll /usr/bin/locate

-rwx--s--x 1 root slocate 35612 8月24 2010/usr/bin/locate

 

Sticky BIT: 意为粘着位(或粘滞位),也简称为 SBIT。粘着位只对目录有效。普通用户拥有 w 权限时,可以删除此目录下的所有文件,包括其他用户建立的文件。一旦被赋予了粘着位,除了 root 可以删除所有文件,普通用户就算拥有 w 权限,也只能删除自己建立的文件,而不能删除其他用户建立的文件。

表现为:其他组的x(执行)权限位置出现一个t

[root@localhost ~]# ll -d /tmp/

drwxrwxrwt 4 root root 4096 1月20 06:17 /tmp/

 

这几种文件特殊权限的设置:

  • 4 代表 SetUID;
  • 2 代表 SetGID;
  • 1 代表 SBIT;

 

特殊权限的设置还是使用chmod 命令。

数字法: 文件的普通权限只有三个数字,特殊权限的设置用4个数字,其中第一个数字来表示特殊权限,后三位为普通权限(读、写、执行)。

[root@localhost ~]# chmod 4755 ftest #赋予SetUID权限

[root@localhost ~]# chmod 1755 dtest/ #赋予 SBIT权限

 

字符法:

通过"u+s"赋予 SetUID 权限,通过"g+s"赋予 SetGID 权限,通过"o+t"赋予 SBIT 权限。

[root@localhost ~]#chmod u+s, g+s, o+t ftest

#设置特殊权限

[root@localhost ~]# chmod u-s, g-s, o-t ftest

#取消特殊权限

注: SetUID 只对二进制程序文件有效,SetGID 可以对二进制程序文件和目录有效,但是 SBIT 只对目录有效。用户只有在具备x权限时,特殊权限才有效,不然即使赋予特殊权限也没有任何意义。

 

3. chattr 命令 修改文件系统的权限属性

chattr只有root用户可以使用,凌驾于rwx基础功能之上的授权

# chattr [+-=][选项] 文件或目录

选项:

  • +:増加权限;
  • -:删除权限;
  • =:等于某权限;
  • i:如果对文件设置属性,那么不允许对文件进行删除、改名,也不能添加和修改数据;如果对目录设置 i 属性,那么只能修改目录下文件中的数据,但不允许建立和删除文件;
  • a:如果对文件设置 a 属性,那么只能在文件中増加数据,但是不能删除和修改数据;如果对目录设置 a 属性,那么只允许在目录中建立和修改文件,但是不允许删除文件;
  • e:Linux 中的绝大多数文件都默认拥有 e 属性,表示该文件是使用 ext 文件系统进行存储的,而且不能使用"chattr -e"命令取消 e 属性;


 

[root@localhost ~]# chattr +i ftest

[root@localhost ~]# chattr -i ftest

4. lsattr 命令 查看文件系统属性

# lsattr 选项 文件名

选项:

  • -a: 显示所有文件和目录;
  • -d:如果目标是目录,则仅列出目录本身的属性,而不会累出文件的属性;

 

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值