Linux研学-用户解析
一 root用户
1 介绍
root是Linux系统中唯一的超级管理员账户,拥有系统的最高权限(UID=0),可执行任何操作,包括修改系统文件、安装/卸载软件、管理用户权限等。
如普通用户无法在根目录下创建文件,而root账户可以。
2 su 命令 – 切换当前登录用户身份
① 语法
# 用户名 可省略(默认切换到root)。
# 选项:
# -(或-l/--login)加载目标用户的环境变量(如.bashrc、.profile等配置文件)模拟完整登录。
# -c 以目标用户身份执行指定命令后退出(适合快速执行特权操作)。
su [选项] [用户名]
② 例子
su - root
3 exit 命令 – 退出当前用户
① 语法:退出当前用户会话,返回上一个用户或终端。
# 快捷键 Ctrl + D(发送EOF信号,效果同exit)。
# 输入logout命令(部分Shell支持)。
exit
② 注意:普通用户切换到其他用户(包括root)需输入目标用户密码。root用户切换到其他用户无需密码(因root拥有最高权限)。
sudo 命令详解
3 sudo 命令 – 必要时授予root权限执行单条命令
① 作用:允许普通用户以root权限执行单条命令,而无需切换到root用户或知道root密码。遵循最小权限原则,仅在必要时授予临时特权,降低误操作或恶意攻击的风险。
并不是所有的用户,都有权利使用sudo,我们需要为普通用户配置sudo认证
② 语法:
sudo [选项] 命令 [参数]
③ 例子:
# 以 root 权限查看日志
sudo cat /var/log/syslog
4 配置sudo认证
① 步骤: 切换到 root 用户;
# - 表示加载该用户的环境变量
su - root
② 使用 visudo 安全编辑配置文件;
visudo
③ 在 /etc/sudoers 中添加用户权限,⚠️ 若需限制命令范围,可替换为具体路径,例如:dahuang ALL=(ALL) /usr/bin/ls, /usr/bin/mkdir;
# dahuang :目标用户名。
# ALL=(ALL):允许从任何主机切换为任何用户执行命令。
# NOPASSWD: ALL:执行所有命令时无需输入密码(谨慎使用)。
dahuang ALL=(ALL) NOPASSWD: ALL
④ 保存并退出,在 vi 编辑器中按 Esc,输入 :wq 保存并退出。;切换回普通用户验证
exit # 退出 root 用户
su - dahuang # 切换回普通用户
⑤ 测试 sudo 权限,由于配置了 NOPASSWD,执行时无需输入密码。所有通过 sudo 执行的命令均以 root 权限运行。
sudo ls /root # 以 root 权限列出 /root 目录内容
sudo mkdir /test # 以 root 权限创建目录
二 用户与用户组
1 介绍
用户:系统独立实体,有唯一 UID 和家目录(如 root UID=0)。
用户组:用户集合,便于批量授权,有唯一 GID。
关系:用户可属于多个组(主组+附加组),权限可按用户或组分配。
2 用户组管理 – 需要 root 权限
① 创建用户组
# root可直接使用 否则需要加上sudo
sudo groupadd [用户组名]
② 删除用户组
sudo groupdel [用户组名]
3 用户管理 – 需要 root 权限
① 创建用户
# -g 组名:指定用户的主组(需组已存在)。若不指定,默认创建与用户名同名的组并加入。
# 用户名dahuang 组名也为dahuang
# -d 家目录路径:自定义用户的家目录路径(默认:/home/用户名)。
# 使用 -m 后,系统会按默认规则创建家目录,并复制基础配置文件
sudo useradd [-g 组名] [-d 家目录路径] [-m] 用户名
② 删除用户
# -r:删除用户时同时删除其家目录(默认保留)。
sudo userdel [-r] 用户名
③ 查看用户所属组
# 不提供用户名时,默认查看当前用户所属组
id [用户名]
④ 修改用户所属组
# -aG:将用户追加到附加组(不覆盖原有组关系)。
sudo usermod -aG 用户组 用户名
⑤ 例子
# 创建用户
sudo useradd -m ppap
sudo ls
ppap
# 查看组别
su - ppap
sudo $ id
uid=1003(ppap) gid=1003(ppap) groups=1003(ppap)
# 创建ppbp入ppap组,并指定home目录
exitsudo useradd -m -g ppap -d /home/ppap ppbp
useradd: user 'ppbp' already existssudo id ppbp
uid=1004(ppbp) gid=1003(ppap) groups=1003(ppap)
# 删除用户同时删除home中文件夹
sudo userdel -r xiaohuang
# bighuang入dahuang组
sudo useradd bighuang
sudo id bighuang
uid=1006(bighuang) gid=1006(bighuang) groups=1006(bighuang)
sudo usermod -aG dahuang bighuang
sudo id bighuang
uid=1006(bighuang) gid=1006(bighuang) groups=1006(bighuang),1004(dahuang)
4 getent 命令 – 查看系统用户数据库
① 介绍:它会从 /etc/passwd 文件或其他配置的数据库(如 LDAP、NIS)中检索用户信息。
# 查用户
getent passwd
# 查用户组
getent group
② 例子
# 用户名:密码占位符:用户ID(UID):组ID(GID):描述信息:家目录:登录Shell
getent passwd
bighuang:x:1006:1006::/home/bighuang:/bin/sh# 组名称:组认证(显示为×):组ID
getent group
bighuang:x:1006:
三 权限控制
1 查看权限信息
# 文件权限信息 -rw-------.
# 文件所属用户 root (第一个)
# 文件所属用户组 root (第二个)
[root@localhost ~]# ls -l
total 4364
-rw-------. 1 root root 1203 Jul 28 2023 anaconda-ks.cfg
drwxr-xr-x. 2 root root 89 Aug 10 2023 app
drwxr-xr-x. 2 root root 92 Aug 10 2023 bin
drwxr-xr-x. 6 root root 71 Aug 25 2023 logs
-rw-r--r-- 1 root root 0 Oct 24 2023 mkdir
drwxr-xr-x. 3 root root 20 Aug 25 2023 nacos
-rw-------. 1 root root 4405717 Aug 25 2023 nohup.out
drwxr-xr-x. 4 root root 4096 May 31 09:38 software
drwxr-xr-x. 6 root root 113 Aug 25 2023 store
-rw-r--r-- 1 root root 0 Oct 24 2023 touch
2 权限细节的 10 个槽位解析
在解析 Linux 文件或目录的权限时,权限细节通常由 10 个字符组成(在特定格式下,如 ls -l 的输出中),这些字符被分为几个部分,以表示文件或目录的类型、所属用户权限、所属用户组权限以及其他用户权限。
文件/目录类型(第1个字符):
-:表示这是一个普通文件。
d:表示这是一个目录。
l:表示这是一个软链接(符号链接)。
所属用户权限(接下来的3个字符):
第2个字符:r(读权限)或 -(无读权限)。
第3个字符:w(写权限)或 -(无写权限)。
第4个字符:x(执行权限)或 -(无执行权限)。
所属用户组权限(接下来的3个字符):
第5个字符:r(读权限)或 -(无读权限)。
第6个字符:w(写权限)或 -(无写权限)。
第7个字符:x(执行权限)或 -(无执行权限)。
其他用户权限(最后的3个字符):
第8个字符:r(读权限)或 -(无读权限)。
第9个字符:w(写权限)或 -(无写权限)。
第10个字符:x(执行权限)或 -(无执行权限)。
3 rwx说明
- r(读权限)
文件:允许查看文件内容(如使用 cat、less)。
目录:允许列出目录中的文件和子目录(如使用 ls)。 - w(写权限)
文件:允许修改文件内容(如使用文本编辑器或命令修改)。
目录:允许在目录中创建、删除或重命名文件和子目录(如使用 touch、mkdir、rm、mv)。 - x(执行权限)
文件:允许将文件作为程序执行(如运行脚本或二进制程序)。
目录:允许更改工作目录到该目录(即使用 cd 进入)。
4 修改权限控制 – chmod
① 语法:用于修改文件或目录权限
# -R 递归操作,对目录及其内部所有内容应用相同的权限修改。
chmod [-R] 权限 文件或目录
② 权限表示方法
符号模式
u:所属用户(user)权限。
g:所属用户组(group)权限。
o:其他用户(other)权限。
a:所有用户(all,等同于 ugo)。
操作符:
=:设置权限(覆盖原有权限)。
+:添加权限。
-:移除权限。
权限符号:
r:读权限。
w:写权限。
x:执行权限。
③ 例子
# 文件权限为rwxr-x--x
chmod u=rwx,g=rx,o=x hello.txt
④ 数字表示法,权限可以用三位八进制数表示,每一位分别对应所属用户、所属用户组和其他用户的权限。数字与权限对应:r=4,w=2,x=1,无权限=0。
0:无任何权限(---)
所属用户:无权限
所属用户组:无权限
其他用户:无权限
1:仅有 x 权限(--x)
所属用户:无权限
所属用户组:无权限
其他用户:仅有执行权限
2:仅有 w 权限(-w-)
所属用户:无权限
所属用户组:仅有写权限
其他用户:无权限
3:有 w 和 x 权限(-wx)
所属用户:无权限
所属用户组:有写和执行权限
其他用户:无权限
4:仅有 r 权限(r--)
所属用户:仅有读权限
所属用户组:无权限
其他用户:无权限
5:有 r 和 x 权限(r-x)
所属用户:有读和执行权限
所属用户组:无权限
其他用户:无权限
6:有 r 和 w 权限(rw-)
所属用户:有读和写权限
所属用户组:无权限
其他用户:无权限
7:有全部权限(rwx)
所属用户:有读、写和执行权限
所属用户组:无权限(此示例仅说明数字7的含义,实际中7可能用于所属用户、组或其他用户)
⑤ 例子:751
第一位(7):所属用户权限(rwx)
r(4) + w(2) + x(1) = 7
第二位(5):所属用户组权限(r-x)
r(4) + x(1) = 5
第三位(1):其他用户权限(--x)
x(1) = 1
最终权限:rwxr-x--x
[root@localhost games]# ls -l
-rw-r--r-- 1 root root 0 May 31 12:12 test.txt[root@localhost games]# chmod 666 test.txt
[root@localhost games]# ls -l
-rw-rw-rw- 1 root root 0 May 31 12:12 test.txt
5 修改权限控制 – chown
① 语法:用于修改文件或目录的所属用户和用户组的命令,普通用户无法修改所属为其它用户或组,所以此命令只适用于root用户执行
# -R 递归操作,对目录及其内部所有内容应用相同的所属用户和用户组修改。
# 用户 指定新的所属用户。
# 用户组 指定新的所属用户组。
# : 用于分隔用户和用户组。
chown [-R] [用户][:用户组] 文件或目录
② 例子
# 修改文件所属用户
chown root hello.txt# 修改所属用户组
chown :root hello.txt# 同时修改所属用户和用户组:
chown root:dahuang hello.txt# 递归修改目录及其内容的所属用户
chown -R root test# 第一个root为用户 第二个root为用户组
[root@localhost games]# ls -l
-rw-rw-rw- 1 root root 65 May 21 12:29 hello.txt