Linux教程

Linux系统权限相关学习总结

本文主要是介绍Linux系统权限相关学习总结,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

一、Linux系统基础权限

1、权限位的含义

  使用“ls -l”命令时,会用长格式显示文件目录的信息,其中第一列即为权限信息,

  一般会包含10个位置,如下显示:

   

  权限列的详细说明如下:

   

  a、第1位:代表文件类型,一些常用的文件类型如下:

  

  b、第2-第4位:表示所有者的权限。即拥有读、写、执行权限。

    r:代表read,即读取权限;w:write,即写入权限;x:execute,即执行权限;

    -:当所在字元位置为“-”时,代表该字元位没有权限

  c、第5-第7位:表示所属组的权限。即加入此群组的账户的权限。

  d、第8-第10位:表示其他人的权限。即非本人且没有加入本群组的其他账户的权限。

  说明:rwx权限所在的位置是不会改变的,有该权限则相应位置显示字母,

     没有该权限,就变成减号(-)。

2、基本权限的作用

  读、写、执行权限对文件和目录的作用是不同的。

  A、权限文件的作用(是针对文件的内容而言)

    

  B、权限目录的作用

    目录主要的内容是记录目录下的文件名、子目录名。

    

    扩展:

    一般目录的常用权限:

     ·0---):任何权限都不赋予。如:给其他人赋0权限。

     ·5r-x):基本的目录浏览和进入目录权限,如:给所属组赋5权限

     ·7rwx):完全权限,即查看目录、进入目录、目录下创建删除文件和子目录。如:文件的所有者的权限。

3、权限的预设值:umask

  Linux系统中,新建一个文件或目录时设置的默认权限与umask相关。

  即新建文件或目录的默认权限是通过linux系统给予文件或目录的最大权限和系统设置的umask值进行AND或者NOT运算得到的。

  a、linux系统中,对于文件而言,最大权限666(rw-rw-rw-);对于目录而言,最大权限为777(rwxwrwxrwx)

  b、普通用户的umask值默认为002(即-------w-);超级用户(如root)的umask值022(即----w--w-)

  c、新建文件、目录时,系统设置的默认权限:最大权限去除掉umask中的权限后,保留下来的权限即为文件或目录的默认权限。

    

  d、修改umask值

  ·临时修改:在命令行中输入: umask mode;如;umask 033

    

  ·永久性修改:修改系统环境配置文件(/etc/profile)中的umask设置

二、文件与目录的隐藏权限

1、隐藏属性

  linux系统中文件除了普通rwx权限外,还有一种隐藏权限,如下:

  

  其中,每个位置代表一种隐藏属性,若含有该属性则显示相应字符,如i属性,

  若没有该隐藏属性则显示“-”(减号)。

2、常用隐藏属性介绍

  

3、设置文件的隐藏属性:chattr命令

  

  chattr命令用于设置文件的隐藏属性,格式如下:

  

4、显示文件的隐藏属性:lsattr命

  

三、ACL权限

  ACL(Access Control List)为访问控制列表。ACL可以设置特定用户或用户组对于一个文件或文件夹的操作权限。

  即ACL用于设定某个用户针对文件的权限

  权限的优先级顺序所有者-->ACL自定义用户-->ACL自定义组-->其他人

1、查看ACL权限是否开启

  Linux中ACL权限针对的是分区,故给文件设置ACL权限时,首先要查看文件所在的分区是否开启ACL权限。

  一般系统(Ext4、xfs)默认开启ACL权限

  方法一:

    步骤一查看要设置ACL权限的文件所在区分(以根分区为例)df -h

     

    步骤二查看指定分区是否开启ACL权限

     dumpe2fs -h /dev/sda5 | grep Default mount options

     

  方法二:

    

2、开启分区的ACL权限

  以根分区(/)为例,开启分区的ACL权限:

  A、临时开启ACL权限:(若系统重启,那根分区权限会恢复到原来状态

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

    

  B、永久开启分区ACL权限:

    修改配置文件“/etc/fstab”,在分区的“defaults”后加入“,acl”值,再重新挂载

    步骤一编辑配置文件

    

    步骤二重新挂载或者重启系统

3、查看ACL权限:getfacl命令

 

4、设置ACL权限:setfacl命令

  

  

  A、默认ACL权限:(default

    指的是针对父目录而言,新建的文件和子目录会继承父目录的ACL权限。

    命令格式setfacl -m d:u:用户名:权限 -R 文件名

    注意:默认权限,只能赋予目录,即命令中的文件名为目录的名称

  B、递归ACL权限

    指的是针对父目录中已存在的所有子文件和子目录继承父目录的ACL权限。

    命令格式setfacl -m u:用户名:权限 -R 文件名

  C、最大有效权限mask

    ·给用户或用户组设定的ACL权限并不是真正的设定权限,而是通过

     设定的ACL权限mask权限进行“”运算后,获得用户的真正权限。

     系统默认mask权限rwx(一般不需要更改),此时,任何权限与

      mask权限进行与运算,结果仍是权限本身。

    ·mask是用来指定最大有效权限。可以理解为:用户和用户组所设定的权限

     必须在mask权限设定的范围内才能生效。

    ·注意:一般不会去修改系统默认的mask权限,但是能够修改,命令格式如下:

      setfacl -m m:权限 文件名

  D、删除ACL权限

  ·删除指定的ACL权限:

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

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

  ·删除所有的ACL权限:

    命令格式:setfacl -b 文件名

四、特殊权限:SUID、SGID、SBIT

  特殊权限是用来设定系统中特定指令的,一般用户不建议设定特殊权限,因会有安全隐患的

1、Set UID:SUID权限

  SUID权限:在文件可执行的二进制文件)的所有者属性的x权限位上标志为s时,表示该文件具有SUID权限。

  SUID权限的作用是:

    拥有可执行文件的执行权限普通用户,在运行该执行文件的过程时,

    暂时获得该执行文件的所有者的权限,执行结束后,释放权限。

  SUID权限是在执行的过程中生效。

  总结SUID的限制与功能,如下:

  ·SUID权限仅对二进制程序(binary program)有效

  ·执行者对该程序需要具有x的可执行权限

  ·SUID权限仅在执行该程序的过程中有效(run-time)

  ·执行过程中执行者将具有该程序拥有者(owner)的权限

  警告:SUID仅可用在可执行程序(binary program)上,不建议用在shell script上;

     不能用在目录上。

  举例说明

    普通用户能够使用passwd命令修改密码:passwd指令设置了SUID权限

    

    说明:在指令上中添加SUID权限,即该指令就具有root身份。

       这对系统而言非常危险,所以,只用系统默认设置的SUID即可切记勿手动添加

 设置SUID权限的方法:(基本权限的数字表示法前加的4代表SUID权限

  方法一chmod u+s 文件名 (权限的字符模式,在user处添加s

  方法二chmod 4755 文件名 (权限的数字模式,在基本权限的数字前加4

  注意:当文件SUID的标志s不是小写而是大写S时,说明无执行权限x,即为空,无效。

2、Set GID:SGID权限

  SGID权限:在文件所属组x权限位上标志位s时,表示该文件具有SGID权限。

  SGID权限可以作用于可执行的二进制文件,也可以作用于目录

  A、SGID对于文件的含义:(类似于SUID的作用)

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

   ·执行者对该程序(设置了SGID权限)需要具有x的可执行权限

   ·在执行该程序的时候,执行者的所属组会临时变成该程序文件的所属组

   ·SGID权限只在该程序执行过程中有效,即所属组身份的改变只在执行过程有效

   例说明:普通用户执行locate命令(locate命令设置了SGID权限)

    

  B、SGID对于目录的含义:(常用的用途)

   ·普通用户必须对该目录(有SGID权限的目录)具有r与x权限,才能进入该目录

   ·普通用户在此目录下的有效群组将会变成该目录的群组

   ·用途若使用者拥有该目录的w权限(写),则使用者在该目录下新建文件后,

       新建文件的所属组与该目录的所属组相同

      (即拥有SGID权限的目录下,新建的文件的所属组与该目录的所属组是一样的。)

  C、设置SGID权限的方法:(基本权限的数字表示法前加的2代表SGID权限

    方法一:chmod g+s 目录名(权限的字符模式,在group处添加s

    方法二chmod 2755 目录名(权限的数字模式,在基本权限的数字前加2

    注意:当文件SGID的标志s不是小写而是大写S时,说明无执行权限x,即为空,无效。

3、Sticky Bit:SBIT权限

  SBIT权限:即粘着位,在目录其他人x权限位上标志成t,则该目录具有SBIT权限。

  SBIT权限只针对目录有效

  SBIT权限对于“目录”的含义:

   ·使用者对于该目录(有SBIT权限的目录)具有w、x权限,即具有写、入权限,

   ·使用者在该目录下建立文件或子目录时,只有自己或root能够删除文件或子目录

  通俗的理解是:具有SBIT权限的目录下,只能够对自己建立的文件进行删除、更名、移动

    等操作,而无法删除他人建立的文件。如系统中的“/tmp/”目录:

     

  设置SBIT权限的方法:(基本权限的数字表示法前加的1代表SBIT权限

    方法一:chmod -R o+t 目录名(权限的字符模式,在other处添加t

    方法二chmod -R 1755 目录名 (权限的数字模式,在基本权限的数字前加1

五、sudo授权

  sudo是linux中的一种权限管理机制,管理员可以授权普通用户去执行一些root的操作。

  1、sudo授权的一般原则

   (1) 赋予的权限越详细,普通用户得到的权限越,越安全

   (2) 赋予的权限越简单,普通用户得到的权限越大,不安全

  2、sudo执行过程:

   (1)、普通用户运行sudo时,会检查“/var/db/sudo/”目录下是否有时间戳文件

     (sudo执行成功后创建的,默认免密5分钟),并检查是否已经过期;

   (2)、若过期,就需要输入当前用户的密码,再检查 “/etc/sudoers”文件,验证用户是

     否有运行sudo的权限:若有权限,则执行命令并返回结果,然后退出;若没有权限,则直接退出;

   (3)、若没有过期,则不需要输入密码,直接检查“/etc/sudoers”文件,验证用户的sudo权限,并执行命令。

  3、与sudo相关的文件:

   (1) 配置普通用户权限的文件:/etc/sudoers

   (2) sudo的日志相关文件:/var/log/secure /var/log/auth.log

   (3) sudo执行时产生的时间戳文件保存的位置:/var/db/sudo/目录

  4、sudo设置权限文件的字段信息说明:

   ·sudo配置普通用户的权限,实际上都是配置“/etc/sudoers”文件来完成的

   ·“/etc/sudoers”文件内中相关字段信息说明,如下:

     

     

   ·“/etc/sudoers”文件中其他字段的信息,即“别名”类型如下:

    User_Alias用户别名,别名的成员可以是普通用户、群组(加%号)

    Host_Alias主机别名,即被管理的主机地址

    Runas_Aliasrunas别名,即sudo允许转换至的用户,可使用的身份别名

    Cmnd_Alias命令别名,即能够执行的命令别名

  5、sudo授权设置

    用 “visudo”命令编辑 /etc/sudoers文件。visudo实质上是使用vi编辑器打开/etc/sudoers文件进行编辑,

    保存退出后,会检查编辑后的语法是否出错,比直接使用vi编辑更安全。

  6、sudo设置权限举例:

   (1) 为普通用户授予root访问权限

    方法一:开启sudoers文件中的wheel群组,并将普通用户test加到wheel群组中

      A、开启sudoers文件中的wheel群组:将“%wheel”群组的注释去掉

      B、添加普通用户test到wheel群组中

      

     说明:将普通用户添加到wheel附加群组中的方式,可以使用命令

      “usermod -aG wheel 用户名”,或者手动vi编辑/etc/group”文件

      

    方法二visudo编辑sudoers文件,为普通用户设置权限

      

   (2) 普通用户被赋予更改密码权限,取消对root的密码修改:visudo

    

    说明:其中的“!”号表示禁止使用该命令。

7、查询系统中已设置的sudo权限:

 

这篇关于Linux系统权限相关学习总结的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!