Linux用户组与权限

2,473 阅读4分钟

在 Linux 中,每个用户必须属于一个组,每个文件都有所有者、所在组、其他组的概念。这是基于万物皆文件的基础之上的,因为文件的至关重要性,文件之间的关系也就变得同等重要了。

如图所示,user1 创建了 file 文件,自然而然 file 的所有者是 user1,那么 user1 所在的组别一对于 file 来说就是所在组了。而组别一以外的组别对于 file 来说都是其他组。当然了,所有者或者所在组对于 file 文件来说都是可以变更的。而对于不同角色来说,对 file 文件有着不同的权限,接下来会详细解释。

图片

1.文件/目录的所有者

一般谁创建了该文件,谁就是该文件的所有者。可以使用 ls -ahl 查看文件的所有者 使用 chown [新的所有者] [文件名] 来修改文件的所有者。如果是目录的话 使用-R 选项将目录下的所有子文件进行递归处理。

chown tom /home/abc.txt 代表将abc的所有者改为Tom
chown -R tom /home/kkk 代表将kkk目录下的所有文件的所有者都改为Tom

2.组

组的创建

groupadd group1 //创建名为group1的组
useradd -g group1 user1 //创建一个用户user1并将他添加到group1 组中

查询用户所在的组

id user1 //查询user1用户所在的组

改变用户所在组

usermod -g 组名 用户名
usermod -d 目录名 用户名 //改变该用户登录的初始目录。用户需要有进入新目录的权限

修改文件或目录所在组

chgrp [选项] [newgroup] [文件/目录] 使用-R 选项将目录下的所有子文件进行递归处理。

chgrp group2 /home/abc.txt 将abc文件的所在组修改为group2
chgrp -R group2 /home/kkk 代表将kkk目录下的所有文件的所在组都改为group2

3.权限(rwx)

-rwxrw-r-- 1 root root 1213 Feb 2 09:39 abc.txt。这是使用ll查询后的结果,从第 2 位到第 10 位代表了 abc.txt 文件的详细权限。
abc.txt 的所有者root对其拥有可读,可写(因为其组权限也有 w,所以可以对文件进行删除。注意可修改不代表可删除,删除一个文件的前提是对该文件所在目录有可写权限),可执行的权限;root 组所在成员对该文件拥有查看目录,修改目录的权限;其他组的成员对这个文件只拥有读的权限,以下是对这三种权限的解释。

权限对于文件

  • r 代表可读:可以查看
  • w 代表可写:可以修改文件
  • x 代表可执行:文件可以被执行

权限对于目录

  • r 代表可读:可以查看,使用ls展示目录中的内容
  • w 代表可写:可以修改,对目录内文件进行新增、删除;重命名目录
  • x 代表可执行:可以进入该目录如cd

如果没有 r 权限,仅仅是不能展示目录下的文件,如果对目录拥有写的权限的话照样可以直接使用vim去更改目录下文件的内容。

修改文件或者目录的权限

通过修改文件或者目录的权限,从而对所有者、所在组和其他组的成员进行权限的划分。

  1. 通过+ - = 对权限进行变更。注意在不同角色之间要用逗号分隔
u:所有者 g:所在组 o:其他人 a:所有人(u,g,o的总和)
chmod u=rwx,g=rx,o=r a.txt   //代表对a文件,所有者有读写执行的权限,所在组有读和执行的权限,其他人有读的权限
chmod o+w a.txt   //代表给其他组添加对a文件可以修改的权限
  1. 用数字变更权限。(三种权限也可以用数字表示:r=4 ; w=2 ; x=1)
r=4 ; w=2 ; x=1 所以rwx= 7
chmod u=rwx,g=rx,o=r a.txt 也可以写作为 chmod 754 a.txt