一. chmod命令
chmod命令来自英文词组change mode的缩写,其功能是改变文件或目录权限的命令。默认只有文件的所有者和管理员可以设置文件权限,普通用户只能管理自己文件的权限属性。 设置权限时可以使用数字法,亦可使用字母表达式,对于目录文件,建议加入-R参数进行递归操作,这意味着不仅对于目录本身,而且也对目录内的子文件/目录进行新权限的设定。 语法格式:chmod 参数 文件名
常用参数
二. ACL权限
什么是ACL
ACL是Access Control List的缩写,即访问控制列表。可以通过下列的实例来理解ACL的作用:
2.1操作步骤
2.1添加测试目录、用户、组,并将用户添加到组
[root@localhost ~]# mkdir /project
[root@localhost ~]# useradd zs
[root@localhost ~]# useradd ls
[root@localhost ~]# groupadd tgroup
[root@localhost ~]# gpasswd -a zs tgroup
正在将用户"zs"加入到"tgroup"组中
[root@localhost ~]# gpasswd -a ls tgroup
正在将用户"ls"加入到"tgroup"组中
可以查看组是否正常建立
cat /etc/group
2.2修改目录的所有者和所属组
chown root:tgroup /project
ll -d /project
drwxr-xr-x. 2 root tgroup 6 8月 23 13:07 project
2.3设定权限
chmod 770 /project
ll -d /project
drwxrwx---. 2 root tgroup 6 8月 23 13:07 /project
2.4为临时用户分配权限
2.4.1添加临时用户
[root@localhost ~]# useradd tempuser
[root@localhost ~]# passwd tempuser
2.4.2为临时用户分配特定权限
[root@localhost ~]# setfacl -m u:tempuser:rx /project
[root@localhost ~]# getfacl /project
getfacl: Removing leading '/' from absolute path names
# file: project
# owner: root
# group: tgroup
user::rwx
user:tempuser:r-x
group::rwx
mask::rwx
other::---
2.4.3查看目录权限,注意+,表示文件或目录有acl权限
[root@localhost ~]# ll -d /project
drwxrwx---+ 2 root tgroup 6 8月 23 13:07 /project
2.5验证acl权限
2.5.1切换到tempuser用户
[root@localhost ~]# su tempuser
[tempuser@localhost root]$
2.5.2 验证可以进入project目录
[tempuser@localhost project]$ cd /project
[tempuser@localhost project]$
2.5.3 验证不能在project中创建文件
[tempuser@localhost project]$ touch test.txt
touch: 无法创建"test.txt": 权限不够
2.6控制组的ACL权限
2.6.1 创建一个temp组
[root@localhost project]# groupadd temp
2.6.2 设置组的ACL
[root@localhost project]# setfacl -m g:temp:rx /project
2.6.3 查看设置后ACL
[root@localhost project]# getfacl /project
getfacl: Removing leading '/' from absolute path names
# file: project
# owner: root
# group: tgroup
user::rwx
user:tempuser:r-x
group::rwx
group:temp:r-x
mask::rwx
other::---
2.6.4 创建一个用户,并将该用户设置为temp组
[root@localhost project]# useradd tempu02
[root@localhost project]# passwd tempu02
2.6.5 将用户添加到temp组中
[root@localhost project]# gpasswd -a tempu02 temp
正在将用户"tempu02"加入到"temp"组中
2.6.6 验证
[root@localhost project]# su tempu02
# 可以进入目录
[tempu02@localhost project]$ cd /project
[tempu02@localhost project]$ ls
# 不能创建文件
[tempu02@localhost project]$ touch aa.txt
touch: 无法创建"aa.txt": 权限不够
3.mask最大权限
3.1什么是最大权限
[root@localhost ~]# getfacl /project
getfacl: Removing leading '/' from absolute path names
# file: project
# owner: root
# group: tgroup
user::rwx
# 所属用户权限
user:tempuser:r-x
# 临时用户权限
group::rwx
# 所属组权限, 文件创建时的所属组
group:temp:r-x
# 一般组的权限 创建的临时组
mask::rwx
# 权限掩码,用来控制最大权限
other::---
最大权限是指: 如果给用户赋予了ACL权限,则用户所获取的权限并不是ACL时所附的权限,而是赋予的ACL权限 与 mask权限 进行 与 操作 之后的权限。例如:user:tempuser:r-x 第一位是r, mask的第一位也是r, 则与操作后,用户则有 r 的权限, user:tempuser:r-x 第二位是 - ,mask的第二位是 w,则与操作后用户则没有 w 的权限。
最大权限的作用:mask的默认值为rwx,即最大权限,任何其他的权限值和mask相"与"都会得到其自身; 可以通过调整mask的方式来控制分配给用户的最大权限,例如: mask值调整为 r-x ,则不管是否给用户分配"w"权限,用户都没有"w"的权限。mask可以用来避免权限分配不当而给系统带来的风险。
4 ACL权限的删除
# 删除指定ACL权限
[root@localhost ~]# setfacl -x u:tempuser /project
[root@localhost ~]# getfacl /project
getfacl: Removing leading '/' from absolute path names
# file: project
# owner: root
# group: tgroup
user::rwx
group::rwx
group:temp:r-x
mask::rwx
other::---
# 删除所有ACL权限
[root@localhost ~]# setfacl -b /project
[root@localhost ~]# getfacl /project
getfacl: Removing leading '/' from absolute path names
# file: project
# owner: root
# group: tgroup
+
user::rwx
group::rwx
other::---
# 注意: 权限没有 +
[root@localhost ~]# ll -d /project
drwxrwx---. 2 root tgroup 6 8月 23 13:07 /project