击左上方蓝色“一口Linux”,选择“设为星标”
第一时间看干货文章 ☞【干货】嵌入式驱动工程师学习路线 ☞【干货】Linux嵌入式知识点-思维导图-免费获取 ☞【就业】一个可以写到简历的基于Linux物联网综合项目 ☞【就业】找工作简历模版
在 Linux 中,用户分为以下几种类型
超级用户(root)
:拥有系统的最高权限,可以执行所有操作普通用户
:权限受到限制,只能访问被授权的资源系统用户
:系统进程运行时所使用的用户(如 nobody
、daemon
),通常不能登录系统useradd
是Linux系统中用于创建新用户的基本命令。
基本语法
useradd [options] username
1
常用选项
-d
:指定用户的主目录(默认主目录是 /home/用户名
)-g
:指定用户所属的初始组(默认组名是用户名
)-G
:为用户分配附加的组-u
:指定用户 ID(默认系统会自动分配)常用示例
添加用户testuser
useradd testuser
1
添加用户zhangsan并设置该用户的主目录
useradd -d /usr/zhangsan zhangsan
1
添加lisi用户,该用户的主目录
/usr/lisi,所属主组
dev,附加组
test
useradd -d /usr/lisi -g dev -G test lisi
1
创建用户后,需要为其设置密码,否则用户无法登录。
基本语法
passwd username
1
常用示例
为用户testuser
设置密码()
passwd testuser
1
系统会提示输入两次密码以进行确认
su
是switch user(切换用户)的缩写,主要用于在终端中切换到另一个用户(通常是root
)执行操作。
基本语法
su [username]
1
常用示例
切换到普通用户testuser
su testuser
1
输入testuser
的密码后,会切换到该用户
切换到root
用户(如果你是普通用户)
su - # 切换到 root 用户,并加载 root 的完整环境
1
或者直接:
su
# 或
su root # 切换到 root 用户,但不加载目标用户的完整环境
123
输入root
用户的密码后,切换到超级用户,前者加载root完整环境,后者保留当前用户环境
切换用户并加载其登录环境(推荐
)
su - username
1
加-
或--login
参数,会加载目标用户的完整登录环境(包括环境变量、工作目录等)
退出当前用户
exit
1
或按快捷键:
Ctrl + D
1
切换到其他用户后,可以使用以下命令返回到上一个用户
快速验证当前用户
whoami
查看当前用户名id
查看当前用户信息修改用户就是对用户名,用户主目录,用户组等进行修改。
基本语法
usermod [options] username
1
常用选项
-l
:指定新的用户名-d
:指定新用户的主目录-g
:指定新用户属于哪个组(主组)-G
:指定新用户分配附加的组常用示例
修改用户名(将zhangsan修改为lis)
usermod -l lis zhangsan
1
修改主目录
# -m 选项很重要,当有了这个选项之后,目录不存在时会新建该目录。
usermod -d /usr/zhangsan2 -m zhangsan
12
修改所属组
usermod -g dev1 zhangsan
1
锁定用户
usermod -L zhangsan
1
解锁用户
usermod -U zhangsan
1
删除用户并连同主目录一块删除
userdel -r zhangsan
1
默认情况下,专属用户组会被自动删除,非专属组不会删除
sudo
允许普通用户以超级用户(root)或其他用户的身份执行命令。它是提升权限
的一种安全方式,避免直接使用root
登录。
基本语法
sudo [选项] [命令]
1
常用选项
选项 | 作用 | 示例 |
---|---|---|
-i | 模拟登录目标用户(默认 root ),加载完整的登录环境 | sudo -i |
-u | 以指定用户( )的身份运行命令。默认为 root | sudo -u www-data whoami |
-k | 立即失效当前用户的 sudo 缓存,要求下次使用 sudo 时重新输入密码 | sudo -k |
-l | 列出当前用户可以使用的 sudo 权限 | sudo -l |
-v | 验证用户的 sudo 权限,但不运行任何命令(重新输入密码时可用) | sudo -v |
--edit 或 -e | 以编辑模式打开文件(以 sudo 权限) | sudo -e /etc/fstab |
sudo
在输入密码后会缓存一段时间(通常是15分钟
)sudo
命令无需再次输入密码常用示例
以sudo
权限运行单个命令
sudo apt update # 更新系统软件包信息
1
root
权限,运行结束后权限释放切换到root
用户
sudo -i
1
root
,加载root用户的完整登录环境
(类似su -
)以指定用户运行命令
sudo -u www-data whoami
1
www-data
用户的身份执行命令
sudo
配置文件(/etc/sudoers
)
sudoers
文件是 sudo
权限的配置文件,定义了哪些用户或用户组可以执行哪些命令常见规则示例
# 允许用户 `user1` 以 `root` 权限执行任何命令
user1 ALL=(ALL:ALL) ALL
# 允许用户 `user2` 在不输入密码的情况下运行所有命令
user2 ALL=(ALL:ALL) NOPASSWD: ALL
# 允许用户 `user3` 只运行特定命令
user3 ALL=(ALL:ALL) /usr/bin/systemctl restart apache2
# 允许用户组 `admin` 执行所有命令
%admin ALL=(ALL:ALL) ALL
1234567891011
sudo
和su
的区别
特点 | sudo | su |
---|---|---|
作用 | 提升权限执行单个命令或切换到root | 切换到另一个用户(默认是root) |
密码使用 | 使用当前用户的sudo密码 | 使用目标用户的密码(如root密码) |
权限控制 | 通过/etc/sudoers 进行细粒度控制 | 需要知道目标用户密码,没有细粒度权限控制 |
安全性 | 更安全(避免暴露root密码,且支持日志审计 ) | 较不安全(需要启用并暴露root密码) |
适用场景 | 执行单次提权命令、管理系统 | 长期以root用户身份工作 |
在Linux系统中,用户组管理
是用户管理的重要部分。通过对用户组的管理,可以方便地设置用户权限,组织用户,以及控制对资源的访问。
用户组的添加、修改和删除实际上就是对/etc/group
文件的更新
使用root账户查看当前系统的用户组有哪些
组名
,组的的名称密码占位符
,通常为 x,实际密码存储在/etc/gshadow
文件中组的ID
组内用户列表
,属于该组的用户查看当前登录的账户属于哪一组
查看某个用户属于哪一组
使用groupadd
命令可以创建一个新的用户组。
基本语法
groupadd [选项] 用户组名
1
常用示例
创建一个名为developers的用户组
groupadd developers
1
指定组ID创建用户组
groupadd -g 1001 developers
1
使用groupmod
命令修改组的信息,包括组名和组ID。
常用示例
将组developers的名字改为devteam
groupmod -n devteam developers
1
-n
:指定新的组名将组developers的GID修改为2000
groupmod -g 2000 developers
1
将用户john的主组
修改为developers
usermod -g developers john
1
将用户john添加到admins附加组
usermod -aG admins john
1
-a
:追加用户到附加组(不加 -a 会覆盖用户当前的附加组)-G
:指定附加组列表删除一个名为developers的用户组
groupdel developers
1
如果系统中有文件或目录属于该组,删除组后文件可能会显示为无效的组ID
ls -l
或ll
可以查看文件的详细属性信息示例
$ ls -l
-rw-r--r-- 1 user group 1234 Dec 22 12:00 example.txt
12
输出的每一部分的含义如下:
字段 | 示例值 | 含义 |
---|---|---|
文件类型和权限 | -rw-r--r-- | 文件类型和权限(文件、目录、符号链接等) |
硬链接数量 | 1 | 指向该文件的硬链接数量 |
所有者(用户) | user | 文件所属用户 |
所属组 | group | 文件所属组 |
文件大小 | 1234 | 文件大小,以字节为单位 |
修改时间 | Dec 22 12:00 | 文件的最后修改时间 |
文件名 | example.txt | 文件的名称 |
字符 | 文件类型 | 说明 |
---|---|---|
- | 普通文件 | 常见的文本文件、二进制文件等 |
d | 目录 | 文件夹 |
l | 符号链接 | 指向另一个文件的快捷方式 |
b | 块设备文件 | 存储设备(如硬盘、光盘) |
c | 字符设备文件 | 终端设备等 |
s | 套接字文件 | 用于进程间通信 |
p | 命名管道(FIFO) | 用于进程间通信的特殊文件 |
rwx
组合表示,分为三组所有者
(User):文件的拥有者所属组
(Group):文件所属的用户组其他用户
(Other):系统中所有其他用户权限表示
字符 | 权限 | 说明 |
---|---|---|
r | 读取(read) | 查看文件内容或列出目录内容 |
w | 写入(write) | 修改文件内容或在目录中创建/删除文件 |
x | 执行(execute) | 运行文件(脚本或程序)或进入目录 |
- | 无权限 | 无法执行对应操作 |
权限结构
-
、d
等)示例 | 解释 |
---|---|
-rw-r--r-- | 普通文件,所有者可读写,组用户和其他用户只读 |
drwxr-xr-x | 目录,所有者可读写执行,组用户和其他用户可读执行 |
-rwx------ | 普通文件,仅所有者可读写执行 |
chmod
命令修改语法
chmod [模式] 文件名
1
方式 1:使用数字表示权限
权限 | 数字 |
---|---|
r | 4 |
w | 2 |
x | 1 |
- | 0 |
示例
chmod 755 file
rwx
(4+2+1=7)r-x
(4+1=5)r-x
(4+1=5)方式 2:使用符号表示权限
u
:所有者g
:组用户o
:其他用户a
:所有用户+
:增加权限-
:移除权限=
:设置权限示例
chmod u+x file # 给所有者增加执行权限
chmod g-w, o-w file # 删除同组人员和其他组人员写的权限
chmod o=r file # 将其他用户权限设置为只读
123
chown
和chgrp
命令修改文件所有者和所属组常用示例
修改所有者
chown 新所有者 文件名
1
示例:
chown user2 file
1
修改所属组
chgrp 新组 文件名
1
示例:
chgrp developers file
1
同时修改所有者和组
chown 新所有者:新组 文件名
1
示例:
chown user2:developers file
end
一口Linux
关注,回复【1024】海量Linux资料赠送
精彩文章合集
文章推荐