文件权限的更改
在Linux下所有文件都有自己的针对不同用户类型的访问权限;比如下面的test.txt 文件的权限:
[root@localhost linux_learn]# ll
总用量 4
drwxr-xr-x. 2 root root 6 8月 5 09:29 chapter1
-rw-r--r--. 2 root root 23 11月 23 2018 issue.hard
lrwxrwxrwx. 1 root root 10 8月 5 09:02 issue.soft -> /etc/issue
-rw-r--r--. 1 root root 0 8月 5 16:18 test.txt
-rw-r--r--代表test.txt 是一个文件,且对文件所有者为可读可写不可执行(rw-)、对用户所属组和其他人的权限为可读不可写也不可执行(r--)。那么如何修改它的访问权限呢?可以通过chmod命令来加以修改。
chmod
语法:chmod [{ugoa}{+-=}{rwx}] [文件或目录]
看上去有点复杂,搞懂每一个参数之后就可以很容易的记住。u代表user即所有者,g代表group即所属组,o代表other即其他人。+表示添加某些权限,-表示剥夺某一些权限,=即表示不论之前文件的权限如何都按照新的赋予的权限来执行。请看下面几个例子:
给文件test.txt 的所有者赋予可执行的权限:
[root@localhost linux_learn]# chmod u+x test.txt
[root@localhost linux_learn]# ll test.txt
-rwxr--r--. 1 root root 0 8月 5 16:18 test.txt
可以看到test.txt 变为-rwxr--r--;
其他的权限设置于此类似,不在赘述。
还有其他的设置权限的方式吗?我们可以看到这样的事实:
- - - rwx rw-r- - r - - ——有字母代表1,-代表0,即用二进制代表执行权限
000 111 110100100
那么这样的话,我们就可以指定一个在0-777之间的任意数值对文件的访问权限进行设置。例如,我们把test.txt 设置为---------,
则可以这样执行:
[root@localhost linux_learn]# ll test.txt
-rwxr-xr-x. 1 root root 0 8月 5 16:18 test.txt 设置前
[root@localhost linux_learn]# chmod 0 test.txt
[root@localhost linux_learn]# ll test.txt
----------. 1 root root 0 8月 5 16:18 test.txt 设置后
以上内容均为对文件权限的操作,目录的权限于此相同,不在重复举例!
注意:只有所有者和root才能修改文件或目录的权限!
chown
语法:chown [用户] [文件或目录]
chown是用来修改文件或目录的所有者。例如:
修改test.txt的文件所有者为testuser(一个用户):
[root@localhost linux_learn]# ll test.txt
----------. 1 root root 0 8月 5 16:18 test.txt 修改前所有者为root
[root@localhost linux_learn]# chown testuser test.txt
[root@localhost linux_learn]# ll test.txt
----------. 1 testuser root 0 8月 5 16:18 test.txt 修改后所有者为testuser
chgrp
语法:chgrp [用户组] [文件或目录]
既然可以修改一个文件或目录的所有者,那么理所应当地可以修改它的所属组(一类拥有它的用户)。chgrp命令便可以实现这样的操作,还是以test.txt为例:
修改test.txt的文件所属组为testgroup:
[root@localhost linux_learn]# ll test.txt
----------. 1 testuser root 0 8月 5 16:18 test.txt 修改前所属组为root
[root@localhost linux_learn]# chgrp testgroup test.txt
[root@localhost linux_learn]# ll test.txt
----------. 1 testuser testgroup 0 8月 5 16:18 test.txt 修改后所属组为testgroup
umask
umask即权限掩码;默认值为0022
当我们创建一个文件或者目录时,创建后可以看到文件的默认权限为:rw-r--r--,而目录的默认权限是:rwxr-xr-x;例如下面:
创建文件testumask.c和目录testumask:
[root@localhost linux_learn]# touch testumask.c
[root@localhost linux_learn]# mkdir testumask
[root@localhost linux_learn]# ls -l
总用量 4
drwxr-xr-x. 2 root root 6 8月 5 09:29 chapter1
-rw-r--r--. 2 root root 23 11月 23 2018 issue.hard
lrwxrwxrwx. 1 root root 10 8月 5 09:02 issue.soft -> /etc/issue
drwxr-xr-x. 2 root root 6 8月 5 17:00 test
-rw-r--r--. 1 root root 0 8月 5 17:01 test1.c
----------. 1 testuser testgroup 0 8月 5 16:18 test.txt
drwxr-xr-x. 2 root root 6 8月 5 17:06 testumask 权限为:rwxr-xr-x
-rw-r--r--. 1 root root 0 8月 5 17:06 testumask.c 权限为:rw-r--r--
为什么它们的默认值会是如此?怎样才能修改?想要直到这些,我们就需要知道这些默认权限是如何生成的。
在创建文件时,文件的默认权限为:rw-rw-rw-,即所有用户只有读写权限,没有执行权限(安全考虑)。那为何创建后会变为rw-r--r--呢?
原来rw-rw-rw-会与umask的值做异或运算。如下:
umask=0022=000010010;而rw-rw-rw-=110110110; 异或(对应位不同取1相同取0)运算结果为:110100100即rw- r-- r--;
也可以把umask看作是--- -w- -w-,不同取字母,相同取-。即如下(有点啰嗦):
- - - - w - - w -
rw- r w - r w -
rw- r - - r - -
同理,在目录被创建时的默认权限为:rwxrwxrwx,与umask做异或运算后变为:rwxr-xr-x;
知道了原理,那么我们就可以通过修改umask的值来修改文件或目录的默认权限;
由上述原理可知,如果我们将umask的值设为0000,则不会影响文件或目录的初始值(0与其他值做异或不起作用)。
修改umask的值为0000后创建文件testumask_new.c和目录testumask_new:
[root@localhost linux_learn]# umask 0000
[root@localhost linux_learn]# touch testumask_new.c
[root@localhost linux_learn]# mkdir testumask_new
[root@localhost linux_learn]# ls -l
总用量 4
drwxr-xr-x. 2 root root 6 8月 5 09:29 chapter1
-rw-r--r--. 2 root root 23 11月 23 2018 issue.hard
lrwxrwxrwx. 1 root root 10 8月 5 09:02 issue.soft -> /etc/issue
drwxr-xr-x. 2 root root 6 8月 5 17:00 test
-rw-r--r--. 1 root root 0 8月 5 17:01 test1.c
----------. 1 testuser testgroup 0 8月 5 16:18 test.txt
drwxr-xr-x. 2 root root 6 8月 5 17:06 testumask
-rw-r--r--. 1 root root 0 8月 5 17:06 testumask.c
drwxrwxrwx. 2 root root 6 8月 5 17:27 testumask_new 权限为:rwxrwxrwx
-rw-rw-rw-. 1 root root 0 8月 5 17:27 testumask_new.c 权限为:rw-rw-rw-
由上述实验结果可知文件和目录的初始权限值。由此可知,如果我们不对umask的值进行修改,则我们创建的文件和目录的权限的默认值分别为:rw-r--r--和rwxr-xr-x.
我的博客源地址:http://120.27.248.71/index.php/2019/08/05/quan_xian_guan_li_ming_ling/#more-154