栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

Part5——Linux系统中的权限管理

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Part5——Linux系统中的权限管理

一、权限查看及读取 1、权限查看
ls -l file             #查看文件权限

ls -ld dir             #查看目录权限
2、权限的读取

文件的属性被称为文件的元数据(meta data),一种元数据用1个byte来记录内容。

ls -l a
>> -rw-rw-r--. 1 westos westos 0 Oct  5 11:03 a
ls -ld zzh/
>> drwxrwxr-x. 2 westos westos 6 Oct  5 11:04 zzh/

(1)文件权限信息:

-     |      rw-rw-r--    |    .     |     1     |    westos    |     westos    |    0    |     Oct  5 11:03     |    a

[1]             [2]              [3]        [4]             [5]                    [6]           [7]                 [8]                  [9]

(2)目录权限信息:

d    |     rwxrwxr-x    |    .     |     2     |    westos    |     westos    |   6    |    Oct  5 11:04     |  zzh/

[1]               [2]             [3]         [4]             [5]                 [6]             [7]                 [8]               [9]

(3)每一位代表含义:

[1]:文件类型

                < - >普通文件                目录                软连接                块设备

                字符设备                socket套接字                

管道 |

[2]:用户权限        rw- |  r--  |  r-- 分别代表u(user)、g(group)、o(others)用户的权限。

[3]:系统的selinux开启

[4]:对于文件:文件内容被系统记录的次数(硬连接个数)

        对于目录:目录中子目录的个数

[5]:文件所有                

[6]:文件所有

[7]:对于文件:文件内容大小

        对于目录:目录中子文件的元数据大小             

[8]:文件内容被修改的时间

[9]:文件(或目录)名称

二、普通权限的类型及作用 1、用户对文件的身份

u:user,文件的所有者(也称拥有者)

g:group,文件的所有组(也称拥有组)

o:others,既不是拥有者也不是拥有组的其他用户的通称

2、权限位

  rxw     |     r--    |    r--

    u             g           o

3、用户身份匹配

user   >   group   >   other

4、权限类型

< - >:权限未开启

< r >:可读(read)

            对于文件:可以读取文件内容;对于目录,可以列出目录中的文件

< w >:可写(write)

            对于文件:可以更改文件内容;对于目录,可以在目录中新建或删除文件

< x >:可执行(execute)

             对于文件:可以用文件名称调用文件内记录的程序;对于目录:可以进入目录中

三、设定普通权限的方法 chmod:设定文件权限

(1)复制权限

chmod --reference=/tmp /mnt/westosdir       
#复制/tmp目录的权限到/mnt/westosdir上

chmod -R  --reference=/tmp /mnt/westosdir        
#复制/tmp目录的权限到/mnt/westosdir及目录的子文件上,<-R>代表递归操作

chmod --reference=/tmp ./zzh      #复制/tmp目录的权限到./zzh上

这里可以看出,目录的权限是,新建的文件夹的权限是,使用此命令复制权限后,目录的权限也变成了,但是对目录下的文件的权限并没有改变。

chmod -R  --reference=/tmp ./zzh1        #复制/tmp目录的权限到./zzh1及目录的子文件上,<-R>代表递归操作

这里可以看出,此命令加上了参数<-R>,复制权限时也会让目录下的文件获得相同的权限

(2)字符方式设定权限

chmod < a | u | g | o >< + | - | = >< r | w | x > file        #用字符方式设定权限

chmod   < a | u | g | o >< + | - | = >< r | w | x >   file        #用字符方式设定权限

例如:

chmod u-rw  ./test/test1                         #对文件位权限减去
chmod g+x ./test/test2                           #对文件位权限增加
chmod o=wx ./test/test3                        #对文件位权限更改为
chmod a=rwx ./test/test4                       #对文件的所有位(即位)权限更改为
chmod u=rwx,g=---,o=rx ./test/test5     #对文件位权限更改为位权限更改为<--->、位权限更改为

chmod -R a=rx  ./test                    #对目录及目录下所有文件的所有位(即位)权限更改为

这里可以看出,经过此操作后,目录和目录下的文件权限都更改为

 chmod a=w  ./test                #对目录的所有位(即位)权限更改为

这里因为没有设置参数<-R>,所以此操作仅对目录本身有效。

(3)数字方式设定权限

权限布尔数(bool)指表示方式,即三位二进制数可以表示的范围,权限有则代表1,没有则代表0

rwx     = 111     = 7

rw-     = 110     = 6

r-x     = 101     = 5

r--     = 100     = 4        = r

-wx     = 011     = 3

-w-     = 010     = 2        = w

--x     = 001     = 1        =x

---     = 000     = 0

这样就可以把权限转化成相应的数字,可以更方便地进行权限管理。

这里先用命令查看目录的属性,可以看出它的权限是<-w--w--w->,然后使用命令把权限参数设置成<777>,意味着都设置成了,命令执行完后可以看到目录的权限已经改为了

四、系统默认权限设定 1、为什么要设置默认权限?

答:系统本身存在的意义是共享资源,从安全角度讲系统共享的资源越少、开放的权力越小,系统的安全性就越高;因此既要保证系统安全,又要系统创造价值,就要把应该开放的权力默认开放,把不安全的权力默认保留。所以如何保留权力就需要系统管理人员设定。

2、umask:表示系统保留权力

(1)临时设定系统预留权力

umask                                #查看保留权力

umask 保留值                   #临时设定系统预留权力

注意:

目录默认权限 = 777 -

文件默认权限 = 777 - - 111(这里的111是内核设定值,记住就行)

这里先用查看系统预留权限是<0022>,第一位是特殊位,稍后会细讲,后三位“022”就是分别预留的权限,所以预留的权限是<-,w,w>,使用命令查看新建的目录 的权限是;接下来使用把系统保留权限设置为<000>,也就是说系统不再保留权限了,新建的目录的权限是

由于文件的默认权限要比目录的默认权限少<111>也就是三个位都缺少,所以创建的文件的权限是,修改保留权限为<000>后,创建的文件的权限是

 (2)永久更改系统预留权力

永久更改系统预留权力分为三步,涉及到对系统配置文件的更改,而且预留权力越大(也就是值越大,系统安全性越高),所以一般不轻易改变。这里简单介绍一下修改步骤。

第一步:更改shell系统配置文件

vim /etc/bashrc        #shell系统配置文件

使用命令更改配置文件,定位到第74行左右,把if语句中else的值修改

74   if [ $UID -gt 199 ] && [ "`id -gn`" = "`id -un`" ]; then
75       umask 002                #普通用户的umask
76   else
77       umask 022                #root用户的umask
78   fi

这里改的是第77行:“<77       umask 022         #root用户的umask>”,把这一行的umask值从022改为其他值,修改后的值就是系统预留权力值。

第二步:更改系统环境配置文件

vim /etc/profile                #系统环境配置文件

使用命令更改配置文件,定位到第60行左右,把if语句中else的值修改

59    if [ $UID -gt 199 ] && [ "`id -gn`" = "`id -un`" ]; then
60        umask 002             #普通用户的umask
61    else
62        umask 022             #root用户的umask
63    fi

这里改的是第62行:“<62      umask 022        #root用户的umask>”,把这一行的umask值从022改为其他值,修改后的值就是系统预留权力值。

第三步:重新加载以上两个文件
修改完成后,这里需要重新加载这两个文件才能生效。

source /etc/bashrc       

source /etc/profile

这里通过把以上两个配置文件的系统保留权力值改为<777>,也就是说系统保留了所有权力,然后重新加载这两个文件后使用查看“0777”,表示已经修改成功。新建一个目录,使用查看其权限可以看出,由于系统保留了所有权限,所以新建的这个目录显示没有任何权限<--- --- --->。

 五、文件用户和用户组的管理
chown username file                    #更改文件拥有者

chgrp groupname file                   #更改文件拥有组

chown username:groupname file          #同时更改文件的拥有者和拥有组

chown | chgrp -R username | groupname dir        
                                      #更改目录本身及目录中内容的拥有者或者拥有组

状态监视窗口显示目前系统中存在的用户及用户组,这里我在桌面上新建了三个文件和一个目录,可以看出新建的这些文件默认的用户是默认的用户组也是

chown lee test1                                        #改变文件的用户为"lee"

chgrp linux test2                                       #改变文件的用户为“linux”

chown westoslee.westoslee test3        #改变文件的用户和用户组为“westoslee”

chown -R lee testdir        #更改目录及其目录下所有文件的用户为“lee”

chgrp -R linux testdir        #更改目录及其目录下所有文件的用户组为“linux”

这里分别执行了上述命令,从监控窗口可以看出,目录及其目录下所有文件的用户已经改为“lee”,用户组改为“linux”。

 六、特殊权限  1、什么是特殊权限?

答:特殊权限是直接控制三位是否开启或关闭的符号位,与之前的“数字方式设置权限”类似,三个位置的权限开启则表示1,关闭则表示0,所以分别由<4,2,1>表示;特殊位是在普通位之前的那一位。

2、stickyid:粘制位

针对目录:如果一个目录的“stickyid”开启后,那么这个目录中的文件只能被所有人删除。

(1)添加“stickyid”权限的方法:

chmod 1原始权限 dir

chmod o+t dir

(2)小实验:

第一步:先建立一个目录,然后使用赋予<777>权限。接下来使用用户和用户分别在目录下创建文件<./leefile>和文件<./westosfile>。

第二步:

切换到用户下对文件执行删除操作,发现原本属于其他用户的文件也可以被删除。

 第三步:

为了让每个用户只能删除自己的文件,我们对目录设置“stickyid”权限后(这里可以看到此目录的权限的“o”位已经由变成了),再次执行上述删除操作,可以看到汇报错显示“操作不被允许”,但是删除自己的文件还是可以的。

 3、sgid:强制位

针对目录:目录中新建的文件自动归属到目录的所属组中。

针对可执行文件:只针对二进制的可执行文件(c程序),当运行二进制可执行文件时都是用文件所有组身份运行,和执行用户无关。

(1)对目录来说:

添加“sgid”权限的方法:

chmod 2原始权限 dir

chmod g+s dir

小实验:

第一步:这里先用命令查看了用户的基本信息,可以看出此用户的所有组是,然后新建一个目录,并通过命令查到其权限改为,且此目录的所有人和所有组都是

第二步:先切换到用户下,在此目录中创建文件,可以看到这个文件所有人和所有组分别为。也就是说,目录没有开启“sigid”的时候,哪个用户创建的文件就属于哪个用户所在的用户组。

第三步:切换到root下,对目录执行,可以看到此目录的权限已经改为位的权限发生了变化,即目录的“sigid”权限已经开启,然后再切换到用户下,创建文件,可以看到新建的文件所有人和所有组分别为,和相比文件的所有组发生了改变。

第四步:再次切换到root下,使用命令将用户的所有组改为,然后切换到用户下,创建文件,可以看到新建的文件的所有人和所有组分别为,和相比文件的所有组发生了变化。

注意:这里虽然文件和文件的所有组都属于,但两者有本质不同;文件是因为所在目录没有开启“sigid”权限,所以在这个目录中创建的文件的所有组与用户的所有组一致;文件是因为所在目录开启了“sigid”权限,所所以任何用户创建的文件都和目录的所有组保持一致。

(2)对可执行文件来说:

添加“sgid”权限的方法:

chmod 2原始权限 可执行文件

chmod g+s 可执行文件

chmod g+s /bin/cat         #修改此程序的位,使得此文件以文件拥有组身份运行

小实验:以程序为例

这里需要使用监测程序的命令:(这个命令是监测程序运行时的用户、用户组以及程序名称)

watch -n 1 "ps ax -o user,group,comm | grep cat"

 这里第一步:先用命令查看程序的属性,可以看到此程序的所有人和所有组都为,后台开了一个的进程,通过监控窗口可以看到,此程序运行时的所有组为

第二步:用命令将程序的所有人和所有组都改为用户,再次运行发现程序的所有组还是;这是由于我们并没有打开此程序的“sgid”权限。

第三步:使用命令打开此程序的“sigid”权限,然后可以看到程序的权限由变为了,再次运行cat程序,可以看到新运行的cat所有组变为了

4、suid:冒险位

对可执行文件:只针对二进制可执行文件(c程序),当运行二进制可执行文件是都是以文件拥有者身份运行,和执行用户无关。

(1)添加“suid”权限的方法:

chmod 4原属性 可执行文件
chmod u+s 可执行文件

chmod u+s /bin/cat         #修改此程序的位,使得此文件以文件拥有者身份运行

小实验:以程序为例

在上个实验的基础上,通过使得程序的位增加权限,即开启了此文件的“suid”权限,这就可以使这个程序运行时以文件的拥有者身份运行,通过命令可以看到,程序的文件拥有者是,所以再次运行此程序时,监测窗口可以看到此程序的是以用户身份运行的。

 七、acl权限列表  1、什么是acl权限列表?

答:acl(Aiccess Control Lists,访问控制列表),功能是在列表中可以设定特殊用户对于特殊文件的特殊权限。

2、acl列表开启标识

-rw-rw-r--. 1 westos westos 0 Oct  7 08:58 testfile
          ^

这里是< . >表示acl列表没有开启

-rw-rw-r--+ 1 westos westos 0 Oct  7 08:58 testfile
          ^  

这里是< + >表示acl列表已开启

测试:这里先创建了一个文件,通过命令可以看出目前还都是默认用户及用户组的权限;接下来通过命令加入用户的“rw”权限,在监测窗口可以看到特殊用户那一栏已经新增了用户及“rw”权限,值也变成了,表示赋予特殊用户和特殊用户组的最大权限。

注意:从< . >到< + >的转变过程,是因为先通过命令设置了此文件的acl列表,设置了以后就意味着打开了acl列表,如果要关闭的话,再次执行,就关闭了此文件的acl列表,< + >会变成< . >。

3、acl列表权限读取
getfacl testfile                #读取acl权限列表

显示内容分析:

#file: testfile                         #文件名称

#owner: root                        #文件拥有者

#group: root                         #文件拥有组

user : : rw-                            #文件拥有者权限

user : lee : rw-                     #特殊指定用户权限

group : : r--                           #文件拥有组权限

group : westos : --              #特殊指定的用户组的权限

mask : : rw-                         #能够赋予特殊用户和特殊用户组的最大权限阈值

other : : r--                           #其他人的权限

注意:当acl权限列表没有开启时,命令将不会显示上表中阴影部分的内容,使用命令设置了哪个权限上表中就会显示出哪个权限。

4、acl列表的控制

注意:当文件权限列表开启后,不要用的方式读取文件的权限,因为读不完整,这里要用专门的命令来读。

setfacl -m u:lee:rw testfile                        #设定特殊用户的权限

setfacl -m g:westos:rw testfile                #设定特殊用户组的权限

setfacl -m u: :rwx testfile                         #设定文件所有人的权限

setfacl -m g: :0 testfile                             #设定文件所有组的权限

setfacl -x u:lee testfile                             #删除列表中的用户

setfacl -b  testfile                                     #关闭acl列表

这里分为以下几步:

第一步:先创建一个文件,通过命令使用户拥有对此文件的权限,从监测窗口可以看到acl权限列表新增了一栏。

第二步:通过命令使用户组拥有对此文件的权限,从监测窗口可以看到acl权限列表新增了一栏。

第三步:通过命令使文件所有人拥有对此文件的< --- >权限,从监测窗口可以看到acl权限列表的那栏从之前的变成了< --- >。

第四步:通过命令使文件所有组拥有对此文件的权限,从监测窗口可以看到acl权限列表的那栏从之前的变成了

 第五步:通过命令执行删除用户的操作,在监窗口可以看到上一步中新增的用户已经消失了。

第六步:通过命令执行恢复文件默认权限的操作,在监窗口可以看到此文件的特殊用户权限都没有了,acl权限列表也恢复到了默认状态。

5、acl权限优先级

拥有者 > 特殊指定用户 > 权限多的组 > 权限少的组 > 其他

6、acl列表的mask控制

mask是能够赋予指定用户权限的最大阈值

注意:

(1)当设定完毕文件的acl列表后用命令缩小了文件拥有组的权力,mask值会发生变化。

(2)恢复之前的权限:setfacl -m m:权限 文件  。(这里的权限是指mask值。也就是说重置mask值。要改变文件的权限还是得通过命令来设置)

这里先用以上命令恢复了此文件的文件拥有组的权限,当出入参数为0时,文件的mask值为< --- >,然后重新通过命令设置用户的权限为,mask值也随之变为,再次使用上述命令设置mask值为0,通过监测窗口可以看到mask值已经变为< --- >,相应的特殊用户以及文件所属用户组的权限都失效了。

 7、acl列表的默认权限

setfacl -m u:lee:rwx /mnt/leedir                   #只对于/mnt/leedir目录本身生效

setfacl -Rm u:lee:rwx /mnt/leedir                #对于/mnt/leedir目录及目录下所有已存在文件生效

setfacl -m d:u:lee:rwx /mnt/leedir                #对于/mnt/leedir目录中新建的文件生效

八、attr权限

~~~~~~~~~~~~~~~未完待续~~~~~~~~~~~~~~~

九、总结

1、mask值的理解:在没有设置mask值时,mask值随着操作者赋予此文件(或目录)的特殊用户的特殊权限的变化而变化,当权限设定完成后,再次去设置mask值,这时候就可以看到,之前设置的那些权限会在这次设置的mask值范围内生效,超过mask值的范围,那些权限也就失效了。

转载请注明:文章转载自 www.mshxw.com
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号