Linux基础-特殊权限

特殊权限中:
1、文件基本权限;
2、文件默认权限;
3、ACL权限;
4、sudo权限;---只有这个权限是针对系统命令的,其他都是针对文件的。
5、文件特殊权限;
6、不可改变位权限


ACL权限:---解决用户身份不足。  作用于分区,属挂载权限。
查看分区ACL权限是否开启:
[root@localhost ~]#  dumpe2fs  -h   /dev/sda5
     dumpe2fs   命令是查询制定分区详细文件系统信息的命令
选项:     -h:仅显示超级快中信息,而不显示磁盘块组的详细信息。

临时开启分区ACL权限:
[root@localhost ~]#  mount  -o   remount,alc   /    ---    -0:特殊挂载
     重新挂载根分区,并挂载加入  acl   权限
永久开启分区ACL权限:
     [root@localhost ~]#   vim   /etc/fstab
UUID=c2ca6f57-b15c-43ea-bca0-f239083d8bd2   /   ext4   defaults,acl     1    1
#加入  acl
注意:修改此文件的时候,必须小心修改,否则会影响Linux启动。

结合临时修改可直接达到---修改永久生效不用重启系统。
[root@localhost ~]#  mount   -o   remount   /
#重新挂载文件系统或重新启动系统,是修改生效。

查看ACL权限:
     [root@localhost ~]#  getfacl   文件名
#查看acl权限

设定ACL权限的命令:
     [root@localhos ~]#   setfacl   选项    文件名
选项:     -m     设定ACL权限
               -x      删除指定的ACL权限
               -b      删除所有的ACL权限
               -d      设定默认ACL权限
               -k      删除默认ACL权限
               -R      递归设定ACL权限
设置ACL权限比较复杂,这只是基本的一些选项

创建一个用户,创建一个组,并对某个文件的所有者和所属组进行更改:
修改文件权限:r --- 4    w---2   x---1
[root@localhost ~]#  chmod   770   kunDir  ---   设置文件权限

添加一个用户,并设置这个用户的密码
[root@localhost ~]#  useradd  laow   --- 添加一个用户
[root@localhost ~]#  passwd  laow  --- 设置laow这个用户的密码

root切换到普通用户
[root@localhost ~]#  su   -   laow 
root用户切换到普通用户的身份,不用密码,如果普通切换到root需要root的密码

给文件添加ACL权限:
[root@localhost ~]# setfacl   -m   u:laow:rx   kunDir
u:laow:rx  ---  u:设置用户ACL权限,laow:用户,rx:读,执行  权限

查看文件的ACL权限:
[root@localhost ~]#  getfacl  kunDir  ----   getacl   文件名   查看这个文件的ACL权限

[root@localhost ~]#  setfacl  -m  u:laow:rx  /kunDir  --- 给用户添加ACL权限
给用户laow赋予r-x权限,使用:“u:用户名:权限” 格式

[root@localhost ~]#  setfacl  -m  g:student:rx   /kunDir
给组 student 分配ACL权限。使用“g:组名:权限” 格式


最大有效权限与删除ACL权限:
     1、最大有效权限mask
mask是用来指定最大有效权限的。如果给用户赋予了ACL权限,是需要和mask的权限“相与”才能得到用户的真正权限。
也就是必须俩个都有这个权限才会有这个权限

修改最大有效权限:
     [root@localhost ~]#  setfacl  -m  m:rx   文件名
#设定mask的权限为r-x。使用“m:权限” 格式

删除ACL权限:
     [root@localhost ~]#  setfacl   -x   u:用户名     文件名
#删除指定用户的ACL权限

     [root@localhost ~]#  setfacl  -x  g:组名    文件名
#删除指定用户组的ACL权限

     [root@localhost ~]#  setfacl  -b   文件名
#会删除文件的所有的ACL权限 --- 不管是组,还是用户的ACL都会删除掉。


默认ACL权限和递归ACL权限:
      递归ACL权限---只针对目录生效。 递归权限仅能赋予目录,不能赋予文件。 已经有的子目录和子文件。赋予文件递归ACL权限会报错。
递归式父目录在设定ACL权限时,所有的子文件和子目录也会拥有相同的ACL权限。
[root@localhost ~]#  setfacl   -m  u:用户名:权限   -R   目录名
注意:如果ACL使用递归则就会产生权限溢出的问题,(目录慎用w-2写的权限,对文件慎用x-1执行的权限),所以当递归后其子目录或文件也拥有了跟这个文件相同的权限。除非一个一个文件设置,否则没办法修改。所以:ACL尽量别人,能用所有者,所属组,其他人的权限就别用ACL权限

     默认ACL权限:--- 赋予文件默认权限不会报错--只针对目录生效
作用是:如果给父目录设定了ACL权限,那么父目录中所有新建的子文件都会继承父目录的ACL权限。
[root@localhost ~]#  setfacl   -m  d:u:用户名:权限    目录名






sudu权限:---(备份,添加用户,ifconfig普通用户不能用。)很不安全
     root把本来只能超级用户执行的命令赋予普通用户执行。
     sudo的操作对象是系统命令

sudo使用:
[root@localhost ~]#  visudo
#实际修改的是   /etc/sudoers  文件

在配置文件:需要启用Defaults  logfile=/var/log/sudo 配置
默认日志文件:/var/log/sudo

例如:[root@localhost ~]#  visudo
-user1   ALL=/sbin/shutdown   -r    now
注意:ALL对应的值描述的越详细越好,这样user1使用这个命令的权限就越小。

[root@localhost ~]#  sudo  -l   ---  查看被超级用户允许执行的系统命令
必须是绝对路径,但也可以在contentos  6 中可以直接执行(做了优化)。写绝对路径是为了兼容其他版本

root             ALL=(ALL) 前ALL:表示所有IP                                            ALL
#用户名        被管理主机的地址=(可使用的身份)                   授权命令(绝对路径)

#%wheel      ALL=(ALL) 前ALL:表示所有IP                                           ALL
#%组名         被管理主机的地址=(可使用的身份)                  授权命令(绝对路径)
注意:必须在组名前加百分号


授权普通用户可以添加其他用户:
     [root@localhost ~]#  visudo
- user1   ALL=/usr/sbin/useradd
- user1   ALL=/usr/bin/passwd
#授予用户设定密码的权限
- user1   ALL=/usr/bin/passwd  [A-Za-z]*,   !/usr/bin/passwd  "",   !/usr/bin/passwd   root
上面条件的中顺序必须是这样。

[root@localhost ~]#  whereis   命令  ---  查看这个命令所在位置
保存密码的文件:  /etc/passwd


文件特殊权限: ----  特殊权限尽量少修改。
SetUID  ---  非常不安全权限--系统需要这种权限来完成一些特殊的功能,不允许手动自己去配置--- 只能对文件
     1、只有可以执行的二进制程序才能设定SUID权限
          是一个执行文件,必须有可执行权限,SUID才有意义,否则无效。
     2、命令执行者要对该程序拥有x(执行)的权限
     3、命令执行者在执行改程序时获得该程序属主的身份(执行过程中赋为文件的属主)
     4、SetUID权限只在改程序执行过程中有效,也就是身份改变只在程序执行过程中有效。
设定SetUID的方法
     4代表SUID
          chmod   4755  文件名
          chmod   u+s    文件名
赋予文件abc,SUID权限:

文件没有执行权限,赋予SUID权限是没有意义的:为:大S

取消SUID权限:
chmod    0755  文件名
chmod    u-s     文件名     
危险的SetUid:注意:
     1、关键目录应严格控制写权限。比如: “/”    “/usr”等
     2、用户的密码设置要严格遵守密码三原则。
     3、对系统中默认应该具有SetUID权限的文件作一列表,定时检查有没有这些之外的文件被设置了SetUID权限。

查找系统当中所有拥有SUID和SGID的所有文件,并保存到suid.log文件当中:
[root@localhost ~]#  find  /   -perm  -4000  -o  -perm  -2000  >  suid.log

创建aaa文件赋予aaa文件 SUID的权限:

SetGID  ---  非常不安全权限 --系统需要这种权限来完成一些特殊的功能,不允许手动自己去配置--- 即可以针对文件设置,也可以对目录设置
     1、只有可执行的二进制程序才能设置SGID权限
      2、命令执行者要对该程序拥有x(执行)权限
      3、命令执行在执行程序的时候,组身份升级为该程序文件的属组。
      4、SetGID权限同样只在该程序执行过程中有效,也就是组身份改变只在执行过程中有效。  
典型例子:
     [root@localhost ~]#  ll   /usr/bin/locate  
-rwx--s--x   1    root     slocate       35612     8月    24    2010    /usr/bin/locate
     
     [root@localhost ~]#  ll   /var/lib/mlocate/mlocate.db
 -rw-r-----   1    root    slocate     1838850    1月     20     04:29     /var/lib/mlocate/mlocate.db  
备注:
     1、/usr/bin/locate是可执行二进制程序,可赋予SGID。
     2、执行用户lamp对/usr/bin/locate命令拥有执行权限
     3、执行/usr/bin/locate命令时,组身份会升级为slocate组,而slocate组对 /var/lib/mlocate/mlocate.db 数据库拥有r权限,所以普通用户可以使用locate命令查询,mlocate.db数据库     
     4、命令结束,lamp用户的组身份返回lamp组。

SetGID针对目录的作用:
     1、普通用户必须对此目录拥有r和x权限,才能进入此目录
      2、普通用户在此目录中的有效组会变成此目录的属组
      3、若普通用户对此目录拥有w权限时,新建文件的默认所属组是这个目录的所属组。

设定SetGID:
     chmod   2755   文件名
     chmod    g+s    文件名

root创建测试目录  test:  此时并未对 目录  test  设置  SGID权限
未设置SGID权限时候在test目录下创建文件:默认的所有者,所属组都是当前用户

给test目录设置SGID权限:
此时用户在test目录下创建的文件的所属组就是root组:
取消SetGID
     chmod   0755   文件名
     chmod    g-s     文件名


sticky  BIT--- 只能针对目录生效。
注意:一般的对目录只有x权限是不够的,只能cd。只有让其他人对这个目录拥有7权限,粘着位才有作用。
     所以,除非系统当中自带有粘着位的目录,不建议手工建立拥有粘着位的目录。
SBIT粘着位作用:
     1、粘着位目前只对目录有效
     2、普通用户对该目录拥有w和x权限,即普通用户可以在此目录拥有写入权限
     3、如果没有粘着位,因为普通用户拥有w权限,所以可以删除此目录下所有文件,包括其他用户建立的文件。一旦被赋予了粘着位,除了root可以删除所有文件,普通用户就算拥有w权限,也只能删除自己建立的文件,但是不能删除其他用户建立的文件。
设置粘着位:
     chmod   1755   目录名
     chmod    o+t    目录名

 取消粘着位:
     chmod    0777     目录名
     chmod     o-t      目录名

默认的/tmp  就是拥有粘着位权限的。


不可改变位权限:
     chattr权限:
chattr命令格式
     chattr       [+-=]     [选项]     文件或目录
          +:增加权限
           -:删除权限
          =:等于某权限
chattr选项包括:i  和  a  --- 这2个最长用
     i:等价于   insert
如果对文件设置了i属性,那么不允许对文件进行删除、改名、也不能添加和修改数据;如果对目录设置了i属性,那么只能修改目录下文件的数据,但不允许建立和删除文件。

     a:等价于   append  --- 必须得用输出重定向追加进入内容才可以。
如果对文件设置了a属性,那么只能在文件中增加数据,但不能删除也不能修改数据;如果对目录设置a属性,只允许在目录中建立和修改文件,但不允许删除。

查看文件系统属性:
     [root@localhost ~]#  lsattr   选项     文件名
选项:
     -a     显示所有文件和目录
     -d     若目标是目录,仅列出目录本身的属性,而不是子文件的。









  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Linux授权管理权限Linux系统中对用户和组进行权限管理的过程。通过授权管理,可以决定用户可以访问哪些文件执行哪些操作。 在Linux中,权限管理主要涉及三个方面:用户管理、组管理和权限管理。 用户管理涉及到创建、删除和管理用户账户。每个用户都有一个唯一的用户名和密码,可以根据需要分配不同的权限给用户。这样,每个用户就可以根据其权限来访问和操作文件。 组管理是将用户分组的过程。通过将用户分组,可以更方便地管理用户的权限。可以将用户分配到不同的组中,然后为每个组设置相应的权限。这样,用户可以继承其所属组的权限权限管理是指确定用户对文件或目录的操作权限。在Linux中,每个文件或目录都有三种基本权限:读取权限、写入权限执行权限。这些权限可以被分配给用户、用户组和其他用户。通过设置不同的权限,可以控制用户对文件的访问和操作。 需要注意的是,Linux系统中有一个特殊的用户——root用户。root用户是系统管理员,拥有最高权限。通过root用户,可以执行系统级别的操作。然而,root用户的权限应该谨慎使用,因为错误的操作可能导致系统的不稳定或安全性问题。 总结起来,Linux授权管理权限是通过用户管理、组管理和权限管理来确定用户对文件和操作的访问权限。这是Linux中非常重要和基础的知识。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值