字母分析
u 即文件或目录的拥有者;
g 即文件或目录的所属群组;
o 其他用户;
a 所有用户(默认);
r 读取,数字代号为“4”;
w 写入,数字代号为“2”;
x 执行或切换,数字代号为“1”;
- 不具任何权限,数字代号为“0”;
s 特殊功能说明:变更文件或目录的权限。
用户及组管理
id user1 #查看用户user1
useradd user1 #创建新用户user1,useradd命令用于Linux中创建的新的系统用户账号,再用passwd设定帐号的密码。使用useradd指令所建立的帐号,实际上是保存在/etc/passwd文本文件中。
passwd user1 #设定user1的用户密码
userdel -r user1 #删除用户user1
gpasswd -a user1 root #把用户user1加入root组
gpasswd -d user1 root #把root组中用户user1删除
groupadd mysql #创建mysql用户组
su命令——用户切换
格式:su 【options】 【用户名】
options如下:
- 用户想要切换到root
-l 后面可以接用户名,可使用变换身份者的所有相关环境设置文件
-m 使用当前环境设置,而不重新读取新用户的设置文件
-c 仅进行一次命令,所以-c后面可以加命令
ls命令查看文件权限
格式:ls(选项)(参数)
终端输入:ls -l shell.text
显示:-rw-r--r-- 1 root root 0 Oct 19 12:21 shell.txt
注释:红色部分代表:所有者,rw(读写)权限。
黄色部分代表:所属组,r(只读)的权限。
蓝色部分代表:其他用户,r(只读)的权限。
chmod修改文件权限
chmod u+x file 给file的属主增加执行权限
chmod 751 file 给file的属主分配读、写、执行(7)的权限,给file的所在组分配读、执行(5)的权限,给其他用户分配执行(1)的权限
chmod u=rwx,g=rx,o=x file 上例的另一种形式
chmod =r file 为所有用户分配读权限
chmod -R u+r directory 递归地给directory目录下所有文件和子目录的属主分配读的权限
chmod 4755 设置用ID,给属主分配读、写和执行权限,给组和其他用户分配读、执行的权限。
文件ACL,访问控制列表
传统的权限仅有三种身份(owner,group,others)搭配三种权限(r,w,x),随着应用的发展,这些权限组合已不能适应现在复杂的文件系统权限控制要求。(对于一个文件,有一个用户不是所有者、也不在所有者组,然后单独给他设置权限,而不影响 其他用户)
例如,目录data的权限为:drwxr-xr—x,所有者与所属组均为root,在不改变所有者和所属组的前提下,要求用户test对该目录有完全访问权限(rwx),但又不能让其他有用完全权限(rwx),这种情况就只能使用acl访问控制列表权限来控制了。
命令:
getfacl:查看文件或目录的ACL设定内容
setfacl:设置文件或目录的ACL内容
命令格式:
# setfacl [选项] 要修改的权限 文件
命令选项:
-m :添加acl参数
-x :删除acl参数
-b :删除所有的ACL设定参数
-R :递归设置acl参数
设置格式如下
# setfacl -m u:test:rw 1.txt --为文件1.txt设置test用户可读写的acl权限
# mkdir /test/a -p
# cd /test
# touch 1.txt
# ll
总用量 0
-rw-r--r-- 1 root root 0 7月 8 21:41 1.txt
drwxr-xr-x 2 root root 6 7月 8 21:39 a
开启另一个终端,并切换之test用户测试1.txt是否可写
设置用户ACL权限
# setfacl -m u:user1:rwx 1.txt --多个用户用逗号隔开
查看设置后的权限
# getfacl 1.txt
# file: 1.txt
# owner: root
# group: root
user::rw-
user:test:rwx --这里可以看到刚刚设置的acl权限
group::r--
mask::rwx
other::r--
设置ACL的mask (mask 掩码:允许的最高acl权限)
# setfacl -m m::r 1.txt
查看1.txt的权限和之前有什么不同
# file: 1.txt
# owner: root
# group: root
user::rw-
user:test:rwx #effective:r-- --这里会有一个警告,因为acl的权限大于了掩码的最高权限,此时的test用户依旧不可写
group::r--
mask::r--
other::r--
为目录设置默认ACL权限,设置后,在该目录内创建的文件依然继承该acl
# setfacl -m d:user1:rw a/
# mkdir b
# touch b/1.txt
# touch a/1.txt
# getfacl a/1.txt
# file: a/1.txt
# owner: root
# group: root
user::rw-
user:test:rw-
group::r-x #effective:r--
mask::rw-
other::r--
# getfacl b/1.txt
# file: b/1.txt
# owner: root
# group: root
user::rw-
group::r--
other::r--
删除ACL权限
# setfacl -x u:user1 1.txt
# setfacl -b 1.txt
递归设置acl参数
# mkdir /test/b
# touch /test/b/1.txt
# setfacl -m u:user1:rw /test/b
# getfacl /test/b
# file: b/
# owner: root
# group: root
user::rwx
user:user1:rw-
group::r-x
mask::rwx
other::r-x
# getfacl /test/b/1.txt
# file: b/1.txt
# owner: root
# group: root
user::rw-
group::r--
other::r--
# setfacl -Rm u:user1:rw /test/b 递归设置acl权限后,目录下所有内容均会拥有相同的acl权限
# file: b/1.txt
# owner: root
# group: root
user::rw-
user:user1:rw-
group::r--
mask::rw-
other::r--