linux下的权限管理

一.文件权限存在的意义
文件权限的存在是系统最底层安全设定方法之一,保证文件可以被可用的用户做相应操作。

二.文件权限的查看

ls  -l      file             查看文件信息
ls  -ld     dir             查看目录本身信息
ll          file            ##相当于ls –l file
ll   -d      dir            ##相当于ls  -ld   dir 
ls   –LR     dir            ##递归显示子目录

ls -l file
在这里插入图片描述
ls -ld dir
在这里插入图片描述

ll file ##相当于ls –l file
ll -d dir

在这里插入图片描述

注意:alias           ##利用该命令可以查询到此系统下的命令的别名

ls –LR dir
在这里插入图片描述
总结:通过使用命令ls –lR dir 可以递归查看dir(目录)下的所有目录、文件和目录下的文件

三.权限的读取

d|rw-rw-r–| |kiosk|kiosk| 0 |Jul 21 18:26|file
[1]  [2]  [3]  [4]  [5]  [6]      [7]     [8]

在这里插入图片描述
[1]文件的类型:

- 空文件,或者文本
d 目录
l 软连接,相当于快捷方式
s socket套接字(一个程序对外开放的门)
b block块设备
c 字符设备
p 管道

[2]文件的权限
| rw- |rw- | r–
三位为一位,分别代表的是user,group,other(简写为u,g,o)
u:文件拥有者对文件能做什么操作
g:文件所有组对文件能做什么操作
o]:其他人对文件能做什么操作

[3]:
对文件:文件硬链接个数(文件内容被记录的次数)
对目录:目录中子目录的个数

[4]文件的所有人

[5]文件的所有组

[6]:
对文件:文件大小
对目录:目录中子文件元数据(matedata元数据可以理解为文件案的属性)大小,文件夹的时间戳不算

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

[8]文件的名称

三.如何改变文件所有人和所有组

chown

chown           username        file|dir      更改文件拥有者
chown           user-group      file|dir       更改文件或者目录的用户和用户组
chowm    -R     user-group      dir           递归更改目录的用户和用户组

watch监控
在这里插入图片描述
(为了实验效果明显方便,我们用watch监控)

1.更改文件拥有者
在这里插入图片描述
2.改变更改文件或者目录的用户和用户组在这里插入图片描述
递归更改了目录的用户
在这里插入图片描述
chgrp

chgrp        group     file|dir        改变文件或者目录的用户组
chgrp   -R   group        dir           递归改变目录的用户组

改变文件的用户组
在这里插入图片描述
递归改变目录的用户组
在这里插入图片描述
四.如何改变权限

chmod       可以通过+(增加权限)或者-(去掉权限)来改变权限

(1) 对权限的理解
r:
对文件:是否可以查看文件中的内容 —→cat file
在这里插入图片描述
对目录:是否可以查看目录中有什么子文件或者子目录 --→ls dir
在这里插入图片描述

w:
对文件:是否可以改变文件里面记录的字符

在这里插入图片描述
不可编辑,这个文件是只读的
在这里插入图片描述
在这里插入图片描述
可以看出结果:我们可以对文件进行编辑了。

对目录:是否可以对目录中子目录或子文件的元数据进行更改
在这里插入图片描述
x:
对文件:是否可以通过文件名称调用文件内记录的程序
先建立一个文件,在文件里写入date命令
在这里插入图片描述
在这里插入图片描述
sh是一个命令解释器。这里加上r是因为只有读了才能知道是什么命令,才能够执行

对目录:是否可以进入目录

在这里插入图片描述
(2) 更改方式

== chmod <u/g/o><+/-/=><r/w/x> file/dir 对文件或者目录进行修改权限==

chmod   u+x    /mnt/westos/test
chmod   g-r    /mnt/westos/hello
chmod   ug-r   /mnt/westos

在这里插入图片描述

chmod  u=r,g+x     /mnt/file1 
chmod    –r        /mnt/file2
chmod   o=rw-      /mnt/file3

在这里插入图片描述

(3) rwx对应的数字

r 4
w 2
x 1

(分别是2的进制)
7=rwx,6=rw-,5=r-x,4=r–,3=-wx,2=-w-,1=–x,0=—

在这里插入图片描述

随堂测试:
在这里插入图片描述
1.新建用户要求我们在前面已经做过(前一篇博客)这里就不做解释。
首先新建目录
在这里插入图片描述
已经建好的用户
在这里插入图片描述
修改权限
在这里插入图片描述
检查:
在这里插入图片描述

五.umask

umask         系统建立文件时默认保留的权利

(1)查看umask的值是多少:

超级用户的umask
在这里插入图片描述
普通用户的umask
在这里插入图片描述
临时设定umask

umask     XXX          XXX是你要预留的权利,比如umask   007

总结:
系统默认中,超级用户是777-022
普通用户是777-022-111

永久更改umask
1.
vim /etc/profile ##系统配置文件

59 if [ $UID –gt 199 ] && [ “id –gn” = “id –un” ];then
60 umask 022       ##普通用户的umask
61 else
62 umask 077      ##超级用户的umask
63 fi

在这里插入图片描述
在这里插入图片描述
原始的如上图,将其数字改为下图的样子
在这里插入图片描述
2.
vim /etc/bashrc ##shell配置文件

70 if [ $UID –gt 199 ] && [ “id –gn” = “id –un” ];then
71 umask 002
72 else
73 umask 077
74 fi

在这里插入图片描述
在这里插入图片描述
改为下图
在这里插入图片描述
3.
source /etc/profile ##调用,让更改立即生效
source /etc/bashrc

在这里插入图片描述
结果:

超级用户由原来的0022变成0077
在这里插入图片描述
普通用户由0002变成0022
在这里插入图片描述

六.特殊权限
1.

sticky ##粘制位

作用:只针对目录有效,当一个目录上有sticky权限时,在这个目录中的文件只能被文件的所有者删除
设定方式:

chmod    o+t     dir
chmod    1xxx    dir     两者功能相同

实验如下
1.

首先可以创建一个监控,实时观看/westos目录的权限变化在这里插入图片描述
tom建立一个file1,harry建立一个file2

在这里插入图片描述

tom用户把harry建立的文件file2删除了,也就说明别人可以删除不是自己建立的文件
在这里插入图片描述
为了解决这个问题,我们可以进行以下操作

在这里插入图片描述

总结:当一个目录上有sticky权限时,在这个目录中的文件只能被文件的所有者删除

sgid ##强制位

设定方式:

chmod    g+s      file/dir
chmod    2xxx     file/dir        两者功能相同

作用:
1)对目录:当目录上有sgid权限时任何人在此目录中建立的文件都属于目录的所有组

实验如下:

用watch -n 1 " ls -ld /westos ; ls -l /westos " 进行监控

在这里插入图片描述

1.mkdir    /westos
2.ls  -ld  /westos  此时可以看到/westos的目录权限为755

在这里插入图片描述

3.useradd   westos            增加一个用户
4.chgrp     westos  /westos   在watch监控下可以看到原来用户组root变成了westos
5.touch     /westos/file          可以看到此时的file用户组还是root

在这里插入图片描述
为了解决这个问题,我们进行一下操作

6.chmod  g+s  /westos   给用户组加权限,使任何人在此目录中建立的所有文件都属于此目录的所有组
7.ls   -ld    /westos        可以看见权限改变,用户组的权限改为r-s

在这里插入图片描述
touch /westos/file1 可以看到file1的用户组为westos
在这里插入图片描述
再次检测:

su   -   westos      切换到普通用户westos
touch /westos/file2  失败,因为不具有写的权力 
exit
su   -    root
chmod g+w /westos   注意:这一步也可以写在前面,也可以直接chmod 777 /westos  
                     在前面设定之后就可以在westos用户直接建立/westos/file3
su   -    westos
touch  /westos/file3  可以看到即使是普通用户westos建立的file3 它的文件用户组依旧是westos

在这里插入图片描述
也可以在再建立普通用户,在里面建立文件,看是否用户组属于westos

在这里插入图片描述

总结:用了chmod g+s /westos 任何人在此目录中建立的所有文件都属于此目录的用户组

2)对文件:只针对与二进制可执行文件,当文件上有sgid时任何人执行此文件产生的进程都属于文件的组

实验如下:

因为对文件的时候只对二进制可执行文件有效,所以我们用==/bin/watch==进行实验

对进程的监控 ps -ax -o user,group,comm | grep watch

在这里插入图片描述

1.ls  -l  /bin/watch         查看/bin/westos
2./bin/watch -n 1 date       运行一个进程
3.用ps -ax -o user,group,comm | grep watch监控   发现用户是root用户组也是root
4.ctrl+c 退出进程
5.chgrp westos /bin/watch     将/bin/watch 的用户组改为westos。
6./bin/watch -n 1 date         运行一个进程
7.ps -ax -o user,group,comm | grep watch监控  发现我们修改了用户组,但是root的用户组没改变

在这里插入图片描述
但是此时我们需要将文件用户组改为我们设定的用户组

1.chmod   g+s   /bin/watch   赋予这个文件权限,将其用户组改为我们设定用户组
2. ls     -l   /bin/watch    查看/bin/westos 发现用户组的权限改为r-s

在这里插入图片描述

1. /bin/watch -n 1 date       运行一个进程
2.ps -ax -o user,group,comm | grep watch监控  发现root用户的用户组变成了westos
3.useradd  cui                建立一个新的用户  (已经建立就不用建立了)
4.su - cui                    切换到普通用户
5./bin/watch -n 1 date         运行一个进程
6.用ps -ax -o user,group,comm | grep watch监控    发现watch命令用户是cui 用户组已经改为了westos

在这里插入图片描述

说明用此命令,任何人执行此文件产生的进程,它的用户组都属于文件的用户组(也就是我们设定的用户组)

3
.suid ##冒险位

设定方式:

chmod   u+s   file
chmod   4xxx   file       两者功能相同

作用:只针对与二进制可执行文件,当文件上有suid时任何人执行这个文件中程序产生的进程都属于文件的所有人

实验如下:

在这里插入图片描述
此时我们需要无论谁产生的这个进程,都属于我们的设定的文件所有人
步骤如下:
在这里插入图片描述
结果如下:
在这里插入图片描述
再次验证:
在这里插入图片描述
总结:当文件上有suid时任何人执行这个文件中程序产生的进程都属于文件的拥有者

七.acl权限列表
(1)作用:让特定的用户对特定的文件拥有特定权限
(2)acl列表查看

 -rw-rwxr–+  1  root  root 0 Jul 21 14:25 file      1中权限中的“+”即为acl开启

在这里插入图片描述
getfacl file查看acl开启的文件的权限
在这里插入图片描述

file : file 文件名称
owner : root 文件拥有者
group : root 文件拥有者
user::rw- 文件拥有人的权限
user::kiosk:rwx 指定用户(kiosk)的权限
group::r– 文件拥有组的权力
mask::rwx 能赋予用户的最大权力值
other::r– 其他人的权限

(3)acl列表的管理

从acl列表增加

setfacl –m u:harry:rwx file          ##设定harry对file拥有rwx权限
setfacl –m u:harry:0 file            ##设定harru对file拥有0权限
setfacl –m g:shengchan:rwx file      ##设定shengchan对file拥有rwx权限

在这里插入图片描述

从acl列表删除

setfacl –x u:harry file              ##从acl列表中删除用户harry
setfacl –x g:shengchan file          ##从acl列表中删除组shengchan

在这里插入图片描述

关闭acl列表

 setfacl  -b  file                     ##关闭file上的acl列表

在这里插入图片描述
上面的‘+“消失不见了,说明关闭了acl列表

(4)mask的值
在权限列表中mask标志能生效的权力值,当用,mask值会发生改变

实验如下
用watch命令监视:

在这里插入图片描述
设定westos对/mnt/file拥有rw权限

在这里插入图片描述
在这里插入图片描述如果要恢复mask的值,输入以下命令:chmod g+w /mnt/file 或者setfacl –m m:rw /mnt/file
在这里插入图片描述
在这里插入图片描述
(5)acl的默认权限设定

acl默认权限只针对目录设定,“acl权限只针对设定完成之后新建的文件或目录生效,而已经存在的文件是不会继承默认权限的”

setfacl  –m  d:u:student:rwx  /mnt/westos      设定acl默认权限

在这里插入图片描述
在这里插入图片描述

setfacl  –k  /mnt/westos        删除设定的默认权限

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/bmengmeng/article/details/89002826
今日推荐