美文网首页LinuxLinux
Linux权限管理

Linux权限管理

作者: 李菜菜同学 | 来源:发表于2019-12-10 16:51 被阅读0次

    一、基本权限

    基本概述:不同用户有不同权限,在服务器上,每个用户都会定义合理的等级。一般只有一个管理员,其他都是普通用户。

    二、文件基本权限

    1.Linux文件权限的设定

    - r w x

    文件类型(-:普通文件 d:目录文件 l 软连接文件)

    R:读  w:写  x:执行

    修改权限命令:

    Chmod 【选项】 模式 文件名

    选项:-R 递归

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

          [mode=421]

    图1 修改权限的方式

    a:所有人

    权限的数字表示:

    R:4(2*2)     w:2(2*1)      x:1(2*0) 

    例: rwxr-xr-x  :755

    2.Linux文件权限的作用

    文件权限作用

    3.linux中权限对目录的作用

    权限对目录的作用

    对文件来讲:最高权限是x(执行)

    对目录来讲:最高权限是w(写)

    #whoami   //查看当前用户

    #uaseradd user1  //添加用户user1

    #passwd user1    //更改user1用户的密码

    #是超级用户登录时候的提示符;$是普通用户登录的提示符

    4.linux中其他权限的作用

    #chown 用户名 文件名   //修改文件所有者  如果需要一个普通用户对一个文件有7权限,可以使用此命令

    #chgrp 用户组 文件名  //修改文件的所属组

    Linux中,不管添加多少用户,都会默认添加一个与用户名称相同的组作为初始组

    #chown root:root 123  //修改文件的用户组和用户 为root

    例子:#groupadd user //添加一个user用户组

    #gpasswd -a user1 user  //把user1用户加入到user组 

    核心原则

    三、默认权限

    1.文件的默认权限

    1)文件的默认权限:Windows中,新建文件的权限是由上级所在目录继承过来的。

    Linux中,是通过umask来定义文件的默认权限。

    #umask  //查看默认权限

    此时回车之后控制台自己输出的0022  //第一位0:文件的特殊权限  022:文件的默认权限.

    文件的默认权限:

    ①文件默认不能建立为执行文件,必须手工赋予执行权限

    ②所以文件的默认权限最大为666

    ③默认权限需要换算成字母再相减

    ④建立文件之后的默认权限,为666减去umask的值

    例子:文件的默认最大权限666,umask的值是022

          -Rw-rw-rw- 减去  - - - -w- -w 等于 -rw-r- -r- -

    2.目录的默认权限

    目录的默认权限:

    ①目录的默认权限最大是777

    ②默认权限需要换算成字母再相减

    ③建立文件之后的默认权限,为777减去 umask的值

    例子:目录默认最大权限是777  umask值是022

         -Rwxrwxrwx  减去 - - - - -w- - w - 等于 -rwxr-xr-x

    修改umask的值

     - umask 0002 //临时修改

      Vi /etc/profile //永久修改

    永久修改profile文件

    四、特殊权限

    1.简介

    简介:所有者和所属组有读写执行权限,其他人无权限。但是此时想要将一个人赋予权限r-w权限。不考虑这个用户是所有者还是所属组,直接把这个用户拿出来,赋予它acl的权限。

    如何做:

    第一步:查看分区acl权限是否开启

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

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

    图示

    第二步:如果ACL权限没有打开,需要临时开启ACL权限

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

    第三步:如果想要ACL权限永久生效,需要修改配置文件

    #vi /etc/fstab

    图示

    2.linux中acl权限查看与设定

     #getfacl 文件名  //查看acl的权限

         #setfacl 选项 文件名 //设定acl权限的命令

    选项:-m:设定acl权限

               -x:删除指定的acl的权限

               -b:删除所有的acl的权限

               -d:设定默认acl的权限

               -k :删除默认的ACL的权限

               -r:递归设定acl的权限

    例子 例子 图示

    3.ACL最大权限与删除

    1)最大有效权限mask

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

    相与 图示 图示

    2)删除acl权限

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

    #setfacl -x g:组名 文件名   //删除指定用户组的acl权限

    #setfacl -b 文件名         //删除文件的所有的acl权限

    4.默认的ACL权限和递归ACL权限

    图示

    如果使用递归权限,就难以避免会出现权限溢出。因为执行权限,对目录和文件是不一样的,如果对目录赋予权限,对该目录下的文件赋予递归权限,该文件就会得到目录的权限。除非,对该目录下的文件一个一个赋予权限,就可以避免权限溢出。

    图示

    如果递归之后,又重新建立文件,此时新建的文件,没有递归的权限。但是可以使用默认权限。

    图示 图示

    此时再新建文件,就会有acl权限了。

    默认权限也是只针对目录生效!!!!

    五、Sudo权限

    1.基本概述

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

    图示

    例子:授权普通用户重启电脑

    #visudo

    #su - user1    //普通用户登录

    #sudo /sbin/shutdown   //普通用户重启电脑 

    图示

    2.授权普通用户可以添加其他用户

    图示

    用户如果不设定密码时,无法正常登录;所以要给它赋予设定密码的权限。

    图示

    例子:给普通用户赋予vi权限,可以查看修改/etc/shadow文件

    #visudo

    添加#  user1 ALL=/bin/vi

    此时普通用户会有vi权限

    普通用户登录之后

    $ sudo /bin/vi  /etc/shadow  

    六、特殊文件权限

    注:特殊权限尽量少去修改。

    1.SetUID功能:

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

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

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

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

    当输入mask的时候,回车会出现 0022;第一位0就是特殊权限,后三位是文件的基本权限。

    图示 图示

    2.取消SetUID的方法

    #chmod 0755 文件名  //取消文件的权限,用0

    #chmod u -s 文件名  //取消组文件的权限

    注意:

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

    ②用户的密码设置要严格遵守密码三原则

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

     Suid脚本:定时检查有没有文件被设置了suid权限。

    例子1-1 例子1-2

    3.linux中的setGID

    SetGID针对文件的作用:

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

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

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

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

    例子:

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

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

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

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

    SetGID针对目录的作用:

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

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

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

    设定 例子 取消

    4.SBIT权限

    SBIT粘着位的作用

    ①粘着位目前只是针对目录有效

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

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

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

    注意:不建议手工建立拥有粘着位的目录,因为它要求必须给其他用户赋予7最高权限。

    设置粘着位:

    #chmod 1755目录名

    #chmod o+t目录名

    取消粘着位:

    #chmod 0777目录名

    #chmod o-t目录名

    例子

    七、不可改变位权限

    chattr权限:

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

     +:增加权限

     -:删除权限

     =:等于某权限

    [选项]:

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

    A:等价于append(追加)。如果对文件设置a属性,那么只能在文件中增加数据,但是不能删除也不能修改数据;如果对目录设置a属性,那么只允许在目录中建立和修改文件,但是不允许删除。

    例子

    不仅对于文件如此;对目录也是如此(目录中的文件的内容可以修改)

    例子 例子

    相关文章

      网友评论

        本文标题:Linux权限管理

        本文链接:https://www.haomeiwen.com/subject/roeggctx.html