1.文件权限的理解
1.文件权限读取
符号 | 含义 |
---|---|
U | 文件拥有者对文件的权限 |
G | 文件拥有组对文件的权限 |
O | 其他人对于文件的权限 |
2.权限类型
" - " (权限关闭)此位权限未开启
" r " (查看权限)对于文件可以查看文件中的内容;对于目录可以列出目录中的文件名称
" w "(可写权限)对于文件可以更改文件中记录的内容;对于目录来说可以对已经存在的文件与目录进行更名或删除,建立新的文件与目录,搬移该目录内的文件、目录位置
" x "(执行权权限)对于文件可以用文件名称调用文件内记录的程序;对于目录可以进入目录
2.文件权限设定方式
1.设定权限的方式
字符方式设定文件权限 | chmod [参数]… 权限模式,[权限模式]… 目标… |
---|---|
数字方式设定文件权限 | chmod [参数]… 权限值… 目标… |
依照模板复制文件权限 | chmod [参数]… --reference=模板 目标… |
2.字符方式设定权限
chmod <u/g/o/a><+/-/=><r/w/x> 目标
+ | 加入 |
---|---|
- | 除去 |
= | 设定 |
(1)建立实验环境,在/mnt新建目录westosdir及文件file1、file2、file3,并对其权限属性监控
(2)进行实验
chmod u+x file1 file1拥有者加入x权限
chmod +x file2 file2的用户、组、其他人加入x权限
注意:
chmod +w file 只能给file拥有者加入w权限,与+x,+r权限设定不同,要想用户、组、其他人均加入w权限,使用a+w或者ugo+w方式进行权限设定,如下图
chmod u-w,go+wx file1 file1拥有者除去w权限,组和其他人加入w,x权限
chmod ugo+x file3 file3用户、组和其他人都加入x权限
chmod -R go+w /mnt/westosdir westosdir目录及目录内所有文件的组、其他人都加入w权限
3.数字方式管理权限
权限可以用一个八进制数字来表示
权限 | 八进制 |
---|---|
- - - | 0(000) |
- - x | 1(001) |
- w - | 2(010) |
- wx | 3(011) |
r- - | 4(100) |
r - x | 5(101) |
rw- | 6(110) |
rwx | 7(111) |
权限管理模式:chmod 数字 目标
(1)chmod 000 file1 对file1用户、组和其他人都除去r、w、x权限
(2)chmod 644 file3 对file3设定权限为用户可读可写,组和其他人只读
(3)chmod -R 650 /mnt/westosdir 将westosdir目录及目录内所有文件设定为拥有者可读可写、组可读可执行、其他人没有开放任何权限
4.权限复制
复制权限方式:chmod - -reference=属性源文件 目标
先vim file2,写入内容hello world!
再用cp -p 命令将file2权限复制到file1中 会看到内容和权限设定都复制了过来
如果只要求将一个文件的权限属性复制给某个文件,则用chmod - -reference=属性源文件 目标模式
3.系统预留权限阀值
- 对于权限预留阀值的理解
从系统存在角度来讲,开放权力越大,系统存在意义越高
从系统安全角度来讲,开放权力越少,系统安全性越高
在系统中开放应开放的权利,保留不安全的权利以确保系统功能性及安全性,所以系统设定新建文件或目录会去掉一些权限 - 权限预留阀值设定
umask ##查看系统保留权限默认为022
umask 044 ##修改系统保留权力为044,此设定方式为临时设定,只在当前shell中生效
永久设定方式
vim /etc/bashrc ##设置shell中的权限
74 if [ $UID -gt 199 ] && [ “id -gn
” = “id -un
” ]; then
75 umask 002 ##普通用户的umask
76 else
77 umask 077 ##超级用户的umask
78 fi
vim /etc/bashrc ##设置系统的权限
59 if [ $UID -gt 199 ] && [ “id -gn
” = “id -un
” ]; then
60 umask 002 ##普通用户的umask
61 else
62 umask 077 ##超级用户的umask
63 fi
/etc/bashrc、/etc/profile,这两个文件umask设定值必须保持一致
source /etc/bashrc
source /etc/profile
让设定立即生效
4.特殊权限
- 对特殊权限的理解
SUID
只针对于二进制可执行文件 , 使用拥有SUID权限的文件触发其中记录的程序时以 SUID 文件拥有者的身份去执行
SGID
针对二进制可执行文件 : 该命令发起的程序是以该命令所有组的身份去执行
针对目录 : 目录新建文件的所属组与该目录的所有组保持一致
STICKYID
对于文件:表示文件即使没有被程序调用也会被加载到交换空间中,
对于目录:表示当目录上有 STICKYID 的权限时 , 所有用户在该目录下均可创建文件 , 但只有文件拥有者和 root 用户可以删除该目录下的文件 - 对特殊权限的设定
SUID | chmod u+s (4源文件属性) TAG |
---|---|
SGID | chmod g+s (2源文件属性) TAG |
STICKYID | chmod o+t (1源文件属性) TAG |
(1)sticky (粘制位)
只针对目录生效,当一个目录上有sticky权限时,这个目录中的文件只能被文件的所有者和超级用户删除
1> 先建立两个普通用户tom、jerry,在/mnt下建立一个公共目录public,然后设置监控命令监控该目录及目录下的文件,并在超级用户下设置满权限 chmod 777 /mnt/public
2> 分别切换到两个普通用户在public目录下建立文件(tom)file1、(jerry)file2
3> jerry用户可以删除tom用户下的文件file1,这样的设定很不安全,故可以设置特殊权限 t
4> 在超级用户模式下给public目录加入 t 权限
5> public目录加入 t 权限后,jerry用户便不能再对tom用户下的文件进行操作了
(2)sgid 强制位
对于目录:当一个目录上有sgid时,这个目录里新建的文件会自动归属到这个目录的所属组上面(对目录的已有文件所属组不会发生改变)
1> 先建立一个目录 /westos1,更改student为目录westos1的拥有组,westos1权限设定为对任何人开放所有权力(满权限)
2> 在超级用户下建立用户 tom,用户tom在/westos1目录下新建file1,查看file1拥有组发现是用户本身,并不是/westos1目录拥有组
3> 为了使在目录中所建立的文件的属于目录的拥有组,需要在目录上加入s权限(chmod 2777 /westos1)
对于二进制可执行文件时,当文件上有sgid权限时任何人执行此文件所产生的进程都属于文件的拥有组
1> 首先对下图命令进行说明
ps表示进程查看命令;ax查看系统所有进程;-o user,group,comm查看进程用户、组、进程名称;grep cat表示把名称为cat的进程过滤出来
2> 设定/bin/cat二进制文件权限,并对其拥有组进行查看
3> 以用户tom身份启动一个cat进程,这个进程的所有人和所有组均为tom自身
4> 给二进制文件加上s权限,以tom身份重新开启一个新的cat进程,看到这时cat进程的所有组成为二进制文件的拥有组,而不是tom所有组自身
(3)suid 冒险位
只针对于二进制可执行文件 , 使用拥有SUID权限的文件触发其中记录的程序时以 SUID 文件拥有者的身份去执行
1> 设定/bin/cat二进制文件权限,并对其所有者进行查看
2> 以用户tom身份启动一个cat进程,这个进程的所有人和所有组均为tom自身
3> 给二进制文件加上s权限,以tom身份重新开启一个新的cat进程,看到这时cat进程的所有者成为二进制文件的所有者,而不是tom所有者自身
5.ACL 权限列表
(1)acl 作用:让特定的用户对特定的文件拥有特定权限
(2)acl 列表查看
如果你查看一个文件属性的时候,这个属性的最后面是个 " + "号,就代表它的权限列表是开启的
当 " + " 出现后,用ls -l file查看权限时普通权限的属性将不准确了,此时要用getfacl file查看文件权限列表
getfacl file ###查看acl开启的文件的权限
file: file ### 文件名称
owner: root ###文件拥有者
group: root ###文件拥有组
user::rw- ###文件拥有人的权限
user:useradd:rwx ###指定用户的权限
group::r-- ###文件拥有组的权力
mask::rwx ###能赋予用户的最大权力阀值
other::r-- ###其他人的权限
实验过程:超级用户在/mnt下建立一个文件file,普通用户tom对file是不可以编辑的,在对用户tom和file之间进行特定权限指定后,tom用户可以对/mnt下的文件file进行编辑
(3)acl 列表的管理
命令格式
setfacl -m u:username:rwx file ##设定username对file拥有rwx权限
setfacl -m g:groupname:rwx file ##设定group组成员对file拥有rwx权限
setfacl -x u:username file ##从acl列表中删除username
setfacl -b file ##关闭file上的acl列表
1> 设定用户jerry对file无任何权限
设定用户tom对file拥有 rwx 权限
2> 删除jerry特定用户权限
删除权限列表特定用户为空时,并不代表权限列表未被开启(" + "依然存在)
3> 关闭权限列表(在有特殊用户设定时,关闭后,特殊用户设定失效)
(4)facl列表权限匹配顺序
权限优先级顺序:
资源拥有者,特殊指定用户,权力开放多的组,权力开放少的组,其他用户
(5)facl的mask阀值
mask:能够赋予特殊用户最大权限的阀值
1> 在文件设定完毕acl列表后,再用 ls-l 显示文件权限时,权限不准确
2> 当设定完毕acl列表,再用chomod命令缩小文件权限,缩小的不是文件本身的权限而是mask权限,也影响到指定用户所拥有的权限
3> 恢复mask值:setfacl -m m:rwx file;特殊指定用户将可以执行对指定文件的权力
(6)facl的default权限
default权限特性:只对目录生效、只对目录中新出现的文件或目录生效、对目录本身不生效、对目录中原有文件不生效
需求:在/mnt目录下的directory目录已经存在的文件及以后新建文件都要对指定用户可写
1> 确定已经存在的文件对指定用户student可写:setfacl -R -m u:student:rwx /mnt/directory
2> 设定将要出现的新文件对指定用户可写:setfacl -m d:u:student:rwx /mnt/directory
3> 关闭default权限:setfacl -k /mnt/directory/
(7)文件隐藏属性
系统当中权限在开放过程当中除了权力变大以外,还有在开放权限过程中权力变小的情况
chattr 设定
lsattr 显示
chattr 设定 i 之后,这个文件不能被删除、改名、也无法写入或新增数据
lsattr显示权限属性,执行chattr - i file 命令,文件便恢复成普通文件属性
chattr 设定 a 之后,这个文件将只能增加数据,不能被删除
执行chattr - a test 命令,文件便恢复成普通文件属性