在 Linux 操作系统中,用户与权限管理是系统安全和稳定运行的核心环节。Linux 是典型的多用户操作系统,每个使用系统的人都需要拥有独立的用户账户,系统通过用户 ID(UID)来唯一标识不同用户。
1. 创建普通用户
创建普通用户使用useradd命令,默认会分配 1000 及以上的 UID,同时创建对应的家目录和默认 shell。
useradd [选项] 用户名
# 示例 1:创建用户并自动创建家目录
useradd -m newuser # 创建 newuser 并生成 /home/newuser
# 示例 2:指定家目录和 shell
useradd -m -d /data/user1 -s /bin/bash user1 # 家目录为 /data/user1,shell 为 bash
# 示例 3:指定初始组和附加组
useradd -m -g developers -G sudo,adm user2 # 初始组为 developers,附加组为 sudo 和 adm
#查看系统中有多少用户
cut -d: -f1 /etc/passwd
2、创建系统用户
系统用户主要用于运行服务,通常不需要登录权限,因此创建时会指定较小的 UID 范围,并设置不可登录的 shell。
示例:创建一个用于运行 nginx 服务的系统用户
useradd -r -s /sbin/nologin -M nginx
系统用户创建后无需设置密码(也可以设置,但通常没必要),其主要作用是在运行 “nginx” 服务时作为进程的所有者,限制服务进程的权限范围,避免服务被攻击后获得过高权限影响系统安全。
3. 设置用户密码
passwd 用户名
# 示例:为用户设置密码(需输入两次)
passwd newuser # 交互设置 newuser 的密码
4. 删除用户
userdel [选项] 用户名
# 示例 1:仅删除用户账户
userdel olduser # 保留 /home/olduser 目录
# 示例 2:彻底删除用户(推荐)
userdel -r olduser # 删除用户及家目录、邮件池
4.创建用户组
groupadd [选项] 组名
# 示例 1:创建普通组
groupadd devops # 创建 devops 组
# 示例 2:创建系统组(GID < 1000)
groupadd -r systemd # 创建系统组 systemd
5. 删除用户组
groupdel 组名
# 示例:删除空组
groupdel temp # 删除 temp 组(组内无用户时生效)
6. 修改用户所属组
usermod -aG 组名 用户名
# 示例 1:添加用户到单个组
usermod -aG docker user1 # 将 user1 添加到 docker 组(用于容器权限)
# 示例 2:添加用户到多个组
usermod -aG sudo,wheel user2 # 赋予 user2 管理员权限(sudo 组)
7. 切换用户
su - 用户名
# 示例 1:切换到 root 用户
su - root # 切换到 root 并加载环境变量
# 示例 2:临时执行命令(无需切换)
sudo -u user1 ls /data # 以 user1 身份执行 ls 命令
1、Linux 是多用户多任务操作系统,为了区分不同用户对文件的操作权限,采用了用户 - 组 - 其他(User-Group-Others)的三元权限模型。
2、每种身份可拥有三种基本权限,分别是:
3、数字表示法用三位八进制数表示权限组合,每个权限对应固定数值:
# 设置权限为rwxr-xr-x(755):常用于可执行文件
chmod 755 app.py
# 设置权限为rw-r--r--(644):常用于普通文件
chmod 644 README.md
# 设置权限为rwx------(700):常用于私有目录
chmod 700 ~/private/
# 设置权限为rwxrwxrwx(777):所有用户都有全部权限(谨慎使用)
chmod 777 /tmp/shared/
4、chmod 和 chown
权限赋值的核心命令:chmod
chmod [选项] 权限 文件/目录
# 设置权限为rwxr-xr-x(755):常用于可执行文件
chmod 755 app.py
# 设置权限为rw-r--r--(644):常用于普通文件
chmod 644 README.md
# 设置权限为rwx------(700):常用于私有目录
chmod 700 ~/private/
# 设置权限为rwxrwxrwx(777):所有用户都有全部权限(谨慎使用)
chmod 777 /tmp/shared/
修改文件的所有者和群组,这里有个chown
万能的命令,-R
参数非常有用,R是recursive的缩写,表示递归,用来设置子目录和子文件。
chown -R stark:stark file.txt
1. find
命令(全能搜索)
-name
:按文件名查找(支持通配符 *
、?
)。-type
:按文件类型查找(f
= 普通文件,d
= 目录,l
= 符号链接)。-size
:按文件大小查找(+10M
= 大于 10MB,-50k
= 小于 50KB)。-mtime
:按修改时间查找(-2
=2 天内,+7
=7 天前)。-user
/-group
:按所有者 / 组查找。# 查找当前目录下所有名为 "example.txt" 的文件
find . -name "example.txt"
# 查找 /etc 目录下所有 .conf 后缀的文件(忽略大小写)
find /etc -iname "*.conf"
# 查找 /home 目录下大于100MB且修改时间在7天内的文件
find /home -size +100M -mtime -7
# 查找并删除30天前的临时文件
find /tmp -type f -mtime +30 -delete
#查找二进制目录命令
find / -type f -executable -name "nginx" 2>/dev/null
2. locate
命令(快速索引搜索)
updatedb
命令更新),速度极快。# 查找所有包含 "nginx" 的文件
locate nginx
# 使用通配符精确匹配
locate /usr/bin/python3 # 查找绝对路径
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。