用户组

群组是大家都熟悉的东西,群组有群主,也就是创建者。群管理员有一定的管理权限,比如上传群文件、管理成员等权限;群成员也有一定的权限,比如下载群文件。

私有组

一般来说,每一个用户都有自己的一个初始组,指的是与用户同名、同 ID 的一个用户组,称之为某用户的私有组。在 Linux 中,用户都不是独立存在的,总是有一个与之绑定的私有组(初始组)。

属主和属组

一个文件(目录)都有它的所属权,通过ls -l命令可以查看某目录下的属主、属组两个字段。

monitor@ubuntu:/tmp$ ls -l
total 1
drwxr-x--- 2 teacher teacher 4096 10月 7 17:31 class-work

一般来说,属主有对这个文件的所有权。按照从左到右的顺序:

  1. teacher:文件的属主,也就是它的创建者、所属者。
  2. teacher:文件的属组,也就是它属于的用户组。

属主和属组要结合文件的权限字符drwxr-x---,它说明了属主有什么权限,属组有什么权限,以及其他人有什么权限:

  1. 属主:有读、写、执行权限;
  2. 属组:有读、执行权限;
  3. 其他人:没有权限。

属于 teacher 用户组的成员拥有查看该目录的权限,不属于该用户组下的用户就没有任何权限。group 文件,组与组成员的信息:

teacher:x:1001:monitor
monitor:x:1002:student
student:x:1003:

当前登入的用户是 monitor,monitor 属于 teacher 用户组的成员。所以,teacher、monitor 用户都可以访问该目录。值得注意的是 student 属于 monitor 用户组的成员,但 student 不能访问该目录,因为只能直接继承用户组的权限,而不能间接继承用户组的权限:teacher <= monitor <≠ student

student 可以有 monitor 的权限,也就是说,除非 class-work 的属组修改为 monitor,否则 student 永远都是“其他人”范畴,也就没有任何权限。

注意:更改权限之后,记得重新开一个终端,否则不起效果。

读懂文件的权限

在上面已经提到了这种权限的符号,它由三个部分组成:rwx、r-x、r-x,分别表示属主、属组和其他人。r、w、x 是 read、write、execute 的简写形式,而最前面的 d 字母代表的是该文件的类型,d 表示目录(注意:目录也是文件,一切皆文件):

表1:文件类型以及符号

文件类型 符号 文件类型 符号
普通文件 - 本地域套接口 s
目录 d 有名管道 p
字符设备文件 c 符号链接 l
块设备文件 b

表2:ls -l 列出的信息对照表

列数 内容 描述
1 drwxr-xr-x 文件权限
2 2 文件硬链接数
3 zrf 文件或目录所属者,即属主
4 zrf 文件或目录所属的组,即属组
5 4096 占用的存储空间,单位字节(KB)
6 9月30 最后创建或修改的时间
7 2022 最后创建或修改的时间
8 Desktop 文件或目录名

八进制的文件权限

虽然已经有了如上的文件权限的字符串表示形式,但在实际运用中是以八进制来表示文件的权限的。先通过二进制来理解文件的权限,例如:rwx 代表 111、-wx 代表 011、--x 代表 001,依次类推。111 已经是权限的最大二进制数了,二进制对应的八进制如下表格:

表3:八进制、二进制、文件权限的对应关系

八进制 二进制 权限 八进制 二进制 权限
0 000 --- 4 100 r--
1 001 --x 5 101 r-x
2 010 -w- 6 110 rw-
3 011 -wx 7 111 rwx

其实,不需要记住上面这些数字的排列组合。在实际使用中,只要记住 1 代表 x,2 代表 w,4 代表 r,简单地做加法就可以了。例如:rwx = 4+2+1=7、r-x=4+0+1=5、--x=0+0+1=1,相连起来 751 就是这个目录的权限。

更新文件的权限

更新文件的权限通过chmod指令,以下是两种修改文件权限的方式。根据自己的喜好选择,我推荐使用第一种方式来修改,因为是最简单和最直观的。

修改方式一

更新文件权限最直观、最简单的就是通过权限的字符,即 r、w、x。属主、属组、其他人、所有人分别用 u、g、o、a 来表示。

1️⃣ 修改目录的属组权限为 r、x,其他人为 ---:

zrf@ubuntu:/tmp$ ls -l
total 1
d--------- 2 teacher monitor 4096 10月 20 18:11 class-work
zrf@ubuntu:/tmp$ sudo chmod g=rx,o=- class-work/
zrf@ubuntu:/tmp$ ls -l
total 1
d---r-x--- 2 teacher monitor 4096 10月 20 18:11 class-work

2️⃣ 修改目录的属主和属组的权限为 r、w、x:

zrf@ubuntu:/tmp$ sudo chmod ug=rwx class-work
zrf@ubuntu:/tmp$ ls -l
total 1
drwxrwx--- 2 teacher monitor 4096 10月 20 18:11 class-work

3️⃣ 删除属组的 w 权限,添加就用符号+,删除就用符号-

zrf@ubuntu:/tmp$ sudo chmod g-x class-work
zrf@ubuntu:/tmp$ ls -l
total 1
drwxrw-r-x 2 teacher monitor 4096 10月 20 18:11 class-work

修改方式二

这种方式修改文件的权限是通过八进制来修改的,比如,750 代表 rwxr-x---。上面说的“八进制的文件权限”。

把 class-work 目录的权限修改为:rwxr-xr-x。rwx = 4+2+1=7、r-x=4+0+1=5、r-x=4+0+1=5,相连起来 755 就是这个目录的权限:

zrf@ubuntu:/tmp$ sudo chmod 755 class-work
zrf@ubuntu:/tmp$ ls -l
total 1
drwxr-xr-x 2 teacher monitor 4096 10月 20 18:11 class-work

更新文件的所属

通过chown指令可以改变文件的属主和属组,:的左边是属主,右边是属组:

zrf@ubuntu:/tmp$ ls -l
total 2
drwxr-x--- 2 teacher monitor 4096 10月 7 17:31 class-work
drwxrwxr-x 2 monitor monitor 4096 10月 7 21:48 monitor-work
zrf@ubuntu:/tmp$ sudo chown teacher:teacher class-work/
zrf@ubuntu:/tmp$ ls -l
total 2
drwxr-x--- 2 teacher teacher 4096 10月 7 17:31 class-work
drwxrwxr-x 2 monitor monitor 4096 10月 7 21:48 monitor-work

用户组成员管理

usermod

用户组 GroupB 添加用户 UserA:

sudo usermod -G GroupB UserA
sudo cat /etc/group | grep UserA
GroupB:x:1000:UserA

gpasswd

用户组 GroupB 添加用户 UserA:

sudo gpasswd -a UserA GroupB
sudo cat /etc/group | grep UserA
GroupB:x:1000:UserA

用户组 GroupB 删除用户 UserA:

sudo gpasswd -d UserA GroupB
sudo cat /etc/group | grep GroupB
GroupB:x:1000:

Linux 用户组管理的更多相关文章

  1. linux用户管理,linux用户口令管理,linux用户组管理,linux用户权限管理详解

    linux用户管理 http://www.qq210.com/shoutu/android 用户账号的添加(新加用户需添加用户口令) :增加用户账号就是在/etc/passwd文件中为新用户增加一条记 ...

  2. Linux用户组管理及用户权限2

    用户.组和权限管理    Multi-tasks,Multi-Users,多任务,多用户的计算机    每个使用者:        用户标识.密码:            Authentication ...

  3. Linux用户组管理

    用户组信息存放:/etc/group 当组内只有一个用户,并且用户名和用户组名一致时默认不显示:组号1-499是系统预留的用户组,>=500的用户组是管理员手动创建的,组密码占位符用x表示   ...

  4. Linux用户组管理及用户权限4

    权限管理:    ls -l        rwxrwxrwx:            左三位:定义user(owner)的权限            中三位:定义group的权限           ...

  5. Linux用户组管理及用户权限3

    用户.组管理命令 安全上下文:        进程以其发起者的身份运行:            进程对文件的访问权限,取决于发此进程的用户的权限 系统用户:为了能够让那些后台进程或服务类进程以非管理员 ...

  6. Linux 用户组管理命令

    groupadd 组名,可以添加用户组 groupmod -n 新组名 老组名,可以修改组名 groupdel 组名,可以删除组(组中不能有初始用户存在,附加用户无所谓) gpasswd -a 用户名 ...

  7. Linux用户组管理及用户权限1

    bash的基础特性:    globbing:文件名通配(整体文件名匹配,而非部分)        匹配模式:元字符            *:匹配任意长度的任意字符                例 ...

  8. Linux常用命令学习8---(用户和用户组管理)

    1.用户和用户组     用户和用户组概念        用户:使用操作系统的人(Linux支持多个用户在同一时间登陆同一个操作系统)        用户组:具有相同权限的一组用户(Linux系统中可 ...

  9. Linux 用户和用户组管理

    Linux 用户和用户组管理 Linux系统是一个多用户多任务的分时操作系统,任何一个要使用系统资源的用户,都必须首先向系统管理员申请一个账号,然后以这个账号的身份进入系统. 用户的账号一方面可以帮助 ...

  10. Linux学习笔记(12)用户和用户组管理

    越是对服务器安全性要求高的服务器,越需要建立合理的用户权限等级制度和服务器操作规范.在Linux中主要是通过用户配置文件来查看和修改用户信息. 1 用户信息文件 (1)用户信息文件/etc/passw ...

随机推荐

  1. 100IT 名企 java 面试必考面试题

    一.Java基础(2/133) 二.Java代码报错(52/133) 三.算法与编程(55/133) 四.html&JavaScript&ajax部分 五.Java Web部分 六.数 ...

  2. 常用BOM操作 DOM操作 事件 jQuery类库

    目录 BOM操作 常用BOM操作 三种弹出框 alert confirm prompt 定时任务 setTimeout 循环定时 setInterval DOM操作 查找标签 直接查找 间接查找 操作 ...

  3. 深入解读MySQL InnoDB存储引擎Update语句执行过程

    参考b站up 戌米的论文笔记 https://www.bilibili.com/video/BV1Tv4y1o7tA/ 书籍<mysql是怎样运行的> 极客时间<mysql实战45讲 ...

  4. VSCTF的Recovery

    题目如下: from random import randint from base64 import b64encode def validate(password: str) -> bool ...

  5. 将git仓库从submodule转换为subtree

    三个脚本 Alexander Mikhailian cat .gitmodules |while read i do if [[ $i == \[submodule* ]]; then mpath=$ ...

  6. Vue中实现自定义excel下载

    目录 第一种:后端生成excel 第二种:前端合成excel 总结 参考资料 最近在工作中遇到一个需求,就是需要在前端实现一个错误模板Excel的下载功能. 实现下载有两种方式,一种是后端生成一个ex ...

  7. Rust-01 启航

    安装 所谓工欲善其事必先利其器,我们学习Rust当然需要安装Rust.我们可以从Rust官网下载rustup工具进行rust的安装.安装完成后,我们在命令行中输入rustc --version便可以查 ...

  8. python进阶之路20 正则表达式 re模块

    正则表达式前情 案例:京东注册手机号校验 基本需求:手机号必须是11位.手机号必须以13.15.17.18.19开头.必须是纯数字 '''纯python代码实现''' # while True: # ...

  9. 从最简单的线性DP开始

    导读 ^ _ ^ 线性DP可以说是最常见的DP问题. 从本期开始,我们将从最简单的线性DP开始学起. 后面同时更新一些经典的面试题带大家更加深入的学习线性DP 如何计算动态规划的时间复杂度? 状态数 ...

  10. [C++]我的理解之内存对齐

    问题1:为什么要内存对齐? 平台原因:不是所有的平台都能访问到任意地址上的任何数据,如果在特定的地址上找不到数据的话就会抛出硬件异常. 性能问题:简单的来说如果没有使用内存对齐的话,相对于内存对齐,C ...