权限
1. 文件权限
在 Linux/Unix 系统中,每个文件和文件夹都包含一组权限设置,用来决定谁可以访问和操作它。
对于这部分的具体内容,我们已经在用户管理中的用户与用户组详细介绍了
如果,你完全看得懂下面的内容,那么请继续阅读即可,否则,就应该去复习了
drwxr-xr-x 2 elo operator 4096 Dec 1 11:45 /home/elo2. 修改权限
我们可以使用 chmod 修改文件权限,chmod 是 change mode的缩写,其中mode指的就是“文件权限模式”
我们知道,权限有用户的权限、组的权限和其他人的权限,有两种方法可以修改它们:
如果你只希望修改一部分的权限:
比如只给用户加执行权限,或者只给组加写权限),最推荐的还是用符号法,因为它可以“叠加”或“去除”某项权限,而不会影响其它权限。
例如:
chmod u+x file 给用户增加执行权限chmod g-w file 去掉组的写权限chmod o+r file 给其他人增加阅读的权限这样的写法是顾名思义的,只要认识,并且会使用如下的符号就可以了
-
u:用户(user/owner) -
g:组(group) -
o:其他人(others) -
a:所有人(all) -
+:添加权限 -
-:去除权限
如果你希望同时修改所有权限:
一次性指定所有三组权限,那么推荐的还是数字法
例如:
chmod 755 filechmod 644 file相比于符号法,数字法就没有那么顾名思义了,下面,让我们具体介绍其中的规则:
- 每种权限是一个数字: r = 4, w = 2, x = 1
- 三个数字,例如上面的
755,644,从前往后分别代表用户、组、其它 - 其中的每个数字,组合权限用加法,例如:
rwx = 4+2+1 = 7,那么意味着它拥有读取,修改和执行的权限
所以我们就可以对如上的例子进行解释,例如 chmod 755 file,那意味着给用户设置读写和执行的权限,给组和其他人设置读和执行的权限
随便改权限有可能让敏感文件被所有人修改,如果你在修改权限,请清楚这一点
3. 所有权权限
除了可以修改文件的权限之外,你还可以修改文件的所有者(用户)和用户组。
修改文件的所有者(用户)
$ sudo chown elo myfile可以使用 chown(change owner)来修改文件的所有者。
注意:只有 root 用户才能更改文件的所有者。普通用户不能把文件的所有者改成别人。
修改文件的组
$ sudo chgrp operator myfile可以使用 chgrp(change group)来修改文件的所属组。
文件的拥有者本人和 root 用户都可以更改文件的组(前提是目标组也是该用户所属的组)。
同时修改所有者和组
$ sudo chown elo:operator myfile在用户名后加冒号(:)和组名,可以同时修改文件的拥有者和组。
4. umask
umask,全称是 user file creation mask,意思是用户文件创建权限掩码“
它决定了新建文件或目录时,默认“去掉”哪些权限。
前面我们学习了数字法修改权限,在 Linux 中,**新建文件的”理论最大权限“**一般是:
-
文件:666(rw-rw-rw-,所有人读写)
-
目录:777(rwxrwxrwx,所有人读写执行)
但是,当我们实际创建文件和目录的时候,权限通常不会那么开放,例如,你创建一个文件的时候,默认不希望其他人可以读写它,那么就可以套用一个”umask”,在创建文件的时候,自动取消部分权限
例如,我们可以将 umask 设置为 022,那么:
-
文件的最大权限是 666
666 - 022 = 644(rw-r—r—)
所以新建文件默认只有自己可读写,组和其他人只能读
-
目录的最大权限是 777
777 - 022 = 755(rwxr-xr-x)
新建目录自己可读写执行,组和其他人只能读和执行(可以进入目录)
5. SetuidS
在用户管理的最后一个部分,我们提到了可以使用 passwd 命令修改密码
作为一个普通用户,你当然可以使用 passwd 命令修改自己的密码。但是密码,正如我们所知,密码是存储在 /etc/shadow 中的,然而这个文件是不支持一个普通用户去修改的,所以你到底可不可以修改自己的密码呢?
我先来引入一个简单的例子:
部分信息可能已经过时