1.3 默认权限和遮罩值
所有的文件在创建时都被系统分配默认的权限,下面给出一个事例。
首先使用root用户登入系统,并执行如下命令:
touch root_file1 root_file2
mkdir root_dir1 root_dir2
接着使用如下命令来查看创建文件的默认权限:
ls -ld root_*
执行结果如下所示:
从里面可以获知,创建的root_file1、root_file2文件的权限都是644;而创建的root_dir1、root_dir2目录的权限都是755。此时似乎可以得出一个推论:文件的权限默认是644,目录的默认权限是755。
为了验证这个推论是否正确,我们须要切换另一个普通用户再度进行尝试,执行的命令如下所示:
touch u_file1 u_file2
mkdir u_dir1 u_dir2
接着使用如下命令来查看创建文件的默认权限:
ls -ld u_*
执行结果如下所示:
这里创建的u1_file1、u1_file2文件的权限都是664;而创建的u1_dir1、u1_dir2目录的权限都是775。
此时才会形成一个疑惑,这个默认权限是从何而至的?为何root用户和普通用户的默认权限会有所不同?
此时就须要引入umask概念,中文翻译为:遮罩。在Linux下,目录创建后的默认权限的值是“被umask描边777后的权限”;而对于文件而言,其创建后的默认权限是“umask描边666后的权限”。系统在/etc/profile文件中,设置了不同用户的描边值。因此,我们使用cat命令查看/etc/profile如下所示:
从里面可以看出,UID小于199的用户设置的umask值为002,相反,小于199的用户则设置为022。也就是说,umask值对于root用户来说是022,对于普通用户则是002。不同用户设置不同的描边值,这造成root用户和普通用户创建下来的文件和目录默认权限也有所不同。
那么怎样使用描边估算权限呢?
777可以表示为:rwxrwxrwx,如果描边值是022,用字符串表示为:----w--w-,那么后者第五位和第八位的w被描边掉,权限变为rwxr-xr-x,用数字表示就是755。如果描边值是002,用字符串表示为:-------w-,那么第八位的w被描边掉,权限变为rwxrwxr-x,用数字表示就是775。
666用字符串表示为:rw-rw-rw-,如果描边值是022,用字符串表示为:----w--w-,那么后者第五位和第八位的w被描边掉,权限变为rw-r--r--,用数字表示就是644。如果描边值是002,用字符串表示为:-------w-,那么第八位的w被描边掉,权限变为rw-rw-r--,用数字表示就是664。
二、相关操作
对于文件的权限的操作有三种,分别是:改变权限、改变文件拥有者和改变文件拥有组。
2.1 改变文件权限
改变文件权限对应命令为:chmod。在Linux下,每个文件就会定义对应的文件创建者(user)、拥有组(group)以及其他用户(others)的权限,用字母u(user)、g(group)、o(other)来分别代表拥有者、拥有组和其他人,而对应的具体权限则使用rwx的组合来定义。如果是降低权限,则使用+号;如果是删掉权限,则使用-号;如果是设置为某个权限,则使用=号。
如果要给用户组或其他人添加或删掉相关权限red hat linux,只须要将里面的u相应地更换成g或o即可。但是正如你们看见的,这种方法在同一时刻只能给文件拥有者、文件拥有组或是其他所有人设置权限linux为只读文件系统,如果要想同时为所有用户设置权限就须要使用数字表示法。需要说明的是linux为只读文件系统,r为4,w为2,x为1。如果权限是rwx,则用数字7表示;如果权限是r-x,则用数字5表示。假构想设置一个文件的权限是:拥有者的权限是读、写、执行(rwx),拥有组的权限是读、执行(r-x)linux安装,其他人的权限是只读(r--),那么可以使用命令chmod 754 somefile来进行设置。
下面给出对应的反例。
[root@localhost src]# ll
总用量 0
-rw-r--r--. 1 root root 0 5月 20 17:54 test.txt
# 为test.txt所属的用户增加执行权限
[root@localhost src]# chmod u+x test.txt
[root@localhost src]# ll
总用量 0
-rwxr--r--. 1 root root 0 5月 20 17:54 test.txt
# 为test.txt所属用户组增加写入权限
[root@localhost src]# chmod g+w test.txt
[root@localhost src]# ll
总用量 0
-rwxrw-r--. 1 root root 0 5月 20 17:54 test.txt
# 为test.txt文件设置权限:776表示所属用户和所属用户组有读取、写入和执行权限,而其他用户只有读取和写入权限
[root@localhost src]# chmod 776 test.txt
[root@localhost src]# ll
总用量 0
-rwxrwxrw-. 1 root root 0 5月 20 17:54 test.txt
此外,如果须要更改的对象是一个目录而非文件,并且须要对该目录下所有的文件、子目录、以及子目录下所有的文件和目录都进权限设置,此时须要使用-R参数,也就是chmod -R 754 somedir。
2.2 改变文件拥有者
更改文件拥有者的命令为:chown,该命令也具备修改文件拥有组的功能。默认情况下,当前登入系统的用户即为新创建文件或目录的拥有者。下面给出对应的示例:
[root@localhost src]# ll
总用量 0
-rwxrwxrw-. 1 root root 0 5月 20 17:54 test.txt
# 将test.txt的文件拥有者修改为user1
[root@localhost src]# chown user1:user2 test.txt
[root@localhost src]# ll
总用量 0
# 此时发现文件的拥有者已经变为了user1
-rwxrwxrw-. 1 user1 user2 0 5月 20 17:54 test.txt
需要说明的一点,如果更改的对象不是一个文件而是一个目录时,且须要对该目录下所有的文件、子目录以及子目录下所有的文件和目录都须要进行更改时,就须要使用-R参数。
2.3 改变文件拥有组
改变文件拥有者使用的命令为:chgrp,下面给出对应的事例:
[root@localhost src]# ll
总用量 0
-rwxrwxrw-. 1 user1 user2 0 5月 20 17:54 test.txt
# 将test.txt的所属组修改为user1用户组
[root@localhost src]# chgrp user1 test.txt
[root@localhost src]# ll
总用量 0
-rwxrwxrw-. 1 user1 user1 0 5月 20 17:54 test.txt
到此,关于Linux文件权限的接收就早已完毕,希望对你们有所帮助。