linux用户及权限

字母分析

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--
 
原文地址:https://www.cnblogs.com/lanchang/p/6537458.html