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会得到提示这是一个只读文件,并且无论我们怎么写都不能保存
查看特殊权限
[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: