文件或目录权限chmod、更改所有者和所属组chown、umask、隐藏权限lsattr_chattr

214 文件或目录权限chmod

权限讲解

[root@mylinux ~]# ls -l
总用量 12
-rw-r--r--. 1 root root    7 12月 20 21:29 1.txt (文件详情中rw-r--r--这九位表示权限)

rw-r--r-- 这九位表示权限,分为三段
rw- 前三个为第一段,表示所有者的权限,分别是可读r,可写w,可执行x,如果是不行就用-表示
r-- 中间三个为第二段,表示所属组的权限。
r-- 最后三个为第三段,表示剩余其它用户的权限。

在上面这个文件中 所有者是root(为第一个root),所属组为root (第二个root)

我们这里的读写权限不仅可以用rwx表示还可以用数字表示
r = 4 w = 2 x = 1 rwx = 7 rw -= 6 r-- = 4 --x = 1
rw-r--r-- 用数字表示就是 644

chmod命令

chmod == change mode

更改一个文件的权限

[root@mylinux ~]# ls -l 1.txt 
-rw-r--r--. 1 root root 7 12月 20 21:29 1.txt
[root@mylinux ~]# chmod 700 1.txt 
[root@mylinux ~]# ls -l 1.txt 
-rwx------. 1 root root 7 12月 20 21:29 1.txt

在所有的ls -l里面的文件详情里面,-rw-r--r--.表示的是文件权限和文件类型,最后的那个.则表示受制于selinux(类似Windows防火墙),我们常常操作是关闭selinux。
我们可以通过setenforce 0来更改SELinux的状态为Permissive,但是这仅仅是暂时的

[root@mylinux ~]# setenforce 0
[root@mylinux ~]# getenforce
Permissive

永久性的关闭SELinux需要更改配置文件

vi /etc/selinux/config

关闭后重启,那个.就没有了

chmod只能更改单个文件或者目录的权限,如果想要更改目录权限的同时将子目录和目录下的文件

chmod -R选项

全部批量更改这时我们用到-R

[root@mylinux ~]# ls -l 3  
总用量 4
-rw-r--r--. 1 root root 7 12月 20 21:29 1.txt
[root@mylinux ~]# chmod -R 777 3/ (我们通过-R批量更改)
[root@mylinux ~]# ls -l 3
总用量 4
-rwxrwxrwx. 1 root root 7 12月 20 21:29 1.txt (我们发现虽然我们改的是目录3的权限,但是这里
1.txt也发生了改变)
-rwxrwxrwx. 1 root root 7 12月 20 21:29 1.txt
[root@mylinux ~]# ls -l
总用量 8
drwxrwxrwx. 2 root root   19 12月 20 23:50 3

chmod 通过rwx的方式来表示并更改权限

我们也可以通过rwx的方式来表示并更改权限

[root@mylinux ~]# chmod u=rw,g=r,o=r ./3/
[root@mylinux ~]# ls -l
总用量 8
drw-r--r--. 2 root root   19 12月 20 23:50 3

也可以通过a来为所有用户增加或减少权限,同样也可以对单个u或者g或者o来进行操作

[root@mylinux ~]# chmod a+w ./3/
[root@mylinux ~]# ls -l
总用量 8
drw-rw-rw-. 2 root root   19 12月 20 23:50 3
[root@mylinux ~]# chmod a-w ./3/
[root@mylinux ~]# ls -l
总用量 8
dr--r--r--. 2 root root   19 12月 20 23:50 3

215 更改所有者和所属组chown

chgrp命令更改所属组

chgrp == change group (更改所属组)

[root@mylinux ~]# chgrp wsl 5.txt 
[root@mylinux ~]# ls -l 5.txt 
-rwxrwxrwx. 1 wsl wsl 16 12月 20 21:31 5.txt

chown命令更改所有者和所属组

chown == change owner (更改所有者和所属组)

[root@mylinux ~]# cat /etc/passwd (查看用户,这里我们找到一个之前我们添加的wsl的用户)
wsl:x:1000:1000::/home/wsl:/bin/bash


[root@mylinux ~]# ls -l 5.txt 
-rwxrwxrwx. 1 root root 16 12月 20 21:31 5.txt
[root@mylinux ~]# chown wsl 5.txt 
[root@mylinux ~]# ls -l 5.txt 
-rwxrwxrwx. 1 wsl root 16 12月 20 21:31 5.txt

chown一次性更改所有者和所属组

[root@mylinux ~]# chown wsl:wsl 5.txt  (前面wsl是所有者,后面wsl是所属组)

chown只更改所属组

[root@mylinux ~]# chown :wsl 5.txt  (省略前面的wsl)

chown -R 的更改也支持级联更改

[root@mylinux ~]# chown -R wsl:wsl ./3/ (更改3目录及3目录下的所有文件及目录的所有者和所属组)

216 umask

umask初始权限详解

目录要有x权限才能打开
umask值是当前用户创建文件和目录时候控制权限的初始值
这里我们查看当前用户的umask值

[root@mylinux ~]# umask
0022 (umask值为0022)

当我们的用户umask值为0022的时候,我们来看创建目录和文件的权限值怎么计算
目录:(rwxrwxrwx)-(----w--w-)=(rwxr-xr-x)(这里我们只取umask值的后三位)
文件:(rw-rw-rw-)-(----w--w-)=(rw-r--r--)(我们的目录用(rwxrwxrwx)来减是因为目录打开需要x权限)
如果是特殊的情况下,如
目录:(rw-rw-rw-)-(-------wx)=(rw-rw-r--) (在最后一位 -减去x这里应该是-,本来就-就代表没有,减去x也还是没有)

[root@mylinux ~]# ls -l
总用量 4
drwxr-xr-x. 2 root root    6 12月 21 17:08 1
-rw-r--r--. 1 root root    0 12月 21 17:08 2.txt
-rw-------. 1 root root 1418 12月 12 23:42 anaconda-ks.cfg
drwxrwxr-x. 2 wsl  wsl   119 12月 17 22:02 frp_0.11.0_linux_amd64
[root@mylinux ~]# umask
0022

umask权限更改

我们来更改umask后再创建文件看看权限的变化

[root@mylinux ~]# umask 002 (我们更改umask值只需要更改后三位)
[root@mylinux ~]# mkdir 3
[root@mylinux ~]# touch 4.txt
[root@mylinux ~]# ls -l
总用量 4
drwxr-xr-x. 2 root root    6 12月 21 17:08 1
-rw-r--r--. 1 root root    0 12月 21 17:08 2.txt
drwxrwxr-x. 2 root root    6 12月 21 17:09 3
-rw-rw-r--. 1 root root    0 12月 21 17:09 4.txt

217 隐藏权限lsattr_chattr

隐藏 i 只读权限

增加特殊权限,只读权限

[root@mylinux ~]# chattr +i 2.txt (为2.txt增加只读权限)

我们在进入编辑模式后按i会得到提示这是一个只读文件,并且无论我们怎么写都不能保存

文件或目录权限chmod、更改所有者和所属组chown、umask、隐藏权限lsattr_chattr_第1张图片
提示不能写入内容

查看特殊权限

[root@mylinux ~]# lsattr 2.txt 
----i----------- 2.txt          (多了一个i)
[root@mylinux ~]# lsattr 4.txt 
---------------- 4.txt          (正常应该是什么都没有)
[root@mylinux ~]# ls -l
总用量 4
drwxr-xr-x. 2 root root    6 12月 21 17:08 1
-rw-r--r--. 1 root root    0 12月 21 17:08 2.txt
-rw-r--r--. 1 root root    0 12月 21 17:32 2.txt~ (我们写入失败后所产生的文件,系统用来保存我们写入的内容,写入成功该文件会覆盖源文件)

i 权限不仅不能不能写入,还不能更改名字,连删除都只能强制删除

删除 i 权限

[root@mylinux ~]# chattr -i 2.txt (删除之后就恢复正常了)

对于目录的操作是一样的,所有的权限也一样

[root@mylinux ~]# lsattr -d 1/ (查看目录本身的特殊权限)
---------------- 1/
[root@mylinux ~]# chattr +i 1/ (加上i权限)
[root@mylinux ~]# lsattr -d 1/
----i----------- 1/
[root@mylinux ~]# lsattr 1/  (发现其下面的子目录并没有加上)
---------------- 1/2

特殊权限a只能追加权限

a权限表示只能在文件的末尾进行追加,不能对文件进行改名删除或者更改原有文件内容等等,常用于日志类文件,用法和上一样。
可以touch更改时间信息。

[root@mylinux ~]# chattr +a 2.txt
[root@mylinux ~]# lsattr 2.txt
-----a---------- 2.txt
[root@mylinux ~]# head -n2 /etc/passwd > 2.txt (覆盖就不行)
-bash: 2.txt: 不允许的操作
[root@mylinux ~]# head -n2 /etc/passwd >> 2.txt (追加就可以)
[root@mylinux ~]# chattr -a 2.txt

对于目录的操作,a 权限也是可以的touch 操作的

[root@mylinux ~]# lsattr -R 1/  (-R 可以查看文件下的子文件和子目录)
---------------- 1/2

1/2:

你可能感兴趣的:(文件或目录权限chmod、更改所有者和所属组chown、umask、隐藏权限lsattr_chattr)