兄弟连Linux(六)--权限管理

1ACL权限

1.1 ACL权限简介与开启

1.1.1 ACL权限简介

       专门用于解决属主、属组、其他人无法解决的复杂权限问题

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

       $ dumpe2fs -h /dev/sda3       dump2fs命令是查询指定分区详细文件系统信息的命令

              -h    仅显示超级块中信息,而不显示磁盘块组的详细信息

1.1.3 临时开启分区ACL权限

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

1.1.4 永久开启分区ACL权限

       $ vi /etc/fstab

              UUID= c2ca6f57-b15c-43ea-bca0-f239083d8bd2 / ext4 defaults,acl  1 1          加入acl

       $ mount -o remount /            重新挂载文件系统或重启动系统,使修改生效

1.2 查看与设定ACL权限

1.2.1 查看ACL命令

       $ getfacl 文件名                  查看ACL权限

1.2.2 设定ACL权限的命令

       $ setfacl -mxbdk [格式] -R文件名             格式相关内容下面会讲到

              -m   设定ACL权限                           格式:u:用户名:权限(设置用户权限)

g:组名:权限(设置组权限)

m:权限(设置最大权限mask

-x    删除设定的ACL权限

-b    删除所有的ACL权限

-d    设定默认ACL权限                    格式:d:u:用户名:权限(设置默认权限)

-k    删除默认ACL权限

-R    递归设定ACL权限                    格式:u:用户名:权限 -R(递归设置权限)

1.2.3 给用户设定ACL权限

       $ useradd zhangsan

       $ useradd lisi

       $ useradd st

       $ grouadd tgroup

       $mkdir /project

       $ chown root:tgroup /project/

       $ chmod 770 /project/

       $ setfacl -m u:st:rx /project/                 给用户赋予r-x权限,使用u:用户名:权限”格式

1.2.4 给用户组设定ACL权限

       $ groupadd tgroup2

       $ setfacl -m g:tgroup2:rwx /project/     给组分配ACL权限,使用g:组名:权限”格式

1.3 最大有效权限与删除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权限

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

1.4.1 递归ACL权限

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

       $ setfacl -m u:用户名:权限 -R 目录名

1.4.2 默认ACL权限

       默认ACL权限的作用是如果给父目录设定了默认ACL权限,那么父目录中所有新家你的子文件都会继承父目录的ACL权限

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

2、文件特殊权限

2.1 SetUID

2.1.1 SetUID的功能

       只有可以执行的二进制程序才能设定SUID权限

       命令执行者要对改程序拥有x(执行)权限

       命令执行者在执行该程序时获得该程序文件属主的身份(在执行程序的过程中灵魂附体为主体的属主)

       SetUID权限只在该程序执行过程中有效,也就是说身份改变只在程序执行过程中有效

       passwd命令拥有SetUID权限,所以普通用户可以修改自己的密码

              $ ll /usr/bin/passwd

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

       cat命令没有SetUID权限,所以普通用户不能查看/etc/shadow文件内容

              $ ll /bin/cat

                     -rwxr-xr-x 1 root root 47976 6月 22 2012 /bin/cat

2.1.2 设定SetUID的方法

       4代表SUID

              $ chmod 4755 文件名

              $ chmod u+s 文件名

2.1.3 取消SetUID的方法

       $ chmod 755 文件名

       $ chmod u-s 文件名

2.1.4 危险的SetUID

       关键目录应严格控制写权限。比如“/”、“/usr”等

       用户的密码设置应严格遵循密码三原则

       对系统中默认应该具有SetUID权限的文件作一列表,定时检查有没有这之外的文件被设置了SetUID权限。

2.2 SetGID

2.2.1 SetGID针对文件的作用

       只有可执行的二进制程序才能设置SGID权限

       命令执行着要对改程序拥有x(执行)权限

       命令执行在执行程序的时候,组身份升级为该程序文件的属组

       SetGID权限同样只在改程序执行过程中有效,也就是说组身份改变只在程序执行过程中有效

 

       $ ll /usr/bin /locate

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

      

       $ ll /var/lib/mlocate/mlocate.db

              -rw-r----- 1 root slocate 1838850 1月 20 04:29 /var/lib/mlocate/mlocate.db

 

       /usr/bin/locate是一个可执行的二进制程序,可以赋予SGID

       执行用户lamp对/usr/bin/locate命令拥有执行权限

       执行/usr/bin/locate命令时,组身份会升级为slocate组,而slocate组对/var/lib/mlocate/mlocate.da数据库拥有r权限,所以普通用户可以使用locate命令查询mlocate数据库

       命令结束,lamp用户的组身份返回lamp组

2.2.2 SetGid对目录的作用

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

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

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

 

       $ cd /tmp/

       $ mkdir dtest

       $ chmod g+s dtest

       $ ll -d dtest/

       $ chmod 777 dtest

       $ su - lamp

       $ cd /tmp/dtest/

       $ touch abc

       $ ll

2.2.3设定SetGID

       2代表GID

              $ chmod 2755 文件名

              $ chmod g+s 文件名

2.2.4取消SetGID

       $ chmod 755 文件名

       $ chmod g-s 文件名

2.3 Sticky BIT

2.3.1 SBIT黏着位作用

       黏着位目前只对目录有效

       普通用户对该目录拥有w和x权限,即普通用户可以在此目录拥有写入权限

       如果没有黏着位,因为普通用户拥有w权限,所以可以删除此目录下所有文件,包括其他用户建立的文件。一旦赋予了黏着位,除了root可以删除所有文件,普通用户就算拥有w权限,也只能删除自己建立的文件,但是不能删除其他用户建立的文件。

 

       $ ll -d /tmp/

              drwxrwxrwt. 3 root root 4096 12月 13 11:22 /tmp/

2.3.2 设置与取消黏着位

       设置黏着位

              $ chmod 1755 目录名

              $ chmod o+t 目录名

       取消黏着位

              $ chmod 777 目录名

              $ chmod o-t 目录名

3、文件系统属性chattr权限

3.1 chattr命令格式             chattr不是限制root用户的,而是为防止误操作的

$ chattr [+-=] [ia] 文件或目录名

       +     增加权限

-     删除权限

       =     等于某权限

选项

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

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

3.2 查看文件系统属性

$ lsattr -ad 文件名

       -a    显示所有文件和目录

       -d    若目标是目录,仅列出目录自身的属性,而不是子文件的

4、系统命令sudo权限

4.1 sudo权限

root把本来只能超级用户执行的命令赋予赋予用户执行

sudo的操作对象是系统命令

4.2 sudo使用

       # visudo         实际修改的是 /etc/sudoers文件

 

       root        ALL=(ALL)      ALL

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

       #%wheel        ALL=(ALL)      ALL

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

4.3 授权sc用户可以重启服务器

       # visudo

              sc    ALL=/sbin/shutdown -r now

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

       # su - sc

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值