天天看点

Linux-用户和组管理(三)

作者:不寐旋律

话接上回。。。

内容概述:

4 文件权限管理

4.1 文件所有者和属组属性操作

4.1.1 设置文件的所有者chown

4.1.2 设置文件的属组信息chgrp

4.2 文件权限

4.2.1 文件权限说明

4.2.2 修改文件权限chmod

4.3 新建文件和目录的默认权限

4.4 访问控制列表ACL

4.4.1 ACL权限功能

4.4.2 ACL相关命令

4.4.3 备份和还原ACL

4 文件权限管理

Linux-用户和组管理(三)

4.1 文件所有者和属组属性操作

4.1.1 设置文件的所有者chown

chown 命令可以修改文件的属主,也可以修改文件属组

格式:

chown [选项]... [owner][:[group]] 文件

chown [选项]... - -reference=RFILE 文件

  • owner:只修改所有者
  • owner:group:同时修改所有者和属组
  • :GROUP:只修改属组,冒号也可用 . 替换
  • - -reference=RFILE:参考指定的属性,来修改
  • -R:递归,此选项慎用,相当危险

案例:

[root@nginx ~]# cp /etc/fstab f1.txt
[root@nginx ~]# 
[root@nginx ~]# pwd
/root
#所有者和所属组都是root
[root@nginx ~]# ll f1.txt 
-rw-r--r--. 1 root root 465 6月  25 12:44 f1.txt

#修改所有者
[root@nginx ~]# chown zhangsan f1.txt 
[root@nginx ~]# ll f1.txt 
-rw-r--r--. 1 zhangsan root 465 6月  25 12:44 f1.txt

#修改所属组
[root@nginx ~]# chown  :lisi f1.txt 
[root@nginx ~]# ll f1.txt 
-rw-r--r--. 1 zhangsan lisi 465 6月  25 12:44 f1.txt

#用这个格式(所有者.所属组)的方法同时修改文件的所有者和所有组
[root@nginx ~]# chown root.nginx f1.txt 
[root@nginx ~]# ll f1.txt 
-rw-r--r--. 1 root nginx 465 6月  25 12:44 f1.txt

#用这个格式(所有者:所属组)的方法同时修改文件的所有者和所有组
[root@nginx ~]# chown root:root f1.txt 
[root@nginx ~]# ll f1.txt 
-rw-r--r--. 1 root root 465 6月  25 12:44 f1.txt

#新建文件的所有者和所属组都是root
[root@nginx ~]# cp /etc/issue f2.txt
[root@nginx ~]# ll f2.txt 
-rw-r--r--. 1 root root 23 6月  25 13:00 f2.txt

#f1.txt文件的所有者和所属组是分别是张三:李四,而f2.txt则都是root
[root@nginx ~]# ll f1.txt f2.txt 
-rw-r--r--. 1 zhangsan lisi 465 6月  25 12:44 f1.txt
-rw-r--r--. 1 root     root  23 6月  25 13:00 f2.txt

#把f1.txt文件的所有者和所属组指定给到f2.txt文件
[root@nginx ~]# chown --reference=f1.txt  f2.txt 

#查看修改结果
[root@nginx ~]# ll f1.txt f2.txt 
-rw-r--r--. 1 zhangsan lisi 465 6月  25 12:44 f1.txt
-rw-r--r--. 1 zhangsan lisi  23 6月  25 13:00 f2.txt
[root@nginx ~]#            

4.1.2 设置文件的属组信息chgrp

chgrp 命令可以只修改文件的属组

格式:

chgrp [选项]... group 文件名

chgrp [选项]... --reference=RFILE FILE...

常用选项:

  • -R 递归

案例:

[root@nginx ~]# ll f1.txt 
-rw-r--r--. 1 zhangsan lisi 465 6月  25 12:44 f1.txt

[root@nginx ~]# chgrp root f1.txt 
[root@nginx ~]# ll f1.txt 
-rw-r--r--. 1 zhangsan root 465 6月  25 12:44 f1.txt
[root@nginx ~]#            

4.2 文件权限

4.2.1 文件权限说明

文件的权限主要针对三类对象进行定义

user :属主, u

group :属组, g

other :其他, o

需知:用户的最终权限,是从左向右进行顺序匹配;即,所有者:所属组:其他人,一旦匹配权限立即生效,不再向右查看其权限

每个文件针对每类访问者都定义了三种常用权限

r :readable,可读

w :writable,可写

x :executable,可执行

对文件的权限:

r:可使用文件查看类工具,比如:cat,可以获取其内容
w:可修改其内容
x:可以把此文件提请内核启动为一个进程,即可以执行(运行)此文件(此文件的内容必须是可执行)
-:无此权限,用短横号表示“-”           

对目录的权限:

r:可以使用ls查看此目录中文件列表
w:可在此目录中创建文件,也可删除此目录中的文件,而和此被删除的文件的权限无关
x:可以cd进入此目录,可以使用ls -l查看此目录中文件元数据(须配合r权限),属于目录的可访问的最
小权限
X:只给目录x权限,不给无执行权限的文件x权限           

文件权限UGO解释说明:

Linux-用户和组管理(三)
U:user,rwx;表示所有者(或叫属主),读、写、执行
G:group,rwx;表示所属组(或叫属组),读、写、执行
O:other,rwx;表示其他人,读、写、执行           

数学法表示rwx:

最高权限数字表示为777,即为rwx;最低权限为000,即为---。

r:数值为4

w:数值为2

x:数值为1

八进制数字:

--- 000 0
--x 001 1
-w- 010 2
-wx 011 3
r-- 100 4
r-x 101 5
rw- 110 6
rwx 111 7           

例如:

rw-r----- 640 
rwxr-xr-x 755           

4.2.2 修改文件权限chmod

格式:

chmod [选项]... MODE[,MODE]... FILE...

chmod [选项]... OCTAL-MODE FILE...

#参考RFILE文件的权限,将FILE的修改为同RFILE

chmod [选项]... --reference=RFILE FILE...

说明:

MODE:包含有who opt permission
who :u,g,o,a 
opt :+,-,=
permission :r,w,x

修改指定一类用户的所有权限
u=   g=  o=  ug=   a=  u=,g=
  
修改指定一类用户某个或某个权限
u+  u-  g+ g- o+ o- a+ a- + -
  
-R: 递归修改权限           

案例:

#给f1.txt文件,属主加上wx权限,属组减去r权限,给属主、属组、其他人都加上x权限
[root@nginx ~]# ll f1.txt 
-rw-r--r--. 1 zhangsan root 465 6月  25 12:44 f1.txt
[root@nginx ~]# 
[root@nginx ~]# chmod u+wx,g-r,o=rx f1.txt
[root@nginx ~]# ll f1.txt 
-rwx---r-x. 1 zhangsan root 465 6月  25 12:44 f1.txt
 
#给目录test的属组权限加上可读、写、执行权限
[root@nginx ~]#chmod  -R g+rwX  test/
 
 #给file文件权限改为属主为r-x,即可读、可执行,属组和其他都是不可读、写、执行
[root@nginx ~]#chmod  600 file           

4.3 新建文件和目录的默认权限

umask 的值可以用来保留在创建文件权限

实现方式:

  • 新建文件的默认权限: 666-umask,如果所得结果某位存在执行(奇数)权限,则将其权限+1,偶数不变
  • 新建目录的默认权限: 777-umask

非特权用户umask默认是 0002

root的umask 默认是 0022

查看umask

[root@nginx ~]# umask
0022

#模式方式显示
[root@nginx ~]# umask -S
u=rwx,g=rx,o=rx

#输出可被调用
[root@nginx ~]# umask -p
umask 0022
           

修改umask

[root@nginx ~]# umask

0022

[root@nginx ~]# umask 002

[root@nginx ~]# umask

0002

[root@nginx ~]#umask u=rw,g=r,o=

持久保存umask

  • 全局设置: /etc/bashrc
  • 用户设置:~/.bashrc

4.4 访问控制列表ACL

4.4.1 ACL权限功能

ACL:Access Control List,实现灵活的权限管理

除了文件的所有者,所属组和其它人,可以对更多的用户设置权限

CentOS7 默认创建的xfs和ext4文件系统具有ACL功能

CentOS7 之前版本,默认手工创建的ext4文件系统无ACL功能,需手动增加

[root@nginx ~]#tune2fs -o acl /dev/sdb1
[root@nginx ~]#mount  -o  acl /dev/sdb1 /mnt/test           

ACL生效顺序:

所有者,自定义用户,所属组|自定义组,其他人

4.4.2 ACL相关命令

setfacl 可以设置ACL权限

getfacl 可查看设置的ACL权限

案例:

[root@nginx ~]# ll f1.txt
-rwx---r-x. 1 zhangsan root 465 6月 25 12:44 f1.txt
[root@nginx ~]# setfacl -m u:lisi:- f1.txt
[root@nginx ~]# ll f1.txt
-rwx---r-x+ 1 zhangsan root 465 6月 25 12:44 f1.txt

[root@nginx ~]# getfacl f1.txt
# file: f1.txt
# owner: zhangsan
# group: root
user::rwx
user:lisi:---
group::---
mask::---
other::r-x
[root@nginx ~]#            

案例格式:

mount -o acl /directory

getfacl file |directory

setfacl -m u:wang:rwx   file|directory

setfacl -m g:admins:rw  file| directory

setfacl -x u:wang file |directory

#清除所有ACL权限
setfacl -b file1

#复制file1的acl权限给file2
getfacl file1 | setfacl --set-file=- file2
           

mask 权限

  • mask只影响除所有者和other的之外的人和组的最大权限
  • mask需要与用户的权限进行逻辑与运算后,才能变成有限的权限(Effective Permission)
  • 用户或组的设置必须存在于mask权限设定范围内才会生效

格式:

setfacl -m mask::rx file

案例;

[root@nginx ~]# ll f2.txt 
-rw-r--r--. 1 root root 23 6月  25 13:00 f2.txt
[root@nginx ~]# 
[root@nginx ~]# getfacl f2.txt
# file: f2.txt
# owner: root
# group: root
user::rw-
group::r--
other::r--

[root@nginx ~]# setfacl -m mask::rw f2.txt
[root@nginx ~]# 
[root@nginx ~]# getfacl f2.txt
# file: f2.txt
# owner: root
# group: root
user::rw-
group::r--
mask::rw-
other::r--

[root@nginx ~]# setfacl -m u:lisi:rwx f2.txt
[root@nginx ~]# getfacl f2.txt
# file: f2.txt
# owner: root
# group: root
user::rw-
user:lisi:rwx
group::r--
mask::rwx
other::r--
[root@nginx ~]#           

--set选项会把原有的ACL项都删除,用新的替代,需要注意的是一定要包含UGO的设置,不能象-m一样只是添加ACL就可以

案例:

setfacl --set u::rw,u:lisi:rw,g::r,o::- file1

4.4.3备份和还原ACL

主要的文件操作命令cp和mv都支持ACL,只是cp命令需要加上-p 参数。但是tar等常见的备份工具是不会保留目录和文件的ACL信息

案例:

#备份ACL
getfacl -R /tmp/dir > acl.txt

#消除ACL权限
setfacl -R -b /tmp/dir

#还原ACL权限
setfacl -R  --set-file=acl.txt /tmp/dir

#还原ACL权限
setfacl --restore acl.txt

#查看ACL权限
getfacl -R /tmp/dir           

今天就分享到这吧!

多‘’A( )C‘’一句,权限的管控还是挺有必要的,毕竟生产环境上还是经常用到的。。。