2.14 文件和目录权限chmod 2.15 更改全部者和所属组chown 2.16 umask 2.17 隐藏权限lsattr/chattr

1、chmod更改文件和目录权限

  • 命令chmod(change mode简写)用于改变用户对文件/目录的读写执行权限;
    格式:chmod xyz 文件名 (xyz是数字)
[root@linux-128 tmp]# chmod 750 111
[root@linux-128 tmp]# ls -ld 111
drwxr-x--- 2 root root 6 10月 23 23:11 111
  • linux默认目录权限最高为777;默认文件权限最高为666

查看目录信息linux

[root@linux-128 tmp]# ls -ld 111
drwxr-xr-x 2 root root 6 10月 23 23:11 111

前面文件属性的时候有讲到,文件或目录的详细信息分9段,第1段drwxr-xr-x包含文件的类型和全部者,所属组,其余用户对文件的权限;bash

  • r(read)可读
  • w(write)可写
  • x(executable)可执行
    r=4 w=2 x=1
    注意:目录必须有x权限,文件没有x权限

1. chmod //修改文件和目录的权限

[root@linux-128 tmp]# ls -ld 111
drwxr-xr-x 2 root root 6 10月 23 23:11 111
[root@linux-128 tmp]# chmod 750 111
[root@linux-128 tmp]# ls -ld 111
drwxr-x--- 2 root root 6 10月 23 23:11 111

2. chmod –R //联级更改,修改目录自己及目录下全部的子目录文件权限

[root@linux-128 tmp]# ls -l 222/1.txt  -ld 222/123	
drwxr-xr-x 2 root root 6 10月 25 23:42 222/123
-rw-r--r-- 1 root root 0 10月 25 23:42 222/1.txt
[root@linux-128 tmp]# chmod 700 -R 222
[root@linux-128 tmp]# ls -ld 222 -l 222/1.txt  -ld 222/123
drwx------ 3 root root 30 10月 25 23:42 222
drwx------ 2 root root  6 10月 25 23:42 222/123
-rwx------ 1 root root  0 10月 25 23:42 222/1.txt

还有一种修改方法:code

3. chmod a=rwx,g=rx,o=rx 文件名

  • u(user) 全部者
  • g(group)所属组
  • o(others)其余用户
[root@linux-128 tmp]# chmod u=rwx,g=rx,o=rx -R 222
[root@linux-128 tmp]# ls -ld 222 -l 222/1.txt  -ld 222/123
drwxr-xr-x 3 root root 30 10月 25 23:42 222
drwxr-xr-x 2 root root  6 10月 25 23:42 222/123
-rwxr-xr-x 1 root root  0 10月 25 23:42 222/1.txt
  • (all)所有
[root@linux-128 tmp]# chmod a-x -R 222
[root@linux-128 tmp]# ls -ld 222 -l 222/1.txt  -ld 222/123
drw-r--r-- 3 root root 30 10月 25 23:42 222
drw-r--r-- 2 root root  6 10月 25 23:42 222/123
-rw-r--r-- 1 root root  0 10月 25 23:42 222/1.txt

2、chown更改全部者和所属组

  • chown(change ownar)命令用来修改文件的所属主,所属组,其余用户
  • chown -R 做用于目录联级修改,目录自己和子目录文件。
[root@linux ~]# useradd user1              \\建立用户user1
[root@linux ~]# groupadd group1            \\建立组  group1
[root@linux ~]# chown user1:group1 5.txt   \\修改文件5.txt所属主为user1,所属组为group1
[root@linux ~]# ls -l 5.txt
-rw-r--r--. 1 user1 group1 78 10月 26 18:01 5.txt
chown user1 1.txt            \\修改属主
chown user1:group1 1.txt    \\修改属主,属组
chown user1.group1 1.txt     \\修改属主,属组
chown :group1 1.txt         \\修改属组
chown .group1 1.txt          \\修改属组
root@linux ~]# ls -l 1.txt
-rw-r--r--. 1 root root 0 10月 26 19:44 1.txt
[root@linux ~]# chown wzzhan 1.txt
[root@linux ~]# !ls
ls -l 1.txt
-rw-r--r--. 1 wzzhan root 0 10月 26 19:44 1.txt
[root@linux ~]# chown :wzzhan 1.txt
[root@linux ~]# !ls
ls -l 1.txt
-rw-r--r--. 1 wzzhan wzzhan 0 10月 26 19:44 1.txt
[root@linux ~]# chown root:root 1.txt
[root@linux ~]# ls -l 1.txt
-rw-r--r--. 1 root root 0 10月 26 19:44 1.txt
[root@linux ~]# chown wzzhan.wzzhan 1.txt   \\chown也能够用点来隔开
[root@linux ~]# !ls
ls -l 1.txt
-rw-r--r--. 1 wzzhan wzzhan 0 10月 26 19:44 1.txt

  • chgrp 修改文件属组 chgrp group1 1.txt
    chgrp -R group1 111

  • !ls 表示命令历史中以ls开头离我问最经的一条命令
  • history 历史命令
[root@linux ~]# history
   16  midir test
   17  mkdir test
   18  ls

!18  !后面加上历史命令前面的序号也能够执行。
[root@linux ~]# !18
ls
111.bak  222  4.txx  5.txt  6.txt  anaconda-ks.cfg  install.log.syslog  test
1.txt    444  4.txy  666    777    install.log      prem

3、umask命令用于改变文件的默认权限

umask XXX(3个x表示数字)
umask 022rem

[root@linux ~]# umask
0022

注意:一般只用到后面三位022 --- -w- -w-同步

  • 系统默认状况下目录权限值为755,文件权限为644,这个是有umask规定的
777  rwx rwx rwx        666  rw- rw- rw-
-022   --- -w- -w-        -022  --- -w- -w-  
=      rwx r-x r-x                      rw- r-- r--
=      7  5   5                          6   4   4

4、lsattr 查看文件的特殊属性

  1. lsattr -d 查看目录自己特殊属性
[root@linux-128 tmp]# lsattr 222
---------------- 222/1.txt
---------------- 222/123

[root@linux-128 tmp]# chattr +i 222/1.txt
[root@linux-128 tmp]# chattr +a 222/
123/   1.txt  2.txt
[root@linux-128 tmp]# chattr +a 222/123/
[root@linux-128 tmp]# lsattr -d 222
-----a---------- 222
  1. lsattr -R 联级,查看目录下子目录子文件的特殊属性
[root@linux-128 tmp]# lsattr -R 222
----i----------- 222/1.txt
-----a---------- 222/123
222/123:
---------------- 222/2.txt

5、chattr 增长删除设定特殊属性

  • chattr +a 增长后只能追加,不能删除或者直接更改它的内容,非root用户不能设置该属性
  • chattr +i 增长后不能作任何操做,不能添加,删除,重命名,设定连接,修改属主,属组。
  • chattr +A 增长后文件或者目录的atime将不可被修改
  • chattr +S 增长后会将数据同步写入磁盘中
  1. 例子1:给文件1.txt加上i权限,而后进行删除,修改、追加内容,修改文件属性,全部者,所属组。
[root@linux-128 tmp]# chattr +i 222/1.txt
[root@linux-128 tmp]# lsattr 222/1.txt
----i----------- 222/1.txt
[root@linux-128 tmp]# rm 222/1.txt
rm:是否删除普通空文件 "222/1.txt"?y
rm: 没法删除"222/1.txt": 不容许的操做
[root@linux-128 tmp]# echo '11111'>222/1.txt
-bash: 222/1.txt: 权限不够
[root@linux-128 tmp]# echo '11111'>>222/1.txt
-bash: 222/1.txt: 权限不够
[root@linux-128 tmp]# chmod 755 222/1.txt
chmod: 更改"222/1.txt" 的权限: 不容许的操做
[root@linux-128 tmp]# chown wuzhou:wuzhou  222/1.txt
chown: 正在更改"222/1.txt" 的全部者: 不容许的操做

删除i权限后就能正常修改了。it

[root@linux-128 tmp]# chattr -i 222/1.txt
[root@linux-128 tmp]# chown wuzhou:wuzhou  222/1.txt
[root@linux-128 tmp]# ls -l 222/1.txt
-rw-r--r-- 1 wuzhou wuzhou 0 10月 25 23:42 222/1.txt
  1. 例子2:给文件1.txt加上a权限,而后进行删除,修改、追加内容,修改文件属性,全部者,所属组。
[root@linux-128 tmp]# chattr +a 222/1.txt
[root@linux-128 tmp]# lsattr 222/1.txt
-----a---------- 222/1.txt
[root@linux-128 tmp]# rm 222/1.txt
rm:是否删除普通空文件 "222/1.txt"?y
rm: 没法删除"222/1.txt": 不容许的操做
[root@linux-128 tmp]# echo '1111'>222/1.txt
-bash: 222/1.txt: 不容许的操做
[root@linux-128 tmp]# echo '1111'>>222/1.txt
[root@linux-128 tmp]# cat 222/1.txt
1111
[root@linux-128 tmp]# chmod 755 222/1.txt
chmod: 更改"222/1.txt" 的权限: 不容许的操做
[root@linux-128 tmp]# mv 222/1.txt 222/2.txt
mv: 没法将"222/1.txt" 移动至"222/2.txt": 不容许的操做
[root@linux-128 tmp]# chown root:root 222/2.txt
chown: 没法访问"222/2.txt": 没有那个文件或目录
  • 注意:1.txt加上a权限后,只能进行追加内容

  • 针对目录来添加a,i权限
  1. 给目录加一个i 属性后,不能给这个目录作任何操做,可是不妨碍已经存在的文件进行修改内容,但不能删除这个文件。 例子:
[root@linux-128 tmp]# chattr +i 222
[root@linux-128 tmp]# touch 222/3.txt
touch: 没法建立"222/3.txt": 权限不够
[root@linux-128 tmp]# rm 222/1.txt
rm:是否删除普通文件 "222/1.txt"?y
rm: 没法删除"222/1.txt": 权限不够
[root@linux-128 tmp]# echo '123123'>222/1.txt
[root@linux-128 tmp]# cat 222/1.txt
123123
chattr +i   111
  1. 给目录加一个a 属性后,该目录能建立文件,修改文件里面的内容,可是不能删除。 例子:
[root@linux-128 tmp]# chattr +a 222
[root@linux-128 tmp]# touch 222/2.txt
[root@linux-128 tmp]# ls 222
123  1.txt  2.txt
[root@linux-128 tmp]# echo '112233'>>222/2.txt
[root@linux-128 tmp]# echo '112233'>222/2.txt
[root@linux-128 tmp]# cat 222/2.txt
112233
[root@linux-128 tmp]# rm 222/2.txt
rm:是否删除普通文件 "222/2.txt"?y
rm: 没法删除"222/2.txt": 不容许的操做