文件权限 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
1
|
mysql -uroot -p123 < bbs.sql
|