文件权限
- 文件权限存在的意义
文件权限是系统最底层安全设定方法之一,保证文件可以被可用的用户做相应操作
- 文件权限的读取
ls -l file 查看文件权限
ls -ld dir 查看目录
ll file ls -l file
ll -d dir ls -ld dir
- 文件权限的读取
以 file 文件为例,文件权限的内容可以分为八部分
-rw-r--r-- 1 root root 0 Jul 23 09:27 file
- | rw-r--r-- | 1 | root | root | 0 | Jul 23 09:27 | file
1)文件类型
- 空文件
d 目录
l 软链接
s socket 套接字
b block 块设备
c 字符设备
2)文件的权限:rw-r--r-- 此处分为三部分,第一部分为前三位,【u】标示文件拥有者可以对文件能做什么操作;第二部分为中间三位,【g】标示文件所有组能对文件做什么操作;第三部分为后三位,【o】标示其他人能对文件做什么操作
3)对文件:文件硬链接个数(文件内容被记录的次数);对目录:目录中子目录的个数
4)文件的所有人
5)文件的所有组
6)对文件:文件大小;对目录:目录中子文件元数据(matedate可以理解为文件的属性)大小
7)文件最后一次修改的时间
8)文件的名称
- 如何改变文件的所有人和所有组
chown username file 修改文件的所有人
chown username dir 修改目录的所有人
chown user.group file 修改文件的所有人和所有组
chown user.group dir 修改目录的所有人和所有组
chown -R user.group dir 修改目录及目录下文件的所有人和所有组(其中 . 与 : 通用)
chgrp group file 修改文件的所有组
chgrp group dir 修改目录的所有组
chgrp -R group dir 修改目录及目录下文件的所有组
- 如何改变文件的权限
对权限的理解:r 对文件:是否可以查看文件中的内容(cat file)
对目录:是否可以查看目录中有什么文件(ls dir)
w 对文件:是否可以改变文件里面记录的字符
对目录:是否可以对目录中子目录或子文件的元数据进行更改
x 对文件:是否可以通过文件名称调用文件内记录的程序
对目录:是否可以进入目录
更改权限方式:chmod <u|g|o><+|-|=><r|w|x> file 修改文件权限
chmod <u|g|o><+|-|=><r|w|x> dir 修改目录权限
chmod 数字 目标 修改目标权限
r:4 w:2 x:1
7:rwx 6:rw- 5:r-x 4:r-- 3:-wx 2:-w- 1:--x 0:---
- umask
umask 系统建立文件时默认保留的权力
umask 077 临时设定系统预留权限为077
永久更改 umask
vim /etc/profile 系统配置文件
if [ $UID -gt 199 ] && [ "`/usr/bin/id -gn`" = "`/usr/bin/id -un`" ]; then umask 002 普通用户的umask
else umask 022 超级用户的umask
fi
vim /etc/bashrc shell 配置文件
if [ $UID -gt 199 ] && [ "`/usr/bin/id -gn`" = "`/usr/bin/id -un`" ]; then umask 002
else umask 022
fi
source /etc/profile 让更改立即生效
source /etc/bashrc
- 特殊权限
sticky 粘制位
作用:只针对目录生效,当一个目录上有 sticky 权限时,在这个目录下的文件只能被文件的所有者删除
设定方式:
chmod o+t dir
chmod 1xxx dir
sgid 强制位
作用:对文件只针对于二进制可执行文件,当文件上有 sgid 时任何人执行此文件产生的进程都属于文件的组
对目录当目录上有 sgid 权限时任何人在此目录中建立的文件都属于目录的所有组
设定方式:
chmod g+s file
chmod 2xxx file
chmod g+s dir
chmod 2xxx dir
suid 冒险位
作用:只针对二进制可执行文件,当文件上有 suid 时任何人执行这个文件中记的程序产生的进程都属于文件的所有人
设定方式:
chmod u+s file
chmod 4xxx file
让特定的用户对特定的文件拥有特定权限
+ 号标示 acl 开启
getfacl file 查看 acl 开启的文件权限
#file:file 文件名称
#owner:root 文件拥有者
#group:root 文件拥有组
user::rw- 文件拥有人的权限
user:student:rwx 指定用户的权限
group::--- 文件拥有组的权力
mask::rwx 能赋予用户的最大权力阀值
other::--- 其他人的权限
acl 列表的管理
setfacl -m u:username:rwx file 设定 username 对 file 拥有 rwx 权限
setfacl -m g:group:rwx file 设定 group 组成员对 file 拥有 rwx 权限
setfacl -x u:username file 从 acl 列表中删除 username
setfacl -b file 关闭 file 上的 acl 列表
mask 值
在权限列表中 mask 标示能生效的权力值
当用 chmod 减小开启 acl 的文件权限时 mask 值会发生改变,可使用 setfacl -m m:rwx file 恢复 mask 值
acl 的默认权限设定
acl 默认权限只针对目录设定,只对设定完成后新建立的文件或目录生效,而已经存在的文件不会继承默认权限
文件属性
用chattr执行改变文件或目录的属性,可执行lsattr指令查询其属性