文件权限 UGO ,acl

权限对象

属主: u

属组: g

其他人: o

权限类型

读 r 4

写 w 2

执行 x 1

chown 可以修改文件所有者

chgrp 可以改变属组

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
sudo chgrp vagrant test.php
# 改成 vagrant 组

 sudo chown vagrant test.php
 # 改成 vagrant 用户
 
 :<<EOF
 -rw-r--r--  1 root root  53 Oct  5 19:20 .user.ini
[vagrant@localhost www.php.learn]$ sudo chgrp vagrant test.php
[vagrant@localhost www.php.learn]$ ls -al
total 20
drwxr-xr-x  2 www  www      89 Oct  5 20:58 .
drwxr-xr-x. 3 root root     27 Oct  5 19:20 ..
-rwxr--r--  1 root root    479 Oct  5 19:20 404.html
-rw-r--r--  1 root root      1 Oct  5 19:20 .htaccess
-rwxr--r--  1 root root    377 Oct  5 19:22 index.php
-rw-r--r--  1 root vagrant 484 Oct  5 20:58 test.php
-rw-r--r--  1 root root     53 Oct  5 19:20 .user.ini
[vagrant@localhost www.php.learn]$ sudo chown vagrant test.php
[vagrant@localhost www.php.learn]$ ls -al
total 20
drwxr-xr-x  2 www     www      89 Oct  5 20:58 .
drwxr-xr-x. 3 root    root     27 Oct  5 19:20 ..
-rwxr--r--  1 root    root    479 Oct  5 19:20 404.html
-rw-r--r--  1 root    root      1 Oct  5 19:20 .htaccess
-rwxr--r--  1 root    root    377 Oct  5 19:22 index.php
-rw-r--r--  1 vagrant vagrant 484 Oct  5 20:58 test.php
-rw-r--r--  1 root    root     53 Oct  5 19:20 .user.ini

 # 你们看 这就是 改用户和 组了
  
 EOF

使用演示

1
2
3
4
5
6
chmod a=rwx  test.php
chmod u=rwx test.php
chmod u=rwx,g=rw,o=r test.php
chmod u+x test.php
chmod u-w test.php
chmod 000 test.php # 删除全部权限

acl 方式修改文件权限

了解即可

学习教程

1
2
3
4
5
6
7
8
getfacl ./test.php

setfacl -m u:alice:rw ./test.php
# m 就是 modify 修改的意思
# 设置  Alice的 权限 为 rw

setfacl -m user:jack:rwx ./test.php
getfacl test.php

mask 的使用方法

mask 使用方法记录

总结

  • chmod 修改 基本权限
  • facl 修改特别的权限

suid 高级权限

1
2
3
4
5
6
7
8
ll -d /root
# 其他用户进不了 root 目录
chmod g+s  /home/hr
# 加上了 suid 权限 ,属组 就会被下面继承

# 设置文件粘滞位
chmod o+t /home/dir
# 只能被 root,文件所有者,目录所有者删除

suid 4

sgid 2

sticky 1 粘滞位

1
2
3
4
5
chmod u+s file
chmod g+s dir

chmod o+t dir
# 文件只能被我 或者 root删除

chattr

Linux文件除了具有基本权限rwx,及特殊权限(SUID、SGID、SBIT(Sticky))外,还有几个更接近底层的文件),我们可通过lsattr查看这些属性,并通过chattr来修改这些属性

让 root 也无法删除 【面试重点】

1
2
3
4
5
6
7
[root@VM-0-7-centos ~]# chattr +a app111.txt
[root@VM-0-7-centos ~]# lsattr app111.txt
-----a-------e-- app111.txt
[root@VM-0-7-centos ~]# rm app111.txt
rm: remove regular file ‘app111.txt’? y
rm: cannot remove ‘app111.txt’: Operation not permitted
[root@VM-0-7-centos ~]#

通过 chattr +a 属性,有了 a 属性 就无法被删除,只能被追加文件

通常我们会给日志 加这个权限,防止我们删除日志

  • a 只能追加
  • i immutable 不可改变
    • 只能 cat 查看 ,不能修改
    • etc/passwd 不能修改
  • A 不会去更新访问时间 【不用】
  • = 直接 去掉原来的所有权限 【也别用, 尽量用 chattr -a 的方式减去属性】

umask原理【进程掩码】

比如 umask 0022

我们新建的文件 ,要减去 组 和 其他人的 写权限(w =2)

umask 0777 ,

去掉新建文件的 所有人的 rwx 权限

进程 新建,目录默认权限 会受到umask 影响, umask 表示要减去的权限

每个进程 都有自己的 umask

我们可以修改 useradd 的 umask

1
2
vi /etc/login.defs
# 找到 UMASK 并且可以修改

修改 shell umask 永久值

1
2
vi /etc/profile
# 永久修改 umask

文件重定向

推荐使用 案例4

image-20211006152709477

1
mysql -uroot -p123 < bbs.sql