我们都知道用ls -l可以查看文件或目录的信息,包括文件的权限,就像下面"/bin"的权限"lrwxrwxrwx.",通常把这十一位叫做权限位,而最后的一个"."是在Redhat6之后加入的,那么这十一位表达的含义是什么呢。
#查看根目录文件的权限 [root@localhost /]# ls -l 总用量 58 lrwxrwxrwx. 1 root root 7 6月 22 2021 bin -> usr/bin dr-xr-xr-x. 6 root root 1024 10月 15 00:51 boot drwxr-xr-x. 19 root root 3080 1月 5 19:18 dev drwxr-xr-x. 81 root root 4096 1月 5 21:59 etc drwxr-xr-x. 3 root root 4096 10月 25 01:11 home lrwxrwxrwx. 1 root root 7 6月 22 2021 lib -> usr/lib lrwxrwxrwx. 1 root root 9 6月 22 2021 lib64 -> usr/lib64 drwx------. 2 root root 16384 10月 15 00:12 lost+found drwxr-xr-x. 2 root root 4096 6月 22 2021 media drwxr-xr-x. 3 root root 4096 10月 15 00:17 mnt drwxr-xr-x. 2 root root 4096 6月 22 2021 opt dr-xr-xr-x. 168 root root 0 1月 5 19:18 proc dr-xr-x---. 2 root root 4096 1月 5 19:20 root drwxr-xr-x. 25 root root 680 1月 5 19:18 run lrwxrwxrwx. 1 root root 8 6月 22 2021 sbin -> usr/sbin drwxr-xr-x. 2 root root 4096 6月 22 2021 srv dr-xr-xr-x. 13 root root 0 1月 5 19:18 sys drwxrwxrwt. 8 root root 4096 1月 5 21:59 tmp drwxr-xr-x. 12 root root 4096 10月 15 00:17 usr drwxr-xr-x. 20 root root 4096 10月 15 00:51 var
权限位的第一位表示的是文件的类型,Linux不像Windows用拓展名来表示文件的类型,而是用权限位的第一位来表示文件的类型,下面列出一些Linux中常见的文件类型。
第一位 | 文件类型 |
---|---|
- | 普通文件。 |
b | 块设备文件,这是一种特殊文件,存储设备都是这种文件,如分区文件/dev/sda1就是这种文件 |
c | 字符设备文件,则也是特殊设备文件,输入设备一般都是这种文件,如鼠标、键盘等。 |
l | 软链接文件。 |
p | 管道符文件,非常少见。 |
s | 套接字文件,这也是一种特殊设备文件,一些服务支持Socket访问,就会产生这样的文件。 |
第十一位的"."代表该文件是否受SELinux的保护。
从“/bin”来看
lrwxrwxrwx. 1 root root 7 6月 22 2021 bin -> usr/bin
第一个root表示文件所属者为root用户。
第二个root表示文件所属组为root组。
执行权限:所有用户,普通用户只能修改所有者是自己的权限。
命令格式:
[root@localhost ~]# chmod 权限模式 文件名
常用选项:-R 递归设置权限,也就是给子目录中所有的文件设定权限。
chmod命令的权限模式的格式是“[用户身份][赋予方式][权限]”的格式。
用户身份:
赋予方式:
权限:
例:
[root@localhost ~]# ls -l 总用量 8 -rwxrw-r--. 1 root root 4 1月 5 22:28 abc -rw-------. 1 root root 1134 10月 15 00:20 anaconda-ks.cfg [root@localhost ~]# chmod o+w abc #为其他用户赋予写权限 [root@localhost ~]# ls -l 总用量 8 -rwxrw-rw-. 1 root root 4 1月 5 22:28 abc -rw-------. 1 root root 1134 10月 15 00:20 anaconda-ks.cfg [root@localhost ~]# chmod u-x abc #为所属者减去执行权限 [root@localhost ~]# ls -l 总用量 8 -rw-rw-rw-. 1 root root 4 1月 5 22:28 abc -rw-------. 1 root root 1134 10月 15 00:20 anaconda-ks.cfg [root@localhost ~]# chmod o=r-- abc #为其他用户赋予读权限,减去写权限和执行权限 [root@localhost ~]# ls -l 总用量 8 -rw-rw-r--. 1 root root 4 1月 5 22:28 abc -rw-------. 1 root root 1134 10月 15 00:20 anaconda-ks.cfg
例:
[root@localhost ~]# chmod 644 abc #为文件abc赋予644权限 [root@localhost ~]# ls -l 总用量 8 -rw-r--r--. 1 root root 4 1月 5 22:28 abc -rw-------. 1 root root 1134 10月 15 00:20 anaconda-ks.cfg
作用:改变文件所属者和所属组
执行权限:root用户
命令格式:
[root@localhost ~]# chown [选项] 所有者:所有组 文件或目录 #所有者和所属组可以用"."或":"隔开
常用选项:-R 递归设置权限,也就是给子目录中的所有文件都设置权限。
例:
[root@localhost ~]# ls -l 总用量 8 -rw-r--r--. 1 root root 4 1月 5 22:28 abc -rw-------. 1 root root 1134 10月 15 00:20 anaconda-ks.cfg [root@localhost ~]# chown u1:u1 abc #修改文件abc所属者和所属组 [root@localhost ~]# ls -l 总用量 8 -rw-r--r--. 1 u1 u1 4 1月 5 22:28 abc -rw-------. 1 root root 1134 10月 15 00:20 anaconda-ks.cfg
作用:修改文件或目录所属组。
执行权限:root用户。
[root@localhost ~]# chgrp u1 abc #修改文件abc的用户组 [root@localhost ~]# ls -l 总用量 8 -rw-r--r--. 1 root u1 4 1月 5 22:28 abc -rw-------. 1 root root 1134 10月 15 00:20 anaconda-ks.cfg
因为chown既可以修改文件或目录的所属者,也可以修改所属组,而chgrp只能修改所属组,所以一般使用chown。
读、写、执行对于文件和目录的作用是不同的。(root用户始终拥有最大权限。)
目录的可用权限只有三个:
[root@localhost ~]# umask 0022 #用八进制数值显示umask权限 [root@localhost ~]# umask -S u=rwx,g=rx,o=rx #用字母表示文件和目录的初始权限
我们需要先了解一下新建文件和目录的最大权限:
一般也无需修改umask权限,若要修改有两种方法。
[root@localhost ~]# umask 011 [root@localhost ~]# umask 0011 [root@localhost ~]# umask 022 [root@localhost ~]# umask 0022
umask默认权限的配置在"/etc/profile"中修改,"/etc/profie"是环境变量配置文件中的一个。
# By default, we want umask to get set. This sets it for login shell # Current threshold for system reserved uid/gids is 200 # You could check uidgid reservation validity in # /usr/share/doc/setup-*/uidgid file if [ $UID -gt 199 ] && [ "`/usr/bin/id -gn`" = "`/usr/bin/id -un`" ]; then umask 002 else umask 022 fi
Linux中默认root用户的UID为0;创建的普通用户UID从500开始,按照配置文件中说明,当用户的UID大于199时,umask值默认为002;当用户UID小于等于199时,umask值默认022。修改配置文件,就可永久修改umask值,但一般不建议修改。
ps:尚硅谷linux视频课程学习笔记