Linux权限管理之基本权限

3,276 阅读

Linux权限管理之基本权限

  1、文件权限: -rw-r--r-- :         r 读   w 写     x 执行

      -:   文件类型(- 文件  d 目录  l软链接文件)

   rw-            r--             r--   

      u所有者(user)  g所属组(group)  o其他人(other)

  2、chmod命令

    chmod 选项 模式 文件名

      选项 :-R     递归

      模式 :[ugoa] [+-=] [rwx] 

         例如:chmod u+x 文件名           给user赋予x权限

               chmod g+w,o+w 文件名       给....

               chmod a=rwx 文件名         给所有人...

       权限的数字表示:r --- 4     w --- 2    x --- 1

                       rwxr-xr-x  755 

                      chmod 755 abc 

   对文件来讲:最高权限是 X

   对目录来讲:最高权限是 W    目录只有0  5(rx)  7(rwx)三个权限   

  3、权限对目录和文件的作用

     r:可以查询目录下的文件名(ls、ll)

     w:具有修改目录结构的权限。如新建文件和目录,删除此目录下文件和目录,重命名此目

录下文件和目录,剪切(touch、rm、mv、cp)

     x:可以进入目录 (cd)

    权限对文件的作用

     r:读取文件内容(cat、more、head、tail)

     w:编辑、新增、修改文件内容(vi、echo)

        -但是不包含删除文件

     x:可执行

   4、修改文件的所有者和所属组

     chown 用户名:组名 文件名    例如:chown user1:user abc

     chgrp 组名  文件名 

     useradd user1  #添加用户       groupadd user  #添加组

     gpasswd -a user1 user  #把user1添加到user里

     chown user1:user 文件名  #赋予user1和user对该文件的权限

 

Linux权限管理之特殊权限

一、ACL权限:给予所有者、所属组和其他人之外的用户的权限

   1、ACL权限  (1)查看分区ACL权限是否开启:dumpe2fs -h /dev/sda5

                  #dumpe2fs命令是查询指定分区详细文件系统信息的命令

                  选项: -h    #仅显示超级块中的信息,不显示磁盘块组的详细信息

               (2)临时开启分区ACL权限:mount -o remount,acl /

                   #重新挂载根分区,并挂载加入ACL权限

               (3)永久开启分区ACL权限:vi /etc/fstab

                   UUID=c2......./ ext4 defaults,acl 1 1    #加入acl

                 mount -o remount /    #重新挂载或重启系统,使修改生效

   2、ACL查看与设定

      useradd tony       groupadd stu       mkdir /abc    chown tony:stu /abc

      chmod 770 /abc     useradd lw         setfacl -m u:lw:rx abc

         #给用户lw赋予r-x 权限,使用'u:用户名:权限' 格式

         #为组group2分配acl权限,使用'g:组名:权限'  格式

         getfacl abc   #查看acl权限

   3、删除ACL权限

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

      setfcal -x g:组名 文件名        #删除指定用户组的ACL权限

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

   4、递归和默认ACL权限       #权限只能赋予目录,不能赋予文件

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

      setfacl -m u:用户名:权限-R 目录名(绝对路径)  

      (2)默认ACL权限的作用是如果给父目录设定默认ACL权限,那么父目录中所有新建的        

   子文件都会继承父目录的ACL权限

      setfacl -m d:u:用户名:权限 目录名(绝对路径)   

二、sudo权限

   1、sudo权限

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

      sudo的操作对象是系统命令

   2、sudo的使用

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

      root   ALL = (ALL)      ALL

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

     #%wheel   ALL==(ALL)   ALL

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

    例子1、授权普通用户可以重启服务器

         visudo         user1 ALL=(ALL) /sbin/shutdown -r now

         sudo /sbin/shutdown -r now

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

         su - user1        #切换到user1用户

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

   例子2、授权普通用户可以添加其他用户

         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用户的密码

三、文件特殊权限    (特殊权限尽量少修改)

    1、SetUID的功能

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

      命令执行者要对该程序拥有X(执行)权限

      命令执行者在执行该程序时获得该程序文件属主的身份

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

2、设定SetUID的方法

       4代表SUID    

       chmod 4(0)755 文件名    chmod u+(-)s 文件名  (u是所有者)  0和- 是取消USID

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

       ll /usr/bin/passwd      -rwsr-xr-x.....

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

       ll /bin/cat       -rwxr-xr-x......

     3、危险的SetUID

       关键目录应严格控制写权限。如'/','/usr'等

       用户的密码设置要严格遵守密码三原则:复杂性、易记忆性、时效性

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

  被设置了SetUID权限:

     {  #!/bin/bash

       find / -perm -4000 -o -perm -2000 > /tmp/setuid.check

       #搜索系统中所有拥有SUID和SGID的文件,并保存到临时目录中。

       for i in $(cat /tmp/setuid.check)

       #做循环,每次循环取出临时文件中的文件名

       do

         grep $i /root/suid.log > /dev/null    #( '> /dev/null'抛进回收站)

         #比对这个文件名是否在模板文件中(suid.log是新Linux系统运行find / -perm -4000 

-o -perm -2000 > /root/setuid.log保存的原始包含SUID和SGID的信息)

             if [ '$?' != '0' ]          

             #检测上一个命令的返回值,如果不是0,证明上一个命令报错

              then

                  echo '$i isn't in listfile!' >> /root/suid_log_$(date +%F)

                  #如果文件名不在模板文件中,则输出错误信息,并把报错送到日志中

              fi

done

rm -rf /tmp/setuid.check

#删除临时文件              }

实例:touch abc

      find / -perm -4000 -o -perm -2000 > /tmp/suid.log    #suid_log模板

      vi suid_check.sh  然后把上面脚本语言粘贴到suid_check.sh中,'shift+:wq'保存退出

      chmod 755 suid_check.sh    #赋权

      ll

      chmod u+s abc              #给abc USID权限

      ./suid_check.sh            #执行脚本

      ls

      cat suid_log_2016-3-16   #查看新文件的内容,有多余的有SUID的abc文件

      rm -rf abc

    

 1、SetGID针对文件的作用

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

    命令执行者要对该程序拥有X权限

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

    SetGID权限同样只在该程序执行过程中有效。

 2、SetGID针对目录的作用

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

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

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

 3、设定SetGID

     2代表SGID:chmod 2755 文件名       chmod g+s 文件名

 1、SBIT粘着位作用

    粘着位目前只对目录有效

    普通用户对该目录拥有w和x权限

    如果没有粘着位,因为普通用户拥有w权限,所以可以删除此目录下所有文件,包括其他用户

建立的文件。一旦赋予看粘着位,除了root可以删除所有文件,普通用户就算拥有w权限,也只能

删除自己建立的文件,但不能删除其他用户建立的文件。

 2、设置与取消粘着位

  设置粘着位: chmod 1755 目录名        chmod o+t 目录名     (o是other)

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

四、不可改变位权限

  1、chattr命令格式

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

          +:增加权限

          -:删除权限

          =:等于某权限

   chattr选项包括:i和a      a等价于append、  i等价于insert

   i:如果对文件设置i属性,那么不允许对文件进行删除、改名,也不能添加和修改数据;如果

对目录设置i属性,那么只能修改目录下文件的数据,但不允许建立和删除文件。

   a:如果对文件设置a属性,那么只能在文件中增加(echo)数据,但是不能删除也不能修改数据;

如果对目录设置a属性,那么只允许在目录中建立和修改文件,但不允许删除。

  2、查看文件系统属性

  lsattr 选项 文件名

   选项: -a 显示所有文件和目录

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

实例:chattr +i abc(文件名)

      lsattr abc

      lsattr -d 123(目录)

      chattr +a abc

      echo bbbbb >> abc (添加数据,不能用vi命令)


DataLearner 官方微信

欢迎关注 DataLearner 官方微信,获得最新 AI 技术推送

DataLearner 官方微信二维码