Linux系统下文件权限的管理
1.文件权限
①意义:保证文件可以被可用的用户做相应操作
②文件权限的查看
命令如下:
ls -l file
ls -ld dir
ll file
ll -d dir
③文件权限的读取
- | rw-rw-r– | 1 | kiosk | kiosk | 0 | JUL 21 09:18 | file |
---|---|---|---|---|---|---|---|
【1】 | 【2】 | 【3】 | 【4】 | 【5】 | 【6】 | 【7】 | 【8】 |
【1】文件类型
— 表示空文件/文本
d 目录
l 软连接
s socket套接字
b block块设备
c 字符设备
【2】文件的权限
rw- | rw- | r– |
---|---|---|
[u]文件拥有者对文件可以做什么操作 | [g]文件所有组对文件可以做什么操作 | [o]其他人对文件可以做什么操作 |
注:r只读;w编辑;-无
【3】
对文件:文件的硬链接个数(即文件内容被纪录的次数)
对目录:目录中所有子目录的个数
【4】文件的所有者
【5】文件的所有组
【6】
对文件:文件的大小
对目录:目录中子文件元数据大小
【7】文件的内容被修改的时间
【8】文件名
2.改变文件的所有人和所有组
改变文件的所有人和所有组需要执行chown或者chgrp指令。
指令如下:
chown username file|dir 改变文件(目录)的所有人
chown user.group file|dir 改变文件(目录)的所有人以及所有组
chown -R user.group dir 改变目录的所有人以及所有组
chgrp group file|dir 改变文件(目录)的所有组
chgrp -R group dir 改变目录的所有组
3.改变文件的权限
1.权限
r:
对文件:是否可以查看文件中的内容(cat file)
对目录:是否可以查看目录中的子文件或者子目录(ls dir)
w:
对文件:是否可以改变文件中记录的字符
对目录:是否可以对目录中子目录或子文件的元数据进行更改
x:
对文件:是否可以通过文件名称调用文件内记录的程序
对目录:是否可以进入目录
-: 权限未启用
2.更改方式:
更改文件权限需要chmod指令。具体指令如下:
chmod <u|g|o><+|-|=><r|w|x> file|dir 对文件进行u|g|o的打开|关闭|复制其r|w|x权限
chmod u+x /mnt/file1
chmod g-r /mnt/file2
chmod ug-r /mnt/file3
chmod u-r,g+x /mnt/file4
例:
更改之前:
更改之后:
注:权限也可以用0-7数字表示
例:
r-x | r– | –x |
---|---|---|
5(101) | 4(100) | 1(001) |
3.umask
umask是系统建立文件时保留的权力,具体用法如下:
(1)临时修改umask
临时修改umask需要执行命令**”umask 077“,其目的是临时设定系统预留权限为077**,只在当前shell中有效。
例:
(2)永久更改umask
永久修改umask则需要对**/etc/profile及/etc/bashrc进行编辑,即执行命令:vim /etc/profile(系统配置文件)和vim /etc/bashrc**(shell配置文件)。
如下:
更改之后不会对当前shell立即生效,如果需要使其对当前shell立即生效则需执行以下命令:
source /etc/profile
source /etc/bashrc
4.特殊权限
(1)sticky
sticky是粘制位,它只针对目录生效。当一个目录上有sticky权限时,在这个目录中的文件就只能被此文件的所有者删除。
具体使用方法如下:
chmod o+t dir
或:
chmod 1xxx dir
此时便对dir目录进行了设置。
(2)suid
suid是冒险位,它只针对于二进制的可执行文件。当一个文件上有suid时,任何人执行这个文件中的程序,其所产生的进程都属于文件的所有人,与进程的发起人无关。
具体使用方法如下:
chmod u+s file
或:
chmod 4xxx file
(3)sgid
sgid是强制位。对文件来说,它只针对于二进制的可执行文件,当文件上有sgid权限时,任何人执行此文件产生的进程都属于文件所在的组;而对目录来说,当目录上有sgid权限时,任何人在此目录中建立的文件都属于目录的所有组。
具体使用方法如下:
chmod g+s file|dir
或:
chmod 2xxx file|dir
5.acl权限列表
acl是让特定的用户对特定的文件拥有特定的权限。
(1)acl列表查看
-rw-rwxr–+ 1 root root 0 Jul 15 13:32 file 其中的**“+”**表示acl开启。
具体使用方法如下:
getfacl file 查看acl开启的文件的权限
#file: file 文件名称
#owner:root 文件拥有者
#group:root 文件拥有组
user::rw- 文件拥有人的权限
user::rwx 指定用户的权限
group::r-- 文件拥有组的权力
mask::rwx 可以赋予用户的最大权力上限
other::r-- 其他人的权限
(2)acl列表的管理
getfacl file 查看文件file开启的权限
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列表
(3)mask值
在权限列表中mask表示能够生效的权利值,当用chmod减小开启acl的文件权限时,mask值会发生改变,如:
如果要恢复mask值,则需执行:
setfacl -m m:rw westos
(4)acl的默认权限设定
acl默认权限只针对目录而设定,而且acl权限只针对设定完成之后新建立的文件或目录生效,但已经存在的文件是不会继承默认权限的。
具体使用方法如下:
setfacl -m d:u:student: rwx /mnt/westos
setfacl -k /mnt/westos