本文共 5999 字,大约阅读时间需要 19 分钟。
一.文件权限存在的意义
文件权限的存在是系统最底层安全设定方法之一,保证文件可以被可用的用户做相应操作。二.文件权限的查看
ls -l file 查看文件信息ls -ld dir 查看目录本身信息ll file ##相当于ls –l filell -d dir ##相当于ls -ld dir ls –LR dir ##递归显示子目录
ls -l file
ll file ##相当于ls –l file ll -d dir
注意:alias ##利用该命令可以查询到此系统下的命令的别名
ls –LR dir
三.权限的读取
d|rw-rw-r–| |kiosk|kiosk| 0 |Jul 21 18:26|file[1] [2] [3] [4] [5] [6] [7] [8]
- | 空文件,或者文本 |
---|---|
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监控
1.更改文件拥有者
chgrp group file|dir 改变文件或者目录的用户组chgrp -R group dir 递归改变目录的用户组
改变文件的用户组
chmod 可以通过+(增加权限)或者-(去掉权限)来改变权限
(1) 对权限的理解
r: 对文件:是否可以查看文件中的内容 —→cat filew:
对文件:是否可以改变文件里面记录的字符对目录:是否可以对目录中子目录或子文件的元数据进行更改
对目录:是否可以进入目录
== chmod <u/g/o><+/-/=><r/w/x> file/dir 对文件或者目录进行修改权限==
chmod u+x /mnt/westos/testchmod g-r /mnt/westos/hellochmod ug-r /mnt/westos
chmod u=r,g+x /mnt/file1 chmod –r /mnt/file2chmod 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=—随堂测试:
五.umask
umask 系统建立文件时默认保留的权利
(1)查看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” ];then60 umask 022 ##普通用户的umask61 else62 umask 077 ##超级用户的umask63 fi
70 if [ $UID –gt 199 ] && [ “id –gn” = “id –un” ];then71 umask 00272 else73 umask 07774 fi
超级用户由原来的0022变成0077
六.特殊权限
1.sticky ##粘制位
作用:只针对目录有效,当一个目录上有sticky权限时,在这个目录中的文件只能被文件的所有者删除
设定方式:chmod o+t dirchmod 1xxx dir 两者功能相同
实验如下:
1.首先可以创建一个监控,实时观看/westos目录的权限变化
tom用户把harry建立的文件file2删除了,也就说明别人可以删除不是自己建立的文件
总结:当一个目录上有sticky权限时,在这个目录中的文件只能被文件的所有者删除
sgid ##强制位
设定方式:
chmod g+s file/dirchmod 2xxx file/dir 两者功能相同
作用:
1)对目录:当目录上有sgid权限时任何人在此目录中建立的文件都属于目录的所有组实验如下:
用watch -n 1 " ls -ld /westos ; ls -l /westos " 进行监控
1.mkdir /westos2.ls -ld /westos 此时可以看到/westos的目录权限为755
3.useradd westos 增加一个用户4.chgrp westos /westos 在watch监控下可以看到原来用户组root变成了westos5.touch /westos/file 可以看到此时的file用户组还是root
6.chmod g+s /westos 给用户组加权限,使任何人在此目录中建立的所有文件都属于此目录的所有组7.ls -ld /westos 可以看见权限改变,用户组的权限改为r-s
su - westos 切换到普通用户westostouch /westos/file2 失败,因为不具有写的权力 exitsu - rootchmod g+w /westos 注意:这一步也可以写在前面,也可以直接chmod 777 /westos 在前面设定之后就可以在westos用户直接建立/westos/file3su - westostouch /westos/file3 可以看到即使是普通用户westos建立的file3 它的文件用户组依旧是westos
总结:用了chmod g+s /westos
任何人在此目录中建立的所有文件都属于此目录的用户组
2)对文件:只针对与二进制可执行文件,当文件上有sgid时任何人执行此文件产生的进程都属于文件的组
实验如下:
因为对文件的时候只对二进制可执行文件有效,所以我们用==/bin/watch==进行实验
对进程的监控 ps -ax -o user,group,comm | grep watch
1.ls -l /bin/watch 查看/bin/westos2./bin/watch -n 1 date 运行一个进程3.用ps -ax -o user,group,comm | grep watch监控 发现用户是root用户组也是root4.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用户的用户组变成了westos3.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 filechmod 4xxx file 两者功能相同
作用:只针对与二进制可执行文件,当文件上有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列表中删除用户harrysetfacl –x g:shengchan file ##从acl列表中删除组shengchan
关闭acl列表
setfacl -b file ##关闭file上的acl列表
(4)mask的值
在权限列表中mask标志能生效的权力值,当用,mask值会发生改变实验如下
用watch命令监视:chmod g+w /mnt/file
或者setfacl –m m:rw /mnt/file
acl默认权限只针对目录设定,“acl权限只针对设定完成之后新建的文件或目录生效,而已经存在的文件是不会继承默认权限的”
setfacl –m d:u:student:rwx /mnt/westos 设定acl默认权限
setfacl –k /mnt/westos 删除设定的默认权限
转载地址:http://hvjvb.baihongyu.com/