查看文件权限
[root@localhost ~]# touch a.txt
[root@localhost ~]# ll a.txt
-rw-r--r-- 1 root root 0 Feb 15 07:52 a.txt
文件基本权限
- rwx r-x r-x user1 user1 FILENAME
类型 拥有者的权限 所属组的权限 其他人的权限 拥有者 属组 对象
对于文件:r读 w写 x执行
对于目录:r读(看到目录里面有什么) ls
w建文件、删除、移动 touch mkdir rm mv cp
x进入 cd
修改权限的相关命令:
chmod
作用:修改文件权限
u-w user 拥有者
g+x group 组
o=r other 其他人
a+x all 所有人
[root@localhost ~]# ll a.txt
-rw-r--r-- 1 root root 0 Feb 15 07:52 a.txt
[root@localhost ~]# chmod u-w a.txt
[root@localhost ~]# ll a.txt
-r--r--r-- 1 root root 0 Feb 15 07:52 a.txt
[root@localhost ~]# chmod g+x a.txt
[root@localhost ~]# ll a.txt
-r--r-xr-- 1 root root 0 Feb 15 07:52 a.txt
[root@localhost ~]# chmod o-r a.txt
[root@localhost ~]# ll a.txt
-r--r-x--- 1 root root 0 Feb 15 07:52 a.txt
[root@localhost ~]# chmod a=r a.txt
[root@localhost ~]# ll a.txt
-r--r--r-- 1 root root 0 Feb 15 07:52 a.txt
修改目录的权限
[root@localhost ~]# mkdir test
[root@localhost ~]# ll -d test/
drwxr-xr-x 2 root root 6 Feb 15 08:07 test/
[root@localhost ~]# chmod u-w test/
[root@localhost ~]# ll -d test/
dr-xr-xr-x 2 root root 6 Feb 15 08:07 test/
一次性修改多个权限:
[root@localhost ~]# chmod u=rwx a.txt
[root@localhost ~]# ll a.txt
-rwxr--r-- 1 root root 0 Feb 15 07:52 a.txt
使用数字表示权限
- rwx r-x r-x user1 user1 FILENAME
类型 拥有者的权限 所属组的权限 其他人的权限 属主 属组
rwx
r-- -w- --x
100 010 001 二进制 进制转换器
4 2 1 十进制
rw- 的值是多少? 4+2 = 6
r-x 4+1 = 5
rw-r--r-- 的值是多少? rw-=6 r--=4 r--=4 rw-r--r--=644
[root@localhost ~]# chmod 622 a.txt
[root@localhost ~]# ll a.txt
-rw--w--w- 1 root root 0 Feb 15 07:52 a.txt
[root@localhost ~]#
chown
作用:修改文件拥有者和所属组
语法:chown USER:GROUP 对象
chown USER 对象
chown :GROUP 对象
[root@localhost ~]# chown rm:bin a.txt
[root@localhost ~]# ll a.txt
-rw--w--w- 1 rm bin 0 Feb 15 07:52 a.txt
[root@localhost ~]# chown daemon a.txt
[root@localhost ~]# ll a.txt
-rw--w--w- 1 daemon bin 0 Feb 15 07:52 a.txt
[root@localhost ~]# chown :sys a.txt
[root@localhost ~]# ll a.txt
-rw--w--w- 1 daemon sys 0 Feb 15 07:52 a.txt
-R递归(目录下的所有内容全部更改,否则只修改目录)
[root@localhost ~]# chown rm test/ -R
[root@localhost ~]# ll -d test/
dr-xr-xr-x 2 rm root 30 Feb 15 08:21 test/
[root@localhost ~]# ll test/
total 0
-rw-r--r-- 1 rm root 0 Feb 15 08:21 a.txt
-rw-r--r-- 1 rm root 0 Feb 15 08:21 b.txt
一个文件只有读的权限,拥有者是否可以写这个文件? 文件所有者一定可以写文件
[root@localhost ~]# ll /home/rm/rm.txt
-r--r--r-- 1 rm rm 30 Feb 15 08:01 /home/rm/rm.txt
[root@localhost ~]# su - rm
[rm@localhost ~]$ vim rm.txt
结果:可以正常写入,注意:保存时用wq!
设置文件默认权限的补码:
系统用户:#umask 022
普通用户:#umask 002
计算方法:
文件默认权限=666-umask值 666-022=644
目录默认权限=777-umask 值 777-022=755
#这是一个好的记忆方法,但不严谨。
umask掩码为033 . 666-033=633 结果为: 644
计算方法:
6 6 6 umask 0 3 3
110 110 110 000 011 011 | 取反
111 100 100 \/
110 110 110 与 111 100 100
| /
110 100 100
6 4 4
了解:
/etc/bashrc
特殊权限:
SUID SGID Stickybit
s对应的数值为:u 4,g 2,o 1
SUID:
限定:只能设置在二进制可执行程序上面。对目录文本设置无效。
功能:程序运行时的权限从执行者变更成程序所有者。
[root@localhost ~]# which passwd
/usr/bin/passwd
[root@localhost ~]# ll /usr/bin/passwd
-rwsr-xr-x. 1 root root 27832 Jan 29 2014 /usr/bin/passwd
[root@localhost ~]# which less
/usr/bin/less
[root@localhost ~]# chmod u+s /usr/bin/less
[rm@localhost ~]$ less /etc/shadow
能看到文件里的内容
等同于
[root@localhost ~]# chmod 4755 /usr/bin/less
任务: s 的大小写有什么区别
SGID
限定:既可以给二进制可执行程序设置,也可以给目录设置。
功能:在设置了SGID权限的目录下建立文件时,新创建的文件的所属组会继承上级目录的所属组
[root@localhost ~]# mkdir xuegod
[root@localhost ~]# chown :rm xuegod/
[root@localhost ~]# ll -d xuegod/
drwxr--r-- 2 root rm 6 Feb 15 09:03 xuegod/
[root@localhost ~]# touch xuegod/rm.txt
[root@localhost ~]# touch xuegod/mk.txt
[root@localhost ~]# ll xuegod/
total 0
-rw-r--r-- 1 root root 0 Feb 15 09:04 mk.txt
-rw-r--r-- 1 root root 0 Feb 15 09:04 rm.txt
加上SGID
[root@localhost ~]# chmod g+s xuegod/
[root@localhost ~]# touch xuegod/docker.txt
[root@localhost ~]# ll xuegod/
total 0
-rw-r--r-- 1 root rm 0 Feb 15 09:06 docker.txt
-rw-r--r-- 1 root root 0 Feb 15 09:04 mk.txt
-rw-r--r-- 1 root root 0 Feb 15 09:04 rm.txt
Stickybit
限定:只作用于目录
功能:目录下创建的文件只有root、文件创建者、目录所有者才能删除
[root@localhost ~]# ll -d /tmp/
drwxrwxrwt. 14 root root 4096 Feb 15 09:08 /tmp/
[root@localhost ~]# chmod 1777 /share/
[root@localhost ~]# ll -d /share/
drwxrwxrwt 2 root root 6 Feb 15 09:10 /share/
[rm@localhost ~]$ cd /share/
[rm@localhost share]$ ls
[rm@localhost share]$ touch rm.txt
[root@localhost ~]# useradd mk
[root@localhost ~]# su - mk
[mk@localhost ~]$ cd /share/
[mk@localhost share]$ rm -rf rm.txt
rm: cannot remove ‘rm.txt’: Operation not permitted
扩展ACL
[root@localhost ~]# ll b.txt
-rw-r--r-- 1 root root 0 Feb 15 08:40 b.txt
[root@localhost ~]# getfacl b.txt
# file: b.txt
# owner: root
# group: root
user::rw-
group::r--
other::r--
设置
[root@localhost ~]# setfacl -m u:rm:rw b.txt
[root@localhost ~]# getfacl b.txt
# file: b.txt
# owner: root
# group: root
user::rw-
user:rm:rw-
group::r--
mask::rw-
other::r--
对目录进行设置
[root@localhost ~]# setfacl -R -m u:mk:rw test
(-R一定要在-m前面,表示目录下所有文件)
[root@localhost ~]# getfacl !$
getfacl test
# file: test
# owner: rm
# group: root
user::r-x
user:mk:rw-
group::r-x
mask::rwx
other::r-x
删除acl
[root@localhost ~]# setfacl -x u:rm b.txt #删除单个用户的acl权限
[root@localhost ~]# setfacl -b b.txt #删除所有用户的acl权限
实战-创建一个让root都无法删除的黑客文件
Linux文件系统扩展属性:chattr lsattr
+a 只能追加内容
+i 不能被修改
[root@localhost ~]# echo "xuegodlinux" > b.txt
[root@localhost ~]# cat b.txt
xuegodlinux
[root@localhost ~]# chattr +a b.txt
[root@localhost ~]# echo "123456" > b.txt
-bash: b.txt: Operation not permitted
[root@localhost ~]# echo "123456" >> b.txt
[root@localhost ~]# rm -rf b.txt
rm: cannot remove ‘b.txt’: Operation not permitted
[root@localhost ~]# chattr +i b.txt
[root@localhost ~]# echo "123456" >> b.txt
-bash: b.txt: Permission denied
[root@localhost ~]# lsattr b.txt
----ia---------- b.txt
[root@localhost ~]# chattr -i b.txt
[root@localhost ~]# chattr -a b.txt
[root@localhost ~]# lsattr b.txt
---------------- b.txt
实际应用:
[root@localhost ~]# chattr +a /etc/passwd
[root@localhost ~]# chattr +a /etc/shadow
还能针对日志文件进行设置