Linux权限管理

1.ACL权限

1.1ACL权限简介与开启

所有者、所属组和其他人的权限不够用,专门为用户设定独立的权限

#查看分区ACL权限是否开启

dumpe2fs -h /dev/sda3

如下图:蓝框就表示该分区具有acl权限

Linux权限管理_第1张图片

 #临时开启分区ACL权限

mount -o remount,acl /        #重新挂载根分区,并加入acl权限#

#永久开启ACL权限

修改/etc/fsatb 在对应的分区options那一列加上【,acl】

注意:ACL权限一般Linux都会默认开启,即不用设定

1.2 查看与设定ACL权限

#设定acl权限

setfacl 选项 文件名

-m        设定ACL权限

-x         删除指定的ACL权限

-b         删除所有的ACL权限

-d         设定默认的ACL权限

-k         删除默认的ACL权限

-R        递归设定ACL权限

例如:setfacl -m u:test:rx /project        #给用户st单独赋予rx权限

setfacl -m g:group2:rx /project        #给组group2分配acl权限

# 查看acl权限

getfacle 文件名

 示例如下

Linux权限管理_第2张图片

 如图,对project目录设定acl权限后,权限一列后多了个+号,且getfacl查询,发现对test用户有单独的r和x权限,如红框所示。

1.3最大有限权限与删除acl权限

mask权限是用来指定最大有效权限的。如果给用户赋予了acl权限,需要与mask权限相“与”才能得到用户的真正权限。mask权限可通过getfacl查询,如上图中的mask一行。目的是防止给用户权限过高。

#设定mask权限为rx

setfacl -m m:rx 文件名

#删除acl权限

 setfacl -x u:用户名 文件名        #删除指定用户的acl权限

setfacl -b 文件名                       ##删除文件所有的acl权限

1.4 默认ACL权限和递归ACL权限

递归是父目录在设定ACL权限时,所有子文件和子目录也会拥有相同的acl权限。

# 设定递归文件夹的acl权限

setfacl -m u:用户名:权限 -R 文件夹            #加选项-R 

默认是给文件夹设定默认的acl权限后,新建的子文件都会继承默认的acl权限

#设定默认的acl权限

setfacl -m d:u:用户名:权限 文件夹

2.文件特殊权限

2.1  SetUID

SetUID功能:命令执行者在执行二进制程序时可以获取该程序的所有者身份,SetUID权限只在程序执行过程中有效

例如:passwd命令就拥有SetUID权限,普通用户在执行passwd命令时就当root用户执行passwd

 如上图,所有者的可执行权限变为s,且文件标红色。

#设定SetUID方法

chmod 4755 可执行程序       #4代表SUID,第一位表示特殊权限,后面为所有者、所属组、其他人权限

chmod u+s 可执行程序

# 取消SUID权限

chmod 755 可执行程序

chmod u-s 可执行程序

如下图,对abc文件设定和取消SUID权限

 

Linux权限管理_第3张图片

 注意:(1)一定要是可执行文件或者脚本;(2)命令执行者要对其有可执行权限,否则SUID权限增加不成功。

2.2 SetGID

SetGID功能:

针对文件:

命令执行者在执行程序时,组身份升级为该程序文件的属组,SetGID权限只在程序执行过程中有效,即组身份改变只在程序执行过程中有效。

针对目录:

普通用户必须对此目录有r和x权限,才能进入此目录;

普通用户在此目录中的有效组会变成此目录的属组;

若普通用户对此目录拥有w权限时,新建的文件的默认属组是这个目录的属组。

#设定SetGID方法

chmod 2755 可执行程序或目录      #2代表SGID

chmod g+s 可执行程序或目录

# 取消SUID权限

 chmod 755 可执行程序或目录

chmod g-s 可执行程序或目录

例如:

Linux权限管理_第4张图片

在/tmp/test目录拥有SGID权限后, 用sc用户在/tmp/test目录中创建新文件,所属组本该是sc,但是由于SGID权限,创建后的新文件所属组是root。

2.3 Sticky BIT

粘着位作用:

要求:仅对目录有效,且普通用户对此目录有w和x权限,即普通用户可以在此目录拥有写入权限;

如果没有粘着位,普通用户拥有w权限,可以删除此目录下的所有文件,一旦有粘着位,只有root可以删除所有文件,普通用户只能删除自己建立的文件,但是不能删除其他用户建立的文件。

例如:/tmp文件夹

 即在tmp目录下,只允许用户删除自己建立的文件。

#设置粘着位权限

chmod 1755 目录名       #1代表粘着位权限

chmod o+t 目录名

 #取消SUID权限

chmod 755 目录名

chmod o-t 目录名

3. 文件系统属性chattr权限

#设置文件系统属性

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

i:如果对文件设置i属性,不允许对文件进行删除、改名,也不能添加和修改数据;如果对目录设置i属性,那只能修改目录下文件的数据,但不允许建立和删除文件

a:如果对文件设置a属性,那只能在文件追加数据,但不能删除也不能修改数据;如果对目录设置a属性,那只能在目录中建立和修改文件,但是不允许删除

注意:该命令对root用户也有效

 #查看文件系统属性

lsattr 选项 文件名

-a 显示所有文件和目录

-d 若是目录,仅列出目录本身的属性

例如:对abc文件设置i属性,设置完后不可写入数据,也不可能删除

Linux权限管理_第5张图片

对test1文件夹设置i属性,设置后不可在test1文件夹内新建和删除文件,只能修改原有文件数据

Linux权限管理_第6张图片

4.系统命令sudo权限

#sudo使用

visudo

#实际修改的是/etc/sudoers文件         man 5 sudoers 可查询souders文档

root                               ALL=(ALL)                                  ALL

用户名    被管理主机的地址=(可使用的身份)    授权命令(绝对路径)

例如:授权test用户可以重启

则在root    ALL=(ALL)    ALL下增加

test    ALL=/sbin/shutdown -r now

  #普通用户执行sudo赋予的命令

sudo -l             #查看可用的sudo命令

sudo /sbin/shutdown -r now        #普通用户执行sudo赋予的命令

注意:命令格式要严格按照sudo + visudo中增加的/sbin/shutdown -r now命令格式,否则无法执行

你可能感兴趣的:(Linux学习,linux,运维,服务器)