一.权限的基本概念
1.为什么要设置权限
1)服务器中的数据价值
2)员工的工作职责和分工不同
3)应对自外部的攻击
4)内部管理的需要
2.权限的类型
针对文件 | 针对目录 | |
---|---|---|
读 r | 表示可以查看文件内容;cat | 表示可以(ls)查看目录中存在的文件名称 |
写w | 表示可以更改文件的内容;vim 修改,保存退出 | 表示是否可以删除目录中的子文件或者新建子目录(rm/touch/mkdir) |
执行x | 表示是否可以调用文件中的程序,一般指二进制文件(.sh) => 绿色 | 表示是否可以进入目录中(cd) |
3.权限的分配给谁
文件拥有者(u):user
文件拥有组(g):group
其他用户(o):other
按照以上三大类用户进行权限的分配。
二.普通权限管理
1.权限的查看
ls -l file #查看文件权限
ls -ld dir #查看目录权限
文件的属性被叫做文件的元数据 (meta data)
一种元数据用 1 byte 来记录。
ls -l 查看到的信息一共分九列
第1列:文件类型
- 普通文件
d 目录
l 软链接(windows中的快捷方式)
b 块设备(硬盘 光驱等)
c 字符设备
s socket 套接字
p 管道
第2列:权限位
前三位为文件拥有者的权限,中三位为文件拥有组的权限,后三位为其他用户的权限。
第3列:系统的 selinux 开启
第4列:文件的节点数
第5列:文件拥有者
第6列:文件拥有组
第7列:对于文件:文件内容大小
对于目录:目录中子文件的元数据大小
第8列:文件内容最后被修改的时间
第9列:文件名
2.普通权限的设置
字符方式设置权限
chmod u + r file/dir -R #a=all 即所有用户 -R即递归
g - w
o = x
a
eg:
chmod a-rwx /mnt/test
chmod u=rwx,g=rx,o=--- /mnt/test
chmod -R u=rwx,g=rx,o=--- /mnt/testdir/
数字方式设置权限
权限 | 对应数字 | 意义 |
---|---|---|
r | 4 | 可读 |
w | 2 | 可写 |
x | 1 | 可执行 |
- | 0 | 没有权限 |
rwx = 111 = 7
rw- = 110 = 6
r-x = 101 = 5
r-- = 100 = 4
-wx = 011 = 3
-w- = 010 = 2
--x = 001 = 1
--- = 000 = 0
eg:
chmod 777 /mnt/test #即给该文件满权限
复制权限
chmod --reference=/tmp /mnt/test #复制/tmp目录的权限/mnt/test
chmod -R --reference=/tmp /mnt/test/ #复制/tmp权限到/mnt/test及子文件上
三.系统默认权限
1.什么是umask
umask表示创建文件时的默认权限
root用户下,touch a ,文件a的默认权限是644
普通用户下,touch b ,文件b的默认权限是664
决定以上的就是umask的值。
实际文件权限 = 最高权限 - umask的值
文件默认权限 = 777-umask-111
目录默认权限 = 777-umask
2.查看/修改umask
umask #查看umask
0022 #第一位0表示特殊权限
#umask的默认值,在root和普通用户下是不一样的,分别是022和002
#临时修改umask
umask 002
#永久修改umask
vim /etc/bashrc #shell系统配置文件
74 if [ $UID -gt 199 ] && [ "`id -gn`" = "`id -un`" ]; then
75 umask 002-->022 #普通用户的umask
76 else
77 umask 022 #root用户的umask
78 fi
vim /etc/profile #系统环境配置文件
59 if [ $UID -gt 199 ] && [ "`id -gn`" = "`id -un`" ]; then
60 umask 002-->022 #普通用户的umask
61 else
62 umask 022 #root用户的umask
63 fi
source /etc/bashrc #source使我们更改的内容立即被系统识别
source /etc/profile
四.文件拥有者和拥有组管理
chown username file #更改文件拥有者
chgrp groupname file #更改文件拥有组
chown root:root readme.txt #同时更改
chown root.root readme.txt #同时更改
#以上命令均可加入-R参数,表示递归修改
五.特殊权限
1.粘滞位(stickyid)
作用:只允许文件的创建者和root用户删除文件(防误删权限位)
- 粘滞位,一般针对的是公共目录
1.开启stickyid:
chmod 1原始权限 dir
chmod o+t dir
2.关闭stickyid:
chmod 0原始权限 dir
chmod o-t dir
2.强制位(sgid)
作用:目录中新建的文件自动归属到目录的所属组中
- 强制位,一般针对的是目录
1.开启强制位:
chmod 2原始权限 dir
chmod g+s dir
2.关闭强制位:
chmod 0原始权限 dir
chmod g-s dir
3.冒险位(suid)
作用:冒险位,指文件操作者(用户)临时拥有文件拥有者的权限
- 冒险位,一般针对的是命令或者脚本文件
1.开启suid:
chmod 4原始权限 file
chmod u+s file
六.ACL访问控制
ACL = Access Control List 访问控制列表
在 Linux 系统中, ACL 可实现对单一用户设定访问文件的权限。
ACL是否开启可以通过ls -l来查看,权限位最后如果有+,表示开启了ACL,没有+表示未开启ACL。
1.获取ACL权限
getfacl 文件或目录名称
Tips:如果开启ACL不要用ls -l来查询权限信息。
2.设置ACL
setfacl -m u:student:rw file #设定指定用户权限
setfacl -m g:test:rw file #设定指定组的权限
setfacl -m u::rwx file #设定文件拥有者权限
setfacl -m g::0 file #设定文件拥有组权限
setfacl -x u:student file #删除列表中的 lee
setfacl -b file #关闭acl
#以上的命令之针对于存在的文件生效,新建文件是不会设定
#针对与/mnt/dir目录中新建文件生效:
setfacl -m d:u:student:rwx /mnt/dir/
七.attr权限
attr 权限限制所有用户(包括root)
1.查看attr权限
lsattr dir|file
2.设置attr权限
chattr +i dir|file #任何人不能修改
chattr -i dir|file
chattr +a dir|file #只允许添加不允许删除
chattr -a dir|file