$ ls -l
drwxr-xr-x. 3 root root 4096 Oct 12 13:38 dirname
d:文件类型:
- d:目录
- -:文件
- l:软链接
rwx:所有者权限 r-x:用户组权限 r-x:其他人权限 . :ACL权限位
r读 w写 x执行
基本权限的修改
chmod [选项] 模式 文件名
- 选项
-R
递归
- 模式
- [u/g/o/a][+/-/=][rwx]
- 权限数字
- r 4
- w 2
- x 1
$ chmod 666 1.txt 设置文件权限为rw-rw-rw-
$ chmod u+w 1.txt 给所有者添加w写的权限
$ chmod g+x 1.txt 给用户组添加x执行的权限
$ chmod o+r 1.txt 给其他人添加r读的权限
$ chmod g+x,o+x 1.txt 同时给用户组和其他人添加x执行的权限
$ chmod u-w 1.txt 给所有者减掉w写的权限
$ chmod u=rwx 1.txt 设置所有者的权限为rwx
文件权限
权限 | 含义 | 示例 |
---|---|---|
r | 读取文件内容 | cat more head tail |
w | 编辑、新增、修改文件内容,不能删除文件,除非对目录有写权限 | vi echo |
x | 可执行 |
目录权限
权限 | 含义 | 示例 |
---|---|---|
r | 可以查看目录下的文件名 | ls |
w | 具有修改目录结构的权限。如新建、删除和重命名此目录下的文件和目录 | touch rm mv cp |
x | 进入目录 | cd |
chown
- chown 用户名 文件名
- 如果想让一个用户拥有7权限,可以把这个文件的所有者改成这个用户名
chmod 755 folder chown mino folder
chgrp
- chgrp 组名 文件名
chgrp students folder
chown root:root folder
默认权限
umask
- 查看默认权限
- 0022
- 第一位0 文件特殊权限
- 022 文件默认权限
文件权限
- 默认权限就是文件一创建后就拥有的权限
- 文件默认不能建立可执行文件,必须手工赋予执行权限
- 文件默认权限最大为
666
- 默认权限需要换算成字母再相减
- 建立文件之后的默认权限,为666减去umask值
666 - 022 = 744
2.3 目录
- 目录默认权限最大为777
- 建立目录之后的默认权限,为777减去umask值
777 - 022 = 755
2.4 修改umask值
临时修改
umask 0002
永久修改
vi /etc/profile
ACL
- 一个文件或文件夹只能有一个所有者和所属组,无法适应某些应用场景
- 访问控制(Access Control List,ACL)就是为特定的用户和组分配特定权限
查看分区ACL权限是否开启
- dumpe2fs 命令是查询指定分区详细文件系统信息的命令
- -h 仅显示块中的信息,而不显示磁盘块组的详细信息
dumpe2fs -h /dev/sda1
Default mount options: user_xattr acl
临时开启分区的ACL权限
mount -o remount,acl /dev/sda1 #重新挂载根分区,并挂载加入ACL权限
永久开启分区的ACL权限
vi /etc/fstab
UUID / ext4 defaults,acl 1 1
mount -o remount /dev/sda1
读写ACL权限
setfacl
setfacl 选项 文件名
选项 | 含义 |
---|---|
-m | 设定ACL权限 |
-x | 删除指定的ACL权限 |
-b | 删除所有的ACL权限 |
-d | 设定默认ACL权限 |
-k | 删除默认的ACL权限 |
-R | 递归设定ACL权限 |
- 给用户
guest
赋予rx权限 - 格式 "u:用户名:权限"
useradd guest mkdir /home/guest/folder useradd teacher groupadd students mkdir folder chown teacher:students /home/guest/folder chmod 770 /home/guest/folder #创建用户guest,teacher,创建用户组students #创建目录/home/guest/folder #修改目录权限为770,所有者和用户组分别为:teacher,students #用户guest没有权限访问该目录 setfacl -m u:guest:rw /home/geuest/folder
设置最大权限
- mask是最大有效权限,如果给用户赋予了ACL权限,是需要和mask的权限做与运算后才能得到真正权限
- 如果mask值是777,那么任何数与它相与,得到的是权限本身
- 如果允许自定义ACL,又不想让它超出最大权限
setfacl -m m:r folder #修改掩码mask
[root@localhost someone]# getfacl folder
# file: folder
# owner: teach
# group: stus
user::rwx
user:someone:r-x #effective:r--
group::rwx #effective:r--
mask::r--
other::---
删除ACL权限
删除指定用户的ACL权限
setfacl -x u:someone folder #setfacl -x u:用户名 文件名
删除文件所有用户的ACL权限
setfacl -b folder #setfacl -b 文件名
删除指定用户组的ACL权限
setfacl -x g:students folder #setfacl -x g:组名 文件名
递归权限
- 向下一级一级传递权限
- 父目录设定ACL权限的时候,所有的子文件和子目录也会拥有相同的ACL权限
- 递归仅能赋给目录不能赋给文件
setfacl -m u:someone:rx folder
setfacl -m u:someone:rx -R folder
默认权限
- 默认ACL权限是指如果给父目录设置了默认ACL权限,那么父目录里所有新建的子文件都会继承父目录的ACL权限
- setfacl -m d:u:用户名:权限 目录名
setfacl -m d:u:someone:rw folder
sudo权限
- root把本来只有超级管理员可以使用的命令赋予普通用户来使用
- sudo操作的对象是系统命令
4.1 visudo
- 通过
visudo
可以由超级用户赋权 - 实际修改的是
/etc/sudoers
文件 - 命令必须写绝对路径
root ALL=(ALL) ALL
用户名 被管理主机地址=(可使用的身份) 授权命令(绝对路径)
guest localhost=(root) /usr/sbin/useradd //新增加用户行
%wheel ALL=(ALL) ALL
%组名 被管理主机地址(IP)=(可使用的身份) 授权命令(绝对路径)
sudo -l 查看目前的sudo权限