Linux教程之权限管理

Linux权限管理之ACL权限

简介与开启

1.1.1 简介
ACL是Access Control List的缩写,主要的目的是在提供传统的owner,group,others的read,write,execute权限之外的局部权限设定。ACL可以针对单个用户,单个文件或目录来进行r,w,x的权限设定,特别适用于需要特殊权限的使用情况。
ACL主要针对用户(user)、用户组(group)、以及掩码(mask)方面来控制权限。
简单地来说,ACL就是可以设置特定用户或用户组对于一个文件/目录的操作权限。
而在windows系统上,没有这个ACL,ACL是类Unix(Unix-like)操作系统权限的额外支持项目,因此要使用ACL必须要有文件系统的支持才行。主要包括ReiserFS, EXT2/EXT3/ext4, JFS, XFS等文件系统。
我们知道,在linux系统中,我们将访问文件的用户分为三类,user,group,other。
如果系统中某个用户想对某个文件有写入的权限,但是该用户是属于other,如果是这样,就只能够开放other的权限。但是一旦开放other的权限,那么所有人就对该文件有写入的权限了。文件的ACL权限就很好的解决了这个问题,它可以设置一个特定文件的特定权限

1.1.2查看分区ACL权限是否开启
dumpe2fs -h /dev/sda3
dumpe2fs是查询指定分区详细文件系统信息的命令
选项:
-h 仅显示超级快中的信息,而不显示磁盘块组的详细信息
 

1.1.3临时开启分区ACL权限
mount -o remount,acl /
重新挂在根分区,并挂载加入acl权限
 

1.1.4永久开启分区ACL权限
vi /etc/fstab
LABEL=/     /      ext3    defaults,acl        1 1
#加入acl
 
mount -o remount /
#重新挂载文件系统或重启动系统,使修改生效
 

查看与设定

1.2.1查看ACL权限
getfacl 文件名
#查看acl权限
 
1.2.2设定ACL权限
setfacl 选项 文件名
选项:
-m          设定ACL权限
-x          删除指定的ACL权限
-b           删除所有的ACL权限
-d           设定默认的ACL权限
-k           删除默认的ACL权限
-R           递归设定ACL权限

最大有效权限与删除

1.3.1最大有效权限mask
mask是用来指定最大有效权限的。如果我给用户赋予了ACL权限,是需要和mask的          权限“相与”才能得到用户的真正权限。

1.3.2修改最大有效权限
setfacl -m m:rx 文件名
#设定mask权限为r-x。使用“m:权限”格式

1.3.3删除ACL权限
setfacl -x u:用户名 文件名
#删除指定用户的ACL权限
setfacl -x g:组名 文件名
#删除指定用户组的ACL权限
setfacl -b 文件名
#删除文件的所有ACL权限
 

默认与递归ACL权限

1.4.1递归
递归是父目录在设定ACL权限时,所有的子文件盒子目录也会拥有相同的ACL权限
setfacl -m u:用户权限 -R 权限名
 
1.4.2默认ACL权限
默认ACL权限的作用是如果给父目录设定了默认ACL权限,那么父目录中所有新建的子文件夹都会继承父目录的ACL权限
setfacl -m d:u:用户名:权限 文件名
 

Linux权限管理之文件特殊权限

SetUID

2.1.1 简介
只有可以执行的二进制程序才能设定SetUID权限;
命令执行者要对该程序拥有想(执行)权限;
命令执行者在执行该程序时获得该程序文件属主的身份(在执行程序的过程中灵魂附体为文件的属主);
SetUID权限只在该程序执行过程中有效,也就是说身份改变只在程序执行过程中有效。
 
2.1.2设定SetUID的方法
4代表SetUID
chmod 4755 文件名
chmod u+s 文件名
 
2.1.3取消SetUID的方法
chmod 755 文件名
chmod u-s 文件名

SetGID

2.2.1 SetGID针对文件的作用
只有可以执行的二进制程序才能设定SetGID权限;
命令执行者要对该程序拥有想(执行)权限;
命令执行者在执行该程序时,组身份升级为该程序文件的属组;
SetGID权限同样只在该程序执行过程中有效,也就是说身份改变只在程序执行过程中          有效。
例如 # ll /usr/bin/locate
/usr/bin/locate 是可执行二进制程序,可以赋予SGID;
执行用户lamp对/usr/bin/locate命令拥有执行权限;
执行/usr/bin/locate命令时,组身份会升级为slocate组,而slocate组对;   /var/lib/mlocate/mlocate.db数据库拥有r权限,所以对普通用户可以使用locate命令查询 mlocate.db数据库;
命令结束,lamp用户的组身份返回为lamp组。
 
2.2.2  SetGID针对目录的作用
普通用户必须对此目录拥有r和x权限,才能进入此目录;
普通用户在此目录中的有效组会变成此目录的属组;
若普通用户对此目录拥有w权限时,新建的文件的默认属组是这个目录的属组。
 
2.2.3设置/取消SetGID的方法
2 代表 SetGID
chmod 2755 文件名
chmod g+s 文件名
 
chmod 755 文件名
chmod g-s 文件名
 
 

Sticky BIT(粘着位)

2.3.1 SBIT粘着位作用
粘着位目前只对目录有效;
普通用户对该目录拥有w和x权限,即普通用户在此目录拥有写入权限;
如果没有粘着位,因为普通用户拥有w权限,所以可以删除此目录下的所有文件,包          括其他用户建立的文件。一旦赋予了粘着位,除了root可以删除所有文件,普通用户              就算拥有w权限,也只能删除自己建立的文件,但是不能删除其他用户建立的文件。


2.3.2设置与取消
chmod 1755 目录名
chmod o+t 目录名
 
chmod 755 目录名
chmod o-t 目录名
 

Linux权限管理之文件系统属性权限chattr 权限

chattr命令格式

chattr [+-=] [选项] 文件或目录名
+ 增加权限
- 删除权限
= 等于某权限
选项
i:如果对文件设置i属性,那么不允许对文件进行删除、改名,也不能添加和修改数           据;如果对目录设置i属性,那么只能修改目录下文件的数据,但不允许建立和删除文    件。
a:如果对文件设置a属性,那么只能在文件中增加数据,但是不能删除也不能修改数          据;如果对目录设置a属性,那么只允许在目录中建立和修改文件,但是不允许删除。
 

查看文件系统属性

lsattr 选项 文件名
选项
-a 显示所有文件和目录
-d 若目标是目录,仅列出目录本身的属性,而不是子文件的
Linux教程之权限管理_第1张图片

Linux权限管理之sudo权限

sudo权限

root把本来只能超级用户执行的命令赋予普通用户执行;
sudo的操作对象是系统命令。
 

sudo的使用

visudo
#实际修改的是/etc/sudoers文件
 
root               ALL=(ALL)                                              ALL
#用户名  被管理主机的地址=(可使用的身份)          授权命令(绝对路径)
 
%wheel          ALL=(ALL)                                              ALL
%组名    被管理主机的地址=(可使用的身份)          授权命令(绝对路径)
 

授权zhangsan用户可以重启服务器

# visudo
zhangsan        ALL=/sbin/shutdown -r now
 

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

sudo -l
#查看可用是sudo命令
sudo /sbin/shutdown -r now
#普通用户执行sudo赋予的命令

你可能感兴趣的:(Linux)