运维工程师必备命令之权限管理

权限管理相关命令:

chmod、chown、setfacl、chattr、lsattr、

chmod命令:

变更文件或目录的权限

u  用户user,文件或目录的所有者。
g  用户组group,文件或目录所属群组
o  其它用户others
a  所有用户all,系统默认使用此项

+  添加某些权限
-  取消某些权限
=  设置文件的权限为给定的权限
r  表示可读权限
w  表示可写权限
x  表示可执行权限
-  表示没有权限   

s  设置权限suid和sgid,使用权限组合“u+s”设定文件的用户的ID位,“g+s”设置组ID位
t  只有目录或文件的所有者才可以删除目录下的文件

-R 递归处理,将指令目录下的所有文件及子目录一并处理

重点掌握:

  1. 【o+w | o=rw】将file1文件其他用户权限设置为可读可写:
[root@localhost ~]# ll
-rw-r--r--  1 root root    0 Aug 22 05:09 file1
[root@localhost ~]# chmod o+w file1 
[root@localhost ~]# ll
-rw-r--rw-  1 root root    0 Aug 22 05:09 file1
或者:
[root@localhost ~]# chmod o=rw file1
  1. 【o+w】将目录权限设置为其他用户可写,这时普通用户是可以进入到目录中任意删除,修改文件名(即使不是自己的文件),对文件的其他用户权限为不可写的文件也可以强制保存
chmod o+w /data/

lutixia1用户修改lutixia2用户的文件:
[lutixia1@localhost data]$ ll
-rw-r--r-- 1 lutixia2 lutixia2        30 Aug 22 05:49 fs
[lutixia1@localhost data]$ vim fs
...
#提示不能修改
E45: 'readonly' option is set (add ! to override)
这时可以强制保存(:wq!)。
[lutixia1@localhost data]$ cat fs 
this is test
this is lutixia2
this is lutixia1

3.【o-w】将目录权限设置为其他用户不可写,这时普通用户就无法删除,修改文件名,但是如果文件的其他用户有可写权限,还是可以写数据的。

总结一下:父目录其他用户有可写权限,其下子文件不管有没有可写权限,均可强行写入,修改! 父目录其他用户没有可写权限,其下子文件只有可写才有写入权限,且不具备删除,修改文件名权限。

  1. 【-t】对目录设置特殊权限,用户只能删除自己的文件。
[root@localhost ~]# chmod o+t /data/
#lutixia2想删除lutixia1的文件,失败
[lutixia2@localhost data]$ ll
-rw-r--r-- 1 lutixia1 lutixia1        63 Aug 22 05:58 fs
[lutixia2@localhost data]$ rm -rf fs
rm: cannot remove ‘fs’: Operation not permitted
  1. 【-s】设置权限suid和sgid,使用权限组合“u+s”设置使文件在执行阶段具有文件所有者的权限;“g+s”任何用户在此目录下创建的文件都具有和该目录所属的组相同的组。

【u+s】

#未设置前,普通用户执行netstat -ntlp,会提示没有root权限,普通用户看不了pid的属主:
[lutixia1@localhost data]$ netstat -nltp
(No info could be read for "-p": geteuid()=1003 but you should be root.)
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 0.0.0.0:111             0.0.0.0:*               LISTEN      -    

#设置suid后:
chmod u+s /usr/bin/netstat

[lutixia1@localhost data]$ netstat -nltp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 0.0.0.0:111             0.0.0.0:*               LISTEN      1/systemd           
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      1050/sshd

【g+s】 任何用户在此目录下创建的文件都具有和该目录所属的组相同的组

[root@localhost ~]# chmod g+s /data
[lutixia2@localhost data]$ ll
drwxrwsr-x 2 lutixia1 root         6 Aug 22 07:14 lutixia1
drwxrwsr-x 2 lutixia2 root         6 Aug 22 07:15 lutixia2

setfacl命令:

设置文件访问控制列表

【-m】修改文件的acl规则

#设置用户权限
setfacl -m  u:tixia:rw   abc.txt
#设置组权限
setfacl -m  g:web:rw     abc.txt
#取消用户所有权限
setfacl -m  u:lutixia:-  abc.txt
#取消其他用户得所有权限:
setfacl -m o::- abc.txt
#用户必须存在,否则会报错:
[root@localhost ~]# setfacl -m u:lutixia:rw /data/abc.txt
setfacl: Option -m: Invalid argument near character 3
[root@localhost ~]# id lutixia
id: lutixia: no such user
[root@localhost ~]# useradd lutixia
[root@localhost ~]# setfacl -m u:lutixia:rw /data/abc.txt

#getfacl用于查看文件acl权限:
[root@localhost ~]# getfacl /data/abc.txt
# file: data/abc.txt
# owner: root
# group: root

#第一个user没有写用户名,代表是默认属主root的权限
user::rw-
#第二个user代表得是lutixia用户得权限
user:lutixia:rw-
group::r--
mask::rw-
other::r--

#现在lutixia可以写入数据到abc.txt文件了
[lutixia@localhost ~]$ echo "this is lutixia" > /data/abc.txt

【-M】从文件中读取相应得权限进行设置,多用于批量管理用户权限:

#先创建一个文件:
touch acl.txt
#添加要设置得权限:
u:lutixia:rwx
u:lutixia1:rw
u:lutixia2:x
u:lutixia3:rx
#执行,其中abc.txt是要进行权限设置得文件:
setfacl -M acl.txt abc.txt

【-x】撤销某个用户得acl权限,恢复到普通ugo权限:

#不能单独撤销某一个权限,比如只撤销可写权限
setfacl -x u:lutixia abc.txt

【-b】撤销所有用户或者组得acl权限:

setfacl -b /data/abc.txt

【--set-file】复制一个文件acl权限到另外一个文件:

getfacl file1 | setfacl --set-file=- file2

-表示输出流

echo jfedu |cat -

【mask】会临时降低acl用户或者组的权限,只能降低用户权限,不能提升。

#设置acl用户的权限为rw:
[root@localhost data]# setfacl -m u:lutixia:rw abc.txt
#这时lutixia用户是可以写入的:
[lutixia@localhost data]$ echo "this is test" >> abc.txt

#设置mask:
[root@localhost data]# setfacl -m mask::r abc.txt
#这时acl用户只有读权限,不再可写:
[lutixia@localhost data]$ echo "this is test" >> abc.txt 
-bash: abc.txt: 权限不够


注意:如果lutixia用户本身r权限(只读权限),即使mask设置为rw,也是不能写的。
而且设置了mask之后,如果再次使用setfacl进行权限的设置,那么mask的作用就失效了。

【-d】继承上级目录的所有acl权限:

#提前设置好主目录的权限,否则,只能在其子目录有rwx权限
setfacl -m u:lutixia:rwx lutixia/
#添加继承权限
setfacl -m d:u:lutixia:rwx lutixia/

chattr命令:

改变文件属性

【+a】让某个文件只能往里面追加内容,不能删除

chattr +a /var/log/nginx/access.log

去掉属性就是-a

【+i】防止系统中某个关键文件被修改,删除

chattr +i /etc/fstab

获取文章更新,以及常用软件,可以关注公众号: 笨办法学linux

 

运维工程师必备命令之权限管理_第1张图片

你可能感兴趣的:(必备命令)