文件或目录的权限

使用ls -l来查看文件与目录的详细权限(文件拥有x权限才能执行,目录拥有x权限才能打开)

[root@shu-test home]# ls -l
总用量 0
-rw-r--r--. 1 root root 0 11月 14 00:33 shu32
[root@shu-test home]#

-rw-r--r-- 除开前面- 分三段(最前面的一个表示文件的类型,也就是之前讲到的文件类型)详细数下总共10个字符 r=可读 w=可写 x=可执行 **r=4 w=2 x=1 rwx=7 rw-=6 --x=1 ** rw-r--r--=644 rw-r-xr-x=655 **第一段:所有者的权限 ** 第二段:所属组 属于哪个用户组 第三段:所有者与所属组以外的用户的权限

chmod命令

更改文件或目录的权限 格式: **chmod [参数][权限数字][文件名] ** 更改权限:

[root@shu-test home]# chmod 777 shutest.txt
[root@shu-test home]# ls -l
总用量 0
-rw-r--r--. 1 root root 0 11月 14 00:33 shu32
-rwxrwxrwx. 1 root root 0 11月 14 00:44 shutest.txt

实验:赋予1.txt权限700(root用户可执行可读写,其他用户以及root组都不行),切换到user01用户,无法操作1.txt;

[root@shu-test abc]# chmod 700 1.txt
[root@shu-test abc]# ls -la
总用量 0
drwxr-xr-x. 2 root root  19 12月 20 21:13 .
dr-xr-x---. 8 root root 256 12月 20 21:13 ..
-rwx------. 1 root root   0 12月 20 21:13 1.txt

[root@shu-test abc]# su user01
[user01@shu-test abc]$ ls -la
总用量 4
drwxr-xr-x. 2 root root  19 12月 20 21:14 .
dr-xr-x---. 8 root root 256 12月 20 21:13 ..
-rwx------. 1 root root   5 12月 20 21:14 1.txt

[user01@shu-test abc]$ cat 1.txt
cat: 1.txt: 权限不够
[user01@shu-test abc]$

-R:更改整个目录下的所有文件权限(所有该目录下的子文件子目录的权限都更改)(批量更改)

[root@shu-test /]# chmod -R 770 shu32/
[root@shu-test shu32]# ls -l
总用量 8
-rwxrwx---. 1 root root 9 11月 14 00:58 shuzonglu001.txt
-rwxrwx---. 1 root root 8 11月 14 00:58 shuzonglu002.txt

chown

更改文件所有者和所属组 格式: chown [参数] [用户名] [目录或文件]

更改文件所有者:chown user01 2.txt

[root@shu-test b]# ls -l
总用量 4
-rwx------. 1 root root 889 12月 20 21:19 2.txt
drwx------. 2 root root   6 12月 20 21:19 c
[root@shu-test b]# chown user01 2.txt
[root@shu-test b]# ls -l
总用量 4
-rwx------. 1 user01 root 889 12月 20 21:19 2.txt
drwx------. 2 root   root   6 12月 20 21:19 c
[root@shu-test b]#

chown 用户名:用户组 文件名 更改文件的所有者和所有组

[root@shu-test b]# ls -l
总用量 4
-rwx------. 1 user01 user01 889 12月 20 21:19 2.txt
drwx------. 2 root   root     6 12月 20 21:19 c
[root@shu-test b]# chown root:root 2.txt
[root@shu-test b]# ls -l
总用量 4
-rwx------. 1 root root 889 12月 20 21:19 2.txt
drwx------. 2 root root   6 12月 20 21:19 c
[root@shu-test b]#

chown -R 用户名:用户组 目录名 更改目录的所有者和所有组(子目录、子文件全部更改)

[root@shu-test a]# ls -l
总用量 0
drwx------. 3 root root 28 12月 20 21:19 b
[root@shu-test a]# chown -R user01:user01 b/
[root@shu-test a]# ls -l
总用量 0
drwx------. 3 user01 user01 28 12月 20 21:19 b
[root@shu-test a]# cd b/
[root@shu-test b]# ls -l
总用量 4
-rwx------. 1 user01 user01 889 12月 20 21:19 2.txt
drwx------. 2 user01 user01   6 12月 20 21:19 c
[root@shu-test b]#

chgrp命令

chgrp 用户组 目录或文件 更改所有组(不更改所有者)

[root@shu-test a]# ls -l
总用量 0
drwx------. 3 user01 user01 28 12月 20 21:19 b
[root@shu-test a]# chgrp root b/
[root@shu-test a]# ls -l
总用量 0
drwx------. 3 user01 root 28 12月 20 21:19 b
[root@shu-test a]#

-R:更改子目录下的所有文件的所有组(这里不做实验)


umask命令

当我们创建一个文件的时候默认权限为rw-r--r--(644)权限,目录为rwxr-xr-x(755),如果我们想创建一个文件默认值为777,那么就得用到umask命令了; 决定创建文件的默认权限 实验:

[root@shu-test a]# touch 1.txt
[root@shu-test a]# mkdir k
[root@shu-test a]# ls -ls
总用量 0
0 -rw-r--r--. 1 root root  0 12月 20 22:04 1.txt
0 drwxrwxrwx. 3 root root 28 12月 20 22:03 b
0 drwxr-xr-x. 2 root root  6 12月 20 22:07 k

查询umask值

[root@shu-test a]# umask
0022
[root@shu-test a]#

更改umask值

(改值后新建2.txt文件与S目录,查看默认权限文件为664,目录为775) 那么规律就来了 我们更改的文件权限是umask 0002 就是002 文件满权限是666 目录满权限是777 通过满权限减 必须使用权限号一位位相减,而不是数字减 文件最低满权限 :666=(rw-rw-rw-) 目录最低满权限:777=(rwxrwxrwx) umask 0002 =002 (-------w-) New文件默认权限=【文件满权限】-【umask值】=(rw-rw-rw-)-(-------w-)=(rw-rw-r--) New目录默认权限=【目录满权限】-【umask值】=(rwxrwxrwx)-(-------w-)=(rwxrwxr-x)

[root@shu-test a]# umask
0022
[root@shu-test a]# umask 0002
[root@shu-test a]# ls -ls
总用量 0
0 -rw-r--r--. 1 root root  0 12月 20 22:04 1.txt
0 drwxrwxrwx. 3 root root 28 12月 20 22:03 b
0 drwxr-xr-x. 2 root root  6 12月 20 22:07 k
[root@shu-test a]# touch 2.txt
[root@shu-test a]# mkdir s
[root@shu-test a]# ls -ls
总用量 0
0 -rw-r--r--. 1 root root  0 12月 20 22:04 1.txt
0 -rw-rw-r--. 1 root root  0 12月 20 22:12 2.txt
0 drwxrwxrwx. 3 root root 28 12月 20 22:03 b
0 drwxr-xr-x. 2 root root  6 12月 20 22:07 k
0 drwxrwxr-x. 2 root root  6 12月 20 22:12 s

隐藏权限lsattr、chattr

当你是该文件的拥有者、所有组、权限也有读写权限,但是无法编辑它,那么就要考虑它是否有隐藏权限;

lsattr命令

检查文件隐藏权限 lsattr 文件名

[root@shu-test a]# lsattr 1.txt
---------------- 1.txt

chattr命令

修改异常权限 chattr +i 文件名 不容许操作(无法保存)

[root@shu-test a]# lsattr 1.txt
---------------- 1.txt
[root@shu-test a]# chattr +i 1.txt
[root@shu-test a]# lsattr 1.txt
----i----------- 1.txt

chattr -i 文件名
取消I属性
[root@shu-test a]# lsattr 1.txt
----i----------- 1.txt
[root@shu-test a]# chattr -i 1.txt
[root@shu-test a]# lsattr 1.txt
---------------- 1.txt

chattr +a 文件名 只能在文件尾追加文字,不能修改,不能删除,不能改名字

[root@shu-test a]# lsattr 1.txt
-----a---------- 1.txt
[root@shu-test a]# rm 1.txt
rm:是否删除普通文件 "1.txt"?y
rm: 无法删除"1.txt": 不允许的操作
[root@shu-test a]#
[root@shu-test a]# echo aaaaaaaaa>>1.txt
[root@shu-test a]# cat 1.txt
222222222222221111
aaaaaaaaa
[root@shu-test a]#