第七次作业(理解Linux文件权限)
作业:练习一 1. 查看/etc/passwd 文件,并对某用户账户的字段进行解释。选取一行示例:root:x:0:0:root:/root:/bin/bash
从左到右依次解释:
1. 用户名:登录系统的账号名(这里是 root )
2. 密码占位符: x 表示密码哈希值存放在 /etc/shadow ,早期版本此处直接存加密密码
3. UID(用户ID):0代表超级用户root,1-999多为系统内置用户,≥1000是普通用户
4. GID(初始组ID):对应 /etc/group 里用户默认所属组的ID
5. 注释信息(GECOS):用户备注、全名等内容(这里是 root )
6. 家目录(HOME):用户登录后进入的默认目录(root是 /root ,普通用户通常是 /home/用户名 )
7. 登录Shell:用户登录后使用的命令解释器, /sbin/nologin 表示禁止交互式登录
2. 查看/etc/shadow文件,并对某用户账户的字段进行解释
选取:root:$y$j9T$adIQv3vAVJaA626rDhp3L1$4jTR70W7W5Vus/dgwnhW5BlyK32dW.xVigcPXmjfxz3:20634:0:99999:7:::
以 : 分隔,一共9个字段,逐段解释:
1. root:用户名,对应/etc/passwd里的root账号
2. yj9T$adIQv3vAVJaA626rDhp3L1$4jTR70W7W5Vus/dgwnhW5BlyK32dW.xVigcPXmjfxz3:加密密码段
$y$ :采用yescrypt加密算法
j9T$adIQv3vAVJaA626rDhp3L1 :随机盐值
后半长串:用户密码经过加盐哈希后的密文
3. 20634:最后一次修改密码的天数,从1970-01-01算起
4. 0:密码最小使用天数,0代表修改密码无间隔限制
5. 99999:密码最大有效期,默认约274年,长期不用强制改密
6. 7:密码过期前7天弹出修改提醒
7. 第8段(空):密码过期宽限天数,空代表过期后立刻锁定账号
8. 第9段(空):账号彻底失效日期,空代表无过期锁定时间
9. 第10段(空):系统预留扩展字段,暂无用途
3. 查看 /etc/skel 下的文件,根据前一章的内容,解释目录下的文件是做什么的。1. .bash_logout
用户执行 logout 、关闭终端窗口退出登录时,会自动执行该文件内的脚本。
一般用于清理临时缓存、打印退出提示、执行退出收尾操作。
2. .bashrc
每次打开新的交互式终端(新开命令行窗口)都会加载此文件。
用途:自定义终端别名、环境变量、命令配色、函数、提示符样式等,是日常最常用的配置文件。
3. .profile
用户登录系统时(登录Shell)仅加载一次。
用途:设置全局环境变量、PATH路径、启动程序,登录时生效,仅首次登录读取,新开终端不会重复加载。
4. 用 -m 参数创建一个新用户账户,检查新用户的 HOME 目录。
练习二1. 创建一个新用户,指定用户名缩写为其主目录名,并指定用户的登录shell为 dash shell。2. 修改useradd默认配置,新建用户默认shell为dash
将其改为
练习三1. 创建一个新用户
共7个字段,从左到右依次解释:
1. 文件类型+权限 -rw-r--r--
第一位 - :文件类型( - 普通文件、 d 目录、 l 软链接)
第2-4位 rw- :属主(所有者) 权限:读r、写w、无执行x
第5-7位 rw- :属组(所属用户组) 权限:仅读
第8-10位 r-- :其他用户 权限:仅读
2. 硬链接数 1 :该文件硬链接的数量
3. 属主 ran :文件所有者用户名
4. 属组 ran :文件归属的用户组名
5. 文件大小 0 :单位字节,目录显示占用块大小
6. 修改时间 7月 8 10:22:文件最后修改日期时间
7. 文件名 test.txt :文件名称
2.使用八进制模式和符号模式分别更改该文件的权限。
3. 使用chown命令更改该文件的属主和属组。
4.使用chgrp命令更改文件的默认属组。课堂笔记:
Linux 文件权限学习笔记
一、Linux 安全性的核心:用户账户
Linux 沿用了 Unix 的权限机制,核心是用户账户。每个进入系统的用户都有唯一账户,系统通过UID(用户ID)来跟踪权限,而登录时使用的是登录名(最长8字符,可含字母数字,关联密码)。
1.1 关键文件:`/etc/passwd`
作用:将登录名映射到 UID。
字段(7个):
1. 登录用户名
2. 密码占位符(`x`,实际密码在 `/etc/shadow`)
3. UID(数字)
4. GID(组ID,数字)
5. 备注字段(如全名、电话等)
6. HOME 目录路径
7. 默认 Shell
特殊用户:
root:管理员,UID 固定为 0。
系统账户:UID < 500,供后台服务进程使用(如 daemon、bin、sys 等)。
1.2 密码文件:`/etc/shadow`
只有 root 可读,安全性更高。
每条记录包含 9 个字段,包括:
加密后的密码
上次修改密码距 1970-01-01 的天数
密码最短/最长使用期限
过期前提醒天数
过期后禁用天数
账户禁用日期等
二、用户管理常用命令
2.1 添加用户:`useradd`
基本用法:`useradd -m 用户名`(Ubuntu 推荐用 `adduser`)。
`-m` 会创建 HOME 目录,并复制 `/etc/skel` 下的默认配置文件。
常用参数:
`-c` 备注
`-d` 指定 HOME 目录
`-e` 过期日期(YYYY-MM-DD)
`-g` 初始登录组
`-G` 附加组
`-s` 指定 Shell
`-u` 指定 UID
查看默认值:`useradd -D`(显示 GROUP、HOME、SHELL、SKEL 等默认设置)。
修改默认值:`useradd -D -b /new/home` 等。
2.2 删除用户:`userdel`
默认只删除 `/etc/passwd` 和 `/etc/shadow` 中的信息,**不删除**用户文件。
加 `-r` 参数会**同时删除** HOME 目录和邮件目录(需谨慎,确认无重要文件)。
2.3 修改用户:`usermod`
可修改 /etc/passwd 中大多数字段:
`-c` 备注
`-e` 过期日期
`-g` 默认组
`-l` 登录名
`-p` 密码
`-L` 锁定账户(无法登录)
`-U` 解锁账户
2.4 密码管理
`passwd`:普通用户改自己的密码;root 可改任意用户密码。
`passwd -e` 用户名:强制用户下次登录时修改密码。
`chpasswd`:批量设置密码(从标准输入读取 `用户名:密码` 对),常配合重定向使用。
2.5 专用修改工具
`chsh`:修改默认登录 Shell(需指定完整路径,如 `/bin/dash`)。
`chfn`:修改 /etc/passwd 中的备注字段(全名、办公室、电话等)。
`chage`:管理账户有效期(设置密码过期、禁用天数等),日期可用 YYYY-MM-DD 或距 1970 的天数表示。
三、Linux 组管理
3.1 组的概念
组用于将多个用户归集,便于统一分配权限。
不同发行版策略不同:有的将所有用户归入同一组,有的为每个用户单独建组。
组信息存储在 `/etc/group` 文件中,每行4个字段:
1. 组名
2. 组密码(通常不用)
3. GID(组ID)
4. 属于该组的用户列表(逗号分隔)
3.2 组管理命令
`groupadd`:创建新组。创建后默认无成员。
`usermod -G 组名 用户名`:将用户添加到附加组(不影响默认组);`-g` 则修改默认组。
`groupmod -g 新GID` 或 `-n 新组名`:修改组的 GID 或名称。
`groupdel`:删除组(注意组内不能有主用户,否则需先清理)。
四、文件权限解读
4.1 查看权限:`ls -l`
输出第一个字段(如 `-rwxr-xr--`)共10个字符,含义如下:
**第1个字符**:文件类型
`-` 普通文件
`d` 目录
`l` 链接
`c` 字符设备
`b` 块设备
`n` 网络设备
**后9个字符**:分为三组,每组3位,分别代表**属主(u)**、**属组(g)**、**其他用户(o)** 的权限。
`r` 读
`w` 写
`x` 执行
`-` 无权限
4.2 权限的八进制表示
将每组 rwx 视为二进制位(r=4, w=2, x=1),相加得到八进制数。
五、修改权限和所属关系
5.1 `chmod` 修改权限
**八进制模式**:`chmod 644 文件` 直接设置权限。
**符号模式**:格式 `[ugoa...][+|-|=][rwxXstugo...]`
`u` 属主,`g` 属组,`o` 其他,`a` 全部
`+` 添加,`-` 移除,`=` 精确设置
-特殊权限:`X`(对目录或已有执行权限的文件赋予执行权限)、`s`(设置UID/GID)、`t`(粘滞位)等。
常用示例:
`chmod u+x 文件`:给属主增加执行权限。
`chmod go-w 文件`:移除属组和其他的写权限。
`chmod -R 755 目录`:递归修改目录及子文件。
5.2 修改所属关系
**`chown`**:修改文件属主和属组。
`chown 新属主 文件`
`chown 新属主.新属组 文件` 或 `chown 新属主:新属组 文件`(同时改)
只有 root 能改变属主;非 root 用户可改变属组,但必须同时属于原组和目标组。
`-R` 递归。
- **`chgrp`**:仅修改属组。
- `chgrp 新属组 文件` (普通用户也可操作,需满足组归属条件)。