《Linux就该这么学》第五章
条评论主要内容
- 用户身份和能力
- 文件权限与归属
- 文件的特殊权限
- 文件的隐藏权限
- 文件的访问控制列表
- su 命令与sudo 服务
用户的身份和能力
用户
Linux 中,每一个用户都有一个自己的 UID(User IDentification),该身份号码具有唯一性,因此可以通过 UID 值来判断用户身份。
在 RHEL7 中,用户身份如下:- UID [0]:系统管理员
- UID [1,999]:Linux 系统为了避免因为漏洞(系统或应用的)被黑客提权至整台服务器,默认服务程序会有独立的系统用户负责运行,继而有效控制被破坏范围。
- UID [1000, +]:管理创建的用以日产工作的普通用户
特殊用户 root
有种说法,Linux 中的管理员就是 root,这其实是错误的。
Linux 的管理员是 root 并不是因为名字,而是因为 UID 的数值为 0。用户组
- 为了方便管理同一组的用户,Linux 系统引入了用户组的概念。
- 通过用户组号码 GID(Group IDentification),可以把多个用户加入到同一个组中,从而为组中的用户统一规划权限或指定认为。
- Linux 中创建每一个用户的同时,都将自动创建一个同名的基本用户组。
- 该用户组中,只有该用户一人。
- 若是该用户被纳入其他用户组中,则这个其他用户组称之为扩展用户组
- 一个用户只能有一个基本用户组,但是可以有多个扩展用户组
useradd 命令
作用:创建新的用户
格式: useradd [选项] 用户名
备注:
- 使用 useradd 命令建立的帐号,保存在
/etc/passwd
文本文件中。 - Red Hat Linux 中,
adduser
命令实际上就是useradd
的符号链接
- 使用 useradd 命令建立的帐号,保存在
选项:
序号 参数 作用 1 -d 指定用户的默认跟目录(默认为:/home/username) 2 -e 账户到期时间,格式为 YYYY-MM-DD 3 -u 指定用户的默认 UID 4 -g 指定一个初始的用户基本组,该组必须已存在 5 -G 指定一个或多个扩展用户组 6 -N 不创建与用户同名的用户基本组 7 -s 指定该用户默认的 Shell 解释器(默认为/bin/bash) 案例
1
2
3
4# /sbin/nologin 是一个特殊的 shell 解释器,使用该 shell 解释器的用户无法登录系统
useradd -d /home/testuser -u 9527 -s /sbin/nologin testuser
# uid=9527(testuser) gid=9527(testuser) 组=9527(testuser)
id testuser
groupadd 命令
作用:用于创建用户组
格式:groupadd [选项] 群组名
备注
- 使用 groupadd 命令建立的账号,保存在
/etc/group
文本文件中
- 使用 groupadd 命令建立的账号,保存在
选项:
序号 参数 作用 1 -g 指定新建工作组的 id 2 -r 创建系统工作组,系统工作组的 ID 小于 500 案例:
1
groupadd -g 1024 testgroup
usermod 命令
作用:修改用户属性
格式:usermod [选项] 用户名
备注:
- 也可以直接编辑
/etc/passwd
文件
- 也可以直接编辑
选项:
序号 参数 作用 1 -c 填写用户账户的备注信息 2 -d -m 二者连用,可重新指定用户根目录并将老数据迁移 3 -e 用户到期时间,格式:YYYY-MM-DD 4 -g 变更所属用户组 5 -G 变更扩展用户组 6 -L 锁定用户,禁止登陆 7 -U 解锁用户,运行登陆 8 -s 变更默认用户 9 -u 修改用户 UID 案例:
1
2
3
4
5# uid=9527(testuser) gid=9527(testuser) 组=9527(testuser)
id testuser
usermod -u 8888 -G root testuser
# uid=8888(testuser) gid=9527(testuser) 组=9527(testuser),0(root)
id testuser
passwd 命令
作用:修改用户密码、过期时间、认证信息等
格式:passwd [选项] [用户名]
备注:
- 用户名不输入默认为 root
- root 修改自己或其他用户的密码时,不需要验证旧密码。
选项
序号 参数 作用 1 -l 锁定用户,禁止登陆 2 -u 解除锁定,允许登陆 3 --stdin 允许通过标准输入修改用户密码,例如:
echo "New Password" | passwd --stdin UserName4 -d 使该用户可以空密登陆 5 -e 强制用户下次登录时修改密码 6 -S 显示用户的密码是否被锁定,以及密码所采用的加密算法名称 案例:
1
2
3
4
5# 锁定用户 testuser 的密码 。
# passwd: 操作成功
passwd -l testuser
#testuser NP 2018-10-13 0 99999 7 -1 (密码为空。)
passwd -S testuser
userdel
作用:删除用户
格式:userdel [选项] 用户名
备注:
- 执行删除操作室,用户根目录会默认保留,确认无用的话,使用
-r
参数将其删除
- 执行删除操作室,用户根目录会默认保留,确认无用的话,使用
选项:
序号 参数 作用 1 -f 强制删除用户 2 -r 同时删除用户和根目录 案例:
1
2#uid=8888(testuser) gid=9527(testuser) 组=9527(testuser),0(root)
id testuser
userdel testuser
#id: testuser: no such user
id testuser
1 | ## 文件权限和归属 |
SBIT
SBIT 特殊权限位可以确保用户只能删除自己的文件。也就是说,当对目录设置了 SBIT 权限后,该目录的文件就只能被其所有者执行删除操作,即使被操作的文件权限是 777。
当目录被设置 SBIT 特殊权限位后,文件的其他人权限部分的 x
执行权限就会被替换成 t
或者 T
。
- 原本有
x
执行权限则会写成t
- 原本没有
x
执行权限则会被写成T
。
命令:
1 | chmod -R o+t testdir |
备注:文件能否被删除并不取决于自身的权限,而是看其所在的目录是否具有写入权限。
文件的隐藏属性
Linux 系统中的文件,除了具备一般权限和特殊权限外,还有一种隐藏权限。
有时遇到有权限也无法删除文件,或是日志文件中可以追加却不能修改或删除的情况都是该权限导致的。
chattr 命令
作用:设置文件的隐藏权限
格式:chattr [参数] 文件
备注:
- 追加隐藏权限,
+参数
- 移除隐藏权限,
-参数
- 追加隐藏权限,
参数:
- 案例序号 参数 作用 1 i 无法对文件修改
若对目录设置,则仅能修改子文件内容,不能新建或删除2 a 仅允许追加内容,无法覆盖或删除内容(Append Only) 3 A 不在修改文件的最后访问时间(atime) 4 b 不在修改文件或目录的存取时间 5 c 默认将文件或目录进行压缩 6 d 使用 dump 命令备份时忽略本文件、目录 7 D 检查压缩文件的错误 8 s 彻底从硬盘删除,不可恢复(硬盘上源文件区域用 0 填充) 9 S 文件内容变更后立刻同步硬盘(sync) 10 t 让文件系统支持尾部合并(tail-merging) 11 u 删除该文件后依然保留其在硬盘中的数据,方便恢复 12 X 可以直接访问压缩文件的内容 案例chattr 1
2
3
4echo "test file" > chattrtest
chattr +a chattrtest
# rm: 无法删除"chattrtest": 不允许的操作
rm -f chattrtest
lsattr 命令
作用:显示文件的隐藏权限
格式:lsattr [参数] 文件
参数:略
案例
1
2# -----a---------- chattrtest
lsattr chattrtest
文件访问控制列表
一般权限、特殊权限和隐藏权限是针对某一类用户设置的。而文件的访问控制列表(ACL)是针对某个指定用户进行单独的权限控制。
文件的 ACL 提供的是在所有者、所属组、其他人的读、写、执行权限之外的特殊权限控制。
如果针对某个目录设置了 ACL,目录中的文件都会继承其 ACL;若针对文件设置的 ACL,则文件不在继承目录的 ACL。
setfacl 命令
作用:用于管理文件的 ACL 规则
格式:setfacl [参数] 文件名称
备注:
设置过 ACL 后,
ls
结果列表,权限后的最后一个.
会变成+
1
2ls -ld /root
dr-xrwx---+ 14 root root 4096 May 4 2017 /root
案例:参见 [案例](http://man.linuxde.net/setfacl setfacl)
getfacl 命令
作用:显示文件上设置的 ACL 信息
格式:getfacl 文件
案例:
1
2
3
4
5
6
7# file: chattrtest
# owner: root
# group: root
#user::rw-
#group::r--
#other::r--
getfacl chattrtest
su 命令与 sudo 服务
su 命令
- 作用:免退出切换用户身份
- 备注:
- 从 root 切换到普通用户不想要密码,反之需要
- 格式:su - username
- 带上
-
,表示完全切换新用户的信息,包括工作环境、环境变量等等
- 带上
sudo 服务
作用:给普通用户提供额外的权限来完成原本 root 管理员才能完成的任务,避免密码泄露。
格式:sudo [参数] 命令名称
参数:
序号 参数 作用 1 -h 列出帮助信息 2 -l 列出当前用户可执行的命令 3 -u
用户名或 UID以指定的用户身份执行命令 4 -k 清空密码的有效时间,下次执行需要密码验证 5 -b 在后台执行指定的命令 6 -p 修改询问密码的提示语
配置 sudo 服务
配置文件存储在/etc/sudoers
,可以直接 vi
编辑,也可以使用 visudo
编辑。
需要注意:
visudo
命令需要root
权限visudo
会禁止多个用户同时修改配置文件,还能进行语法检查
总结
总结来说,sudo 具备以下功能:
- 限制用户执行特定命令
- 记录用户执行的没一条命令
- 配置文件 (
/etc/sudoers
)提供集中的用户管理、权限与主机等参数 - 验证密码的五分钟(默认值)内无需再次校验
附录
参考
写在最后
版本 | 内容 | 时间 |
---|---|---|
v1.0.0 | 1. 创建文档 | 2018-10-13 17:20:47 |
v1.0.1 | 1. 第五章阅读笔记完成,并完成校验 | 2018-10-17 15:51:14 |
本文标题:《Linux就该这么学》第五章
文章作者:LeerGo
发布时间:2018-10-13
最后更新:2022-09-10
原始链接:https://blog.bugfix.fun/2018/10/13/45302.html
版权声明:本博客所有文章除特别声明外,均采用 CC BY-NC-SA 3.0 CN 许可协议。转载请注明出处!