Linux系统管理---权限管理

目录

1、权限管理

1)文件权限:读写执行

2)目录权限

3)目录与文件权限的RWX对比

2、文件隐藏属性:

1)命令:lsattr      描述:查看文件系统属性

2)echo命令:输出内容

3)文件权限的修改:

4)文件归属修改:

3、文件的特殊权限:

四位数字代权限

1.SUID权限:

2.SGID权限:

3.Sticky BIT权限:

4.ACL权限:

1)开启ACL权限

5.sudo命令:

6、权限总结


1、权限管理

   1.修改权限:chmod

 2.修改所有者:chown

 3.读写执行 :r w x

 4 .umask

     chmod:  超级用户和普通用户都可以使用

               超级用户可以修改其他用户的文件权限

               普通用户只能修改所有者为自己的文件权限

      chown:  普通用户不能修改

              超级用户可以修改

1)文件权限:读写执行

2)目录权限

1.当目录权限为757时:

         用户可以修改目录下文件并强制保存。强制保存后子文件的所有者和所属组会变为强制保存的用户。如果用户对于子文件没有读权限,那么不能查看文件内容,可以强制覆盖写入并保存。

2.目录权限为7时:

                     用户cd可以进入目录、

                     可以ls查看目录下子文件子目录、

                     可以在目录下创建文件、修改文件。

                     目录下的可执行文件可以运行。

3.755-w:目录下是否能够写入文件

                     用户cd可以进入目录、

                     可以ls查看目录下子文件子目录、

                     不能在目录下创建文件、也不能强制修改保存。

                     目录下的可执行文件可以运行。

                     不能在目录下创建文件和子目录。

4.753-r:能否查看目录子文件子目录

                     用户cd可以进入目录、

                     不能查看目录下子文件子目录、

                     可以在目录下创建文件、修改文件(可以强制写入)。

                     目录下的可执行文件可以运行。

5.756-x:能否进入目录。

                     不能切换到目录、

                     不能修改目录子文件、

                     查看目录下内容会有报错提示信息,但是会显示目录下子文件子目录。

                     不能在目录下创建子文件、子目录。

                     不能执行目录下可执行文件。

3)目录与文件权限的RWX对比

字符

数字

目录

文件

R

4

查看目录下的文件与目录名称

查看文件内容

W

2

在目录下增、删、改文件与目录名称

修改文件内容

X

1

可以用cd命令进入目录

可执行。一般为程序或脚本

2、文件隐藏属性:

Linux下的文件还有一些隐藏属性,使用lsattr来显示。

1)命令:lsattr      描述:查看文件系统属性

用法:lsattr 选项 文件名

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

-d      #若目标是目录,仅列出目录本身属性

  1. 命令:chattr(超级用户可用)  描述:文件系统属性

用法:chattr [+- ] [选项] 文件或目录

选项:

i属性:

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

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

  文件:不能写入,删除,可读

目录:不能创建文件,不能删改文件,可修改已有文件(但不会变更属

文件属性如,uid gid)

a属性:

 文件设置a属性,那么只能在文件中增加数据,但是不能删

除也不能修改数据;

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

        文件:只能在文件内增加数据(不能vim,只能echo),但无法修改已有数据

        目录:只允许建立和修改文件,不能改变文件名,但不允许删除

e: Linux中绝大多数的文件都默认拥有e属性。表示该文件是使用ext

文件系统进行存储的,而且不能使用“chattr -e”命令取消e属性

目录读取原理:

        目录中记录了文件的文件名和其inode号

        目录中的inode1号对应block记录了文件内容的inode2

        再通过inode2找到文件内容的block

2)echo命令:输出内容

     追加内容给新文件: echo “xxx”>>文件  #将xxx内容添加到文件内

                        echo  “xxx” > 文件  #内容覆盖文件

3)文件权限的修改:

命令:chmod     描述:改变文件或目录权限。

用法:chmod 【选项】 权限 文件或目录

选项:-R     #递归将权限应用于所有的子目录与子文件。

chmod命令参数中,u代表所有者,g代表所属组,o代表其他用户,a代表所有人。

4)文件归属修改:

命令:chown

描述:修改文件或目录的所有者与所属组。

用法:chown 【选项】 【所有者】:【所属组】 文件或目录

选项:-R   #递归将权限应用于所有的子目录与子文件。

3、文件的特殊权限:

四位数字代权限

第一位含义

第二位含义

第三位权限

第四位权限

SUID(4)权限

SGID(2)权限

SBIT(1)权限

所有者权限

rwx

SUID:s (有执行时s替换)

S(有执行时S替换)

x用同一位置

所属组权限

rwx

GUID:s (有xs替换)

S(无xS替换)

x用同一位置

其他人权限

rwx

SBIT:t(有xt替换)

T(无xT替换)

x用同一位置

        在多用户多任务的Linux系统里,每个进程的运行都与运行的用户和组相关联。除了进程识别号(PID)以外,每个进程还有另外4个用户和用户组相关的识别号。他们分别是:实际用户识别号(real user ID,RUID)、实际组识别号(real group ID,RGID)、有效用户识别号(effect user ID,EUID)、有效组识别号(effect group ID,EGID)。EUID和EGID的作用在于确定一个进程对其访问的文件的权限和优先权。一般情况下,

EUID、EGID与RUID和RGID相同。设置了SUID和SGID情况除外。

1.SUID权限:

        当一个具有执行权限的文件设置SUID权限后,用户执行这个文件时将以文件所有者的身份执行。

特点:

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

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

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

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

例:

        可执行文件/usr/bin/passwd所属用户是root(UID为0),此文件被设置了SUID权限。当一个UID为1000、GID为1000的用户执行此命令时,产生的进程RUID和RGID分别是1000和1000,EUID是0、EGID是1000。

        经过前边对passwd命令的学习,每个用户都可以使用passwd(该命令的绝对路径是/usr/bin/passwd)来修改自己的密码。系统用来记录用户名和密码的文件分别 为/etc/passwd和/etc/shadow,命令执行最终的结果是修改/etc/shadow中对应的密码。对于这个文件,只有root用户有读权限,而普通用户在修改密码时最终也会修改这个文件。

添加或删除SUID的命令格式为:

chmod u+s /usr/bin/passwd    #添加SUID权限

chmod u-s /usr/bin/passwd   #删除SUID权限

2.SGID权限:

        SGID权限的功能和SUID类似。如果某个二进制文件的用户组权限设置了SGID权限。则在执行该文件时,用户将获得该文件所属组的权限。

        SGID也可以针对目录生效。在设置了SGID权限的目录下建立文件时,新创建的文件的所属组会继承上级目录的权限

        我们在使用locate命令查找文件的时候,实际上是查询了/var/lib/mlocate/mlocate.db数据库。作为普通用户,能够正常使用locate命令的原因,就在于locate命令本身具有SGID权限。

添加或删除SGID的命令格式为:

chmod g+s /usr/bin/passwd

chmod g-s /usr/bin/passwd

除了二进制程序之外,SGID也能用在目录上,这也是常见的用途。当

目录设置了SGID的权限后它将具有如下功能:

        1.用户在此目录下有效用户组将会变成该目录的用户组。

        2.若用户在此目录下具有w的权限,那么在创建新文件之后文件的所属组与目录的属组相同。

总结:

SGID针对文件:

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

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

        3)程序在执行过程中,程序的组会改变成程序文件的属组。

        4)SGID权限同样只在该程序执行过程中有效,也就是说组身份的转变在程序执行过程中有效。

SGID针对目录:

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

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

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

3.Sticky BIT权限:

        sticky权限只能用于设置在目录上,设置了这种权限的目录,任何用户都可以在该目录中创建或修改文件,但只有该文件的创建者、目录的拥有者和root可以删除自己的文件。在RedHat或CentOS系统中/tmp目录就拥有sticky权限

特点:

        谁创建谁删除

4.ACL权限:

        ACL(access control list)访问控制列表,可以对单一的用户或者组设置对文件或目录的独立rwx权限。

1)开启ACL权限

        由于ACL是传统的Unix-like操作系统权限的额外支持项目,因此要使用ACL必须要有文件系统的支持才行。目前绝大部分的文件系统都支持ACL的功能,包括EXT3/EXT4,JFS,XFS等。

ext系列:

文件系统查询命令格式:dumpe2fs -h 分区设备名称

Linux系统管理---权限管理_第1张图片

假如没有开启ACL权限,手动开启分区ACL权限。

此命令执行后是临时让/分区有ACL权限,重启后失效。

若永久开启ACL需要修改配置文件/etc/fstab文件:

Linux系统管理---权限管理_第2张图片

xfs文件系统:

        xfs文件系统是centos7中默认使用的文件系统(旧版本通常为ext系列),XFS文件系统默认开启ACL权限。因为是不同的文件系统,所以查询的方式也并不相同:

#在返回信息中:

第一条说明了:系统在219运行系统模式,其中就包含了ACL。

第二条说明了:具有ACL、安全属性、没有启用调试的SGI XFS。

dmesg 命令:

显示linux内核的环形缓冲区信息,我们可以从中获得诸如系统架构、cpu、挂载的硬件,RAM等多个运行级别的大量的系统信息。

  1. ACL权限的使用描述:

setfacl:设置访问控制列表。

用法:setfacl 【选项】 {-m|-x} {u:username:rwx} 文件或目录

选项:

-b   #删除所有ACL条目

-m   #添加ACL条目

-x   #删除指定用户的ACL权限

-R   #实现目录上的ACL权限递归

-d   #设置默认ACL权限(对目录生效)

例:为user1用户对anaconda-ks.cfg添加ACL权限:

Linux系统管理---权限管理_第3张图片

         (首先查看文件,此时没有ACL权限设置)

Linux系统管理---权限管理_第4张图片

(设置ACL权限为rwx后,用getfacl命令查看)

Linux系统管理---权限管理_第5张图片

(-x选项为删除某项的ACL权限,也就是某用户对文件(或目录)的ACL权限)

Linux系统管理---权限管理_第6张图片

(给root家目录下anaconda-ks.cfg文件设置ACL权限)

Linux系统管理---权限管理_第7张图片

(再设置两条用-b选项看效果)

Linux系统管理---权限管理_第8张图片

(可以看到setfacl命令-b选项一次性清空了所有ACL权限)

在ACL权限里可以添加-R选项来递归设置ACL权限,具体格式是:

setfacl -R -m u:user:rwx  /目录

mask:

        在ACL权限里还有mask的相关设置,可以把mask理解为有效权限。它的意思就是用户或组的权限必须要存在于mask的权限设置范围内才能生效。下面请看实例:

Linux系统管理---权限管理_第9张图片

(给user1用户在/test/目录赋予rwx的ACL权限)

Linux系统管理---权限管理_第10张图片

(为test目录设置mask为r可读。再次查看发现ACL权限出现了变化。

user1的ACL权限在加上mask之后只有r权限。)

        注:  为/test/添加默认最大权限(mask)为r,其他ACL权限不得超出此权限。但mask的设置必须遵循最后设置原则,其他ACL权限设置完成后最后设置mask默认ACL才能正常生效。

在生产环境中我们通常将mask默认设置成rwx,然后针对不同的用户和用户组规定他们权限

5.sudo命令:

sudu命令必须要对文件有读权限才能提升为root

        而如果要切换的用户是root就要知道root的密码。在系统中root的权限是最大的,如果很多人都知道root密码以后那么是非常不安全的。为了避免这种情况我们还可以使sudo命令,在使用sudo命令时只输入自己的密码即可。sudo的使用方式是在sudo后加上需要执行的命令。

1)sudo执行流程如下:

1.当用户执行sudo时系统会在/etc/sudoers文件中查找该用户是否有执行sudo的权限。

2.若用户具有执行sudo的权限后,系统会让用户输入自己的密码来确认。

3.密码输入成功,开始进行sudo后续的命令。但root执行sudo不需要输入密码(如果切换的用户与执行者的身份相同也不用输入密码)。

因为在sudo执行的时候要去检查/etc/sudoers文件,所以先要对/etc/sudoers文件进行修改,让该账号能够使用全部或部分的root命令功能。(可以用visudo命令打开文件进行修改,在退出时如果有语法错误会提示)

例:

(vim /etc/sudoers 添加user1的sudo权限)

格式为:

用户账号   登录者的来源主机名=(可切换的身份) 可执行的命令

所以上面两行的意思是:

1.用户账号:系统默认为root可以使用sudo命令。后添加user1用户。

2.可以被管理的服务器的网络地址,写自己或者ALL代表任何来源地址都可以管理本台服务器。

3.可切换身份:这个账号可以切换成什么身份来执行后续的命令。

4.可执行的命令:这个命令必须写绝对路径。

ALL:代表任何身份,任何主机,任何命令。

修改完成后切换用户查看sudo命令效果:

Linux系统管理---权限管理_第11张图片

在/etc/sudoers配置文件中,也可以添加授权组使用sudo命令:

(在本机中还有user2用户,默认组为user2。添加组的时候在组名添加%即可。之后保存退出。)

(用户为user2,组为user2组使用sudo命令查看/etc/shadow文件)

Linux系统管理---权限管理_第12张图片

(命令执行成功)

例:给user1用户授权重启命令,创建用户命令和修改用户密码命令。

        ( 授权user1用户拥有重启服务器,更改密码,创建用户的权限,但是隐患是被授权的user1用户可以用此命令修改root密码

(在修改密码命令之后添加了

/usr/bin/passwd [A-Za-z]*,!/usr/bin/passwd"",!/usr/bin/passwd root)

第一条就是说用passwd命令可以修改的范围包括A-Z和a-z开头的用户名。

第二条,不能用passwd给“”(空)改名。

第三条,/usr/bin/passwd改名对象不能是root。

sudo和su命令的组合使用:

这样可以让user1不知道root用户密码的情况下使用“sudo su - root”切换用户身份至root。

6、权限总结

权限

目录

文件

r读

查看目录下的文件与目录名称

查看文件内容

w写

在目录下增删,改,查文件与目录名称

修改文件内容

x执行

可以用cd进入到目录

可执行,一般为程序或脚本

i属性

不能进行创建文件,不能删除文件

可修改有权限的文件已有文件

只读

a属性

只允许建立和修改有权限的文件,不能改名,但不允许删除

只能追加数据

ACL(访问控制列表)

让特定用户和组拥有目录的rwx

让特定用户和组拥有文件的rwx

SGID

用户在此目录下有效用户组会变成改目录的用户组

SUID(对范围生效)

用户执行这个文件时将以文件所有者身份执行(让用户有权限执行)

(仅在执行程序时)

SGID

用户执行这个文件时将以文件所属组身份执行

sudo(对单个用户)

在/etc/sudoers授权用户一部分权限,使用户可以在自己账户内执行一些root命令

你可能感兴趣的:(温故知新,p2p,linux,debian)