Linux文件权限管理
1、文件权限的查看
ls -l file = ll file
ls -ld dir = ll -d dir
ls -lR 递归显示
ls -l file
-rw-r--r--. 1 root root 0 Jan 5 13:28 file
1) 2) 3) 4) 5) 6) 7) 8)
1)文件的类型
- | 空文件,文本文件 |
d | 目录 |
c | 字符设备 |
s | 套接文件 |
p | 管道 |
b | 块设备 |
l | 软链接 |
2) rwx|rwx|rwx
文件读写权限
u:文件拥有者的权限
g:文件所有组的权限
o:其他人对文件的权限
3) 对文件指文件硬链接个数(文件内容被记录的次数);对目录指目录中子目录的个数
4)文件的拥有者
5)文件的所有组
6)对文件指文件大小;对目录指目录中子文件元数据大小(元数据-->matedata)可以理解为文件的属性大小(时间戳不被包括)
7)文件内容被修改的时间
8)文件的名称
2、更改文件的拥有者和所有组
chown username file/dir ##更改文件/目录的拥有者
chgrp groupname file/dir ##更改文件/目录的所有组
chown username.groupname file/dir ##更改文件/目录的拥有者、所有组
chown -R username file/dir ##递归更改文件/目录的拥有者
chgrp -R groupname file/dir ##递归更改文件/目录的所有组
例:
3、文件权限的更改
1)文件权限理解
r
对文件:可以查看文件的字符(内容)
对目录:可以查看目录中文件/目录的信息
w
对文件:可以更改文件内的字符
对目录:在目录中增删改查
x
对文件:可以运行文件中记录的程序动作
对目录:可以进入目录
2)更改方式
①
+ | - |
赋予 | 去掉 |
chmod u/g/o +/- r/w/x file/dir
相同的权限可以合并目标,不同的用逗号分隔,例:
chmod ugo-r file/dir
chmod u-r,g-w,o-x file/dir
②
位 | 权 |
r | 4 |
w | 2 |
x | 1 |
文件的满权限值为666,目录的满权限值为777。
3)系统默认权限的设定
①系统对新建文件和目录会去掉一些权限
umask ##查看系统减掉的当前用户权限
一般系统默认普通用户umask值为002,超级用户umask值为022。
umask xxx ##临时修改umask值,只在当前shell生效。
②永久更改umask
系统配置文件:vim /etc/bashrc
if [ $UID -gt 199 ] && [ "`id -gn`" = "`id -un`" ]; then
umask 002 #普通用户的umask
else
umask 022 #超级用户的umask
fi
shell配置文件:vim /etc/profile
if [ $UID -gt 199 ] && [ "`id -gn`" = "`id -un`" ]; then
umask 002
else
umask 022
fi
直接对umsk重新输入新的权限值
以上两个文件的umask值必须保持一致
输入 :
source /etc/bashrc
source /etc/profile
让系统重新加载配置文件,使设定立即生效
理解不同用户间的权限问题,可以分别对目录和文件操作:
当student用户编辑liuyifei用户的文件时,不拥有w权限的student用户无法使vim结果保存。
当对目录时:
4、 文件的访问控制(ACL列表)
1)ACL的定义
ACL=access control
指定特殊的用户对特殊的文件有特殊的权限
ls -dl /home/student/
drwx--x---+ 60 student student 4097 Jan 5 15:06 /home/student/
↑ ##这个标识开启了ACL列表
getfacl file ##查看开启ACL权限的文件权限列表
# file: /home/student ##目录/文件的名称
# owner: student ##d/f 的拥有者
# group: student ##d/f 的所属组
user::rwx ##拥有者的权限
user:qemu:--x ##acl列表中(特殊用户)的权限
group::--- ##特殊组的权限
mask::--x ##权限掩码
other::--- ##其他人的权限
2)设定ACL列表
setfacl -m u:username:rwx file ##设定用户对文件拥有的rwx权限
setfacl -m g:group:rwx file ##设定指定组成员对文件拥有的rwx权限
setfacl -x u:username:rwx file ##从ACL列表中删除指定用户
setfacl -x g:groupname:rwx file ##从ACL列表中删除指定用户组
setfacl -b file ##关闭指定文件的ACL列表
setfacl -m u:username:rwx file ##设定用户对文件拥有的rwx权限
setfacl -m g:group:rwx file ##设定指定组成员对文件拥有的rwx权限
例:
setfacl -x u:username:rwx file ##从ACL列表中删除指定用户
setfacl -x g:groupname:rwx file ##从ACL列表中删除指定用户组
例:
setfacl -b file ##关闭指定文件的ACL列表
例:
3)ACL mask值
在权限列表中mas值表示能生效的权限值
当用 chmod g-w file 时,会影响已有的用户权限,并改变mask值。
改变前:
改变后及恢复mask值:
4)ACL的默认权限设定
当我们需要普通用户对属于root的某个目录拥有写的权限时,并且目录中新建的子目录对普通用户也生效,就要设定acl默认权限
注意:默认权限只对目录中新建的目录或文件生效,对已经建立的目录和文件无效,对目录本身也无效
setfacl -m d:u:student:rwx /mnt/test ##设立默认权限
setfacl -k /mnt/test ##删除默认权限
例:对目录本身是无效的
例:对已有的文件或目录也无效:
例:对新建的目录或文件生效,新建的子目录继承默认权限:
5、特殊权限位
1) suid ##冒险位
只针对二进制可执行文件,文件内记录的程序产生的进程的拥有者为文件的拥有者,和进程的发起人没关系
chmod u+s file
= chmod 4*** file
2) sgid ##强制位
对文件:只针对二进制可执行文件,任何人运行二进制文件程序时程序产生的进程的所属组都是文件的所有组,和程序发起人组的身份无关
chmod g+s file
=chmod 2*** file
对目录:当目录有sgid权限后,目录中新建的所有文件的所有组都自动归属到目录的所有组之中,和文件建立者所在的组无关
chmod g+s /dir/
3) sticky ##粘制位
只针对目录生效,当一个目录上有sticky权限时,在这个目录的文件只能被文件的拥有者删除
chmod o+t /dir
=chmod 1*** /dir
练习:
1、新建用户组:shengchan,caiwu,jishu
2、创建用户要求如下:
* tom是shengchan组的附加用户
* harry是caiwu组的附加用户
* leo是jishu组的附加用户
* 新建admin用户,此用户不属于以上提到的三个部门
3、新建目录要求如下:
* /pub目录为公共存储目录对所有用户可以读,写执行,但用户只能删除属于自己的文件
* /sc目录为生产部存储目录只生产部人员可以写入,且生产部人员所建立的文件都自动归属到shengchan组中
*/cw目录为财务部存储目录只财务部人员可以写入,且财务部人员所建立的文件都自动归属到caiwu组中
*admin用户能用touch工具在/sc目录和/cw目录中任意建立文件,但不能删除文件
4、设定普通用户新建文件权限为"r--r-----"
5、设定admin用户可以通过sudo自由建立新用户
1、2、
3、
4、修改/etc/bashrc /etc/profile文件,更改普通用户权限
5、用visudo编辑/etc/sudoers文件,下放给admin用户权力