目录
一.chmod
二.ACL权限
2.1概述
2.2应用ACL权限
一.chmod
chmod命令是控制用户对文件的权限的命令。
只有文件所有者和超级用户可以修改文件或目录的权限。
使用权限 : 所有使用者
语法:
chmod [-cfvR] [--help] [--version] mode file...
参数说明:
mode : 权限设定字串,格式如下 :
[ugoa...][[+-=][rwxX]...][,...]
其中:
u 表示该文件的拥有者,g 表示与该文件的拥有者属于同一个群体(group)者,o 表示其他以外的人,a 表示这三者皆是。
+ 表示增加权限、- 表示取消权限、= 表示唯一设定权限。
r 表示可读取,w 表示可写入,x 表示可执行,X 表示只有当该文件是个子目录或者该文件已经被设定过为可执行。
其他参数说明:
-c : 若该文件权限确实已经更改,才显示其更改动作
-f : 若该文件权限无法被更改也不要显示错误讯息
-v : 显示权限变更的详细资料
-R : 对目前目录下的所有文件与子目录进行相同的权限变更(即以递归的方式逐个变更)
--help : 显示辅助说明
--version : 显示版本
二.ACL权限
2.1概述
什么是ACL权限?
ACL的全称是 Access Control List (访问控制列表) ,一个针对文件/目录的访问控制列表。它在UGO权限管理的基础上为文件系统提供一个额外的、更灵活的权限管理机制。它被设计为UNIX文件权限管理的一个补充。ACL允许你给任何的用户或用户组设置任何文件/目录的访问权限。
ACL即访问控制列表。可以通过下列的实例来理解ACL的作用:
2.2应用ACL权限
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”组中
可以查看组是否正常建立
[root@localhost ~]# cat /etc/group
2.修改目录的所有者和所属组
输入chown root:tgroup /project
[root@localhost ~]# chown root:tgroup /project
[root@localhost ~]# ll -d /project
drwxr-xr-x. 2 root tgroup 6 8月 23 13:07 project
3.设定权限
输入chmod 770 /project
[root@localhost ~]# chmod 770 /project
[root@localhost ~]# ll -d /project
drwxrwx---. 2 root tgroup 6 8月 23 13:07 /project
4.此时需要为临时用户进行分配权限,r-x
4.1 添加临时用户
[root@localhost ~]# useradd tempuser
[root@localhost ~]# passwd tempuser
4.2 为临时用户分配特定权限
输入 getfacl /project 查看/project的详细控制信息
[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::---
4.3 查看目录权限,注意+,表示文件或目录有acl权限
[root@localhost ~]# ll -d /project
drwxrwx---+ 2 root tgroup 6 8月 23 13:07 /project
5.验证ACL权限
5.1切换到tempuser用户
[root@localhost ~]# su tempuser
[tempuser@localhost root]$
5.2验证可以进入project目录
[tempuser@localhost project]$ cd /project
[tempuser@localhost project]$
5.3验证不能在project中创建文件
[tempuser@localhost project]$ touch test.txt
touch: 无法创建"test.txt": 权限不够
6.控制组的ACL权限
6.1创建一个temp组
[root@localhost project]# groupadd temp
6.2设置组的ACL
[root@localhost project]# setfacl -m g:temp:rx /project
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::---
6.4创建一个用户,并将该用户设置为temp组
[root@localhost project]# useradd tempu02
[root@localhost project]# passwd tempu02
6.5将用户添加到temp组中
[root@localhost project]# gpasswd -a tempu02 temp
正在将用户“tempu02”加入到“temp”组中
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": 权限不够