飞跃高山与大洋的鱼飞跃高山与大洋的鱼
首页
先看
计算机
  • 数学
  • Linux
  • Arch
  • Manjaro
  • Ubuntu
  • CentOS
  • Kubernetes
  • Web
  • JavaScript
  • TypeScript
  • CSS
  • Canvas
  • Vue
  • Vite
  • NuxtJS
  • Webpack
  • Flutter
  • D3
  • Jest
  • WeApp
  • Utils
  • Nodejs
  • Nestjs
  • Golang
  • Nginx
  • Traefik
  • MySQL
  • MongoDB
  • Redis
  • Docker
算法
  • 像素风
  • Git
  • Github
  • VSCode
  • Chrome
  • Google
  • Bookmark scripts
  • 导航 🎉
  • VuePress 侧边栏插件
  • VuePress 官网
🚇 开往
首页
先看
计算机
  • 数学
  • Linux
  • Arch
  • Manjaro
  • Ubuntu
  • CentOS
  • Kubernetes
  • Web
  • JavaScript
  • TypeScript
  • CSS
  • Canvas
  • Vue
  • Vite
  • NuxtJS
  • Webpack
  • Flutter
  • D3
  • Jest
  • WeApp
  • Utils
  • Nodejs
  • Nestjs
  • Golang
  • Nginx
  • Traefik
  • MySQL
  • MongoDB
  • Redis
  • Docker
算法
  • 像素风
  • Git
  • Github
  • VSCode
  • Chrome
  • Google
  • Bookmark scripts
  • 导航 🎉
  • VuePress 侧边栏插件
  • VuePress 官网
🚇 开往
  • LINUX

    • 为什么不试试 Linux 呢
    • 一切皆文件
    • Shell 脚本
    • 别名 alias
    • 分发脚本 ansible
    • 归档和压缩
    • 命令选项
    • 命令行快捷键
    • Linux 常用命令
    • 解放双手计划
    • 检测服务器通达
    • Linux 系统目录结构
    • Dnsmasq
    • fail2ban
    • 防火墙 firewalld
    • 花里胡哨且实用的命令
    • 文本三剑客
    • 如何启用硬盘
    • 输入、输出重定向
    • 作业控制
    • Prometheus
    • 磁盘阵列
    • 远程同步文件
    • SSH 让你的服务器更安全
    • 守护系统 systemd
    • 用户管理
      • passwd 格式
      • 用户相关操作
      • useradd 解析
        • 参数说明
      • userdel 解析
      • 用户赋权
        • 1. chown
        • 2. chmod
        • 3. setfacl
    • 查看文本内容
    • 传参 xargs

用户管理

Linux 是多用户多任务操作系统,换句话说,Linux 系统支持多个多用户在同一时间内登录,并切每个用户可以执行不同的任务。

在登录 Linux 系统时虽然输入的是用户名和密码,但其实 Linux 并不认识用户名称,它只认识用户名对应的 ID。Linux 将用户名与 ID 的对应关系存放在 /etc/passwd 文件中;将用户组名与 GID 的对应关系存放在 /etc/group 文件中。

passwd 格式

警告

shanyuhai:x:1000:1000:shanyuhai:/home/shanyuhai:/bin/bash

对应为 ➡️ 用户名:密码:UID:GID:描述信息:主目录:默认Shell

名称解释
用户名方便用户记忆的字符串。
密码x (x 虽然不是真正的密码,被删除则会被认为没有密码)表示该用户设置了密码,但不是真正的密码,真正的密码保存在 /etc/shadow 文件中。早期 UNIX 中,保存的是真正的加密密码串,后果就是被暴力破解。
UID用来识别用户的 ID。0 为超级用户;1 ~ 1000 为伪用户;1000 ~ 65535 为普通用户。
GID表示用户初始组的组 ID,创建用户时自动创建,用户可以加入其他的用户组(附加组)。
描述信息即描述信息。
主目录主目录又称家目录。
默认 ShellShell 就是 Linux 的命令解释器。

用户相关操作

命令含义
useradd新增用户。
passwd修改密码。
usermod修改用户(visudo 更强)。
chage修改密码信息,可用于让用户登录后立即修改密码 chage -d 0 username 。
userdel删除用户。
groupadd新增用户组。
groupmod修改用户组。
groupdel删除用户组,仅适用于不是任何用户初始组的群组,否则删除失败。
gpasswd管理用户组。
newgrep设置初始组。

也可以选择更为简单的 adduser、deluser 进行交互式操作,可添加 -h 来查看帮助。

useradd 解析

警告

useradd shanyuhai

该命令会完成以下几项操作:

  1. 在 /etc/passwd 文件中新增了一行与 shanyuhai 用户相关的数据;
  2. 在 /etc/shadow 文件中新增了一行与 shanyuhai 用户密码相关的数据;
  3. 在 /etc/group 文件中新增了一行与 shanyuhai 的群组;
  4. 在 /etc/gshadow 文件中新增一行与 shanyuhai 群组密码相关的数据;
  5. 默认创建用户的主目录和邮箱;
  6. 将 /etc/skel 目录中的配置文件复制到新用户的主目录中。

参数说明

利用 useradd -h 可看到进一步的说明:

  • -m:创建用户的目录
  • -M:不创建用户的目录
  • -s:指定用户的 Shell,若指定 -s /usr/sbin/nologin 会禁止用户登录并给出提示,而 -s /bin/false 则返回一个错误状态,不会给出提示

userdel 解析

在执行 userdel 删除用户前需要先找到用户相关的数据并删除之。

警告

find -user shanyuhai # 找出所有并删除

userdel shanyuhai

该命令会完成以下几项操作:

  1. 删除 /etc/passed 记录;
  2. 删除 /etc/shadow 记录;
  3. 删除 /etc/group 记录;
  4. 删除 /etc/gshadow 记录;
  5. 删除邮箱:rm -rf /var/spod/mail/username;
  6. 删除家目录:rm -rf /home/username;
  7. 测试 useradd username,若没有报错则成功。

用户赋权

1. chown

chown 可以改变某个文件或目录的所有者和所属组,当是目录时记得加 -R 递归处理。

chown shanyuhai:shanyuhai /home/shanyuhai
# 或指定为当前用户
chown $USER ~/.ssh/config

2. chmod

角色说明
uUser,文件或目录的所有者。
gGroup,文件或目录的所属组。
oOther,其余用户。
权限说明
r读取权限,数字为 4。
w写入权限,数字为 2。
x执行(目录切换),数字为 1。
chmod u=rwx,g=rw,o=r /tmp/hello.txt
# 等价于
chmod 764 /tmp/hello.txt

# 追加执行权限
chmod u+x /tmp/hello.txt

3. setfacl

仅使用以上两种方案无法解决更为复杂的权限问题,这时需要引入 ACL(Access Control List) 来解决问题。

# 开始前可以先看已知权限
getfacl /tmp/hello.txt

# 1. 基于用户
useradd acl01 # ACL
ll hello.txt # 查看
setfacl -m u:acl01:rx hello.txt
ll hello.txt # 可以注意到权限位后面多了一个 `+`,表示该文件拥有 ACL 权限

getfacl /tmp/hello.txt # 验证

# 2. 基于用户组
groupadd acl02 # ACL
setfacl -m g:acl02:rx hello.txt

getfacl hello.txt # 验证

需要注意的是如果给父目录设定了默认 ACL 权限,那么父目录之后新建的子文件都会继承父目录的 ACL 权限(未设置则仅对目录生效)。

mkdir -p /tmp/hi
setfacl -m d:u:acl01:rx /tmp/hi
echo "你好" > /tmp/hi/chinese.txt

getfacl /tmp/hi/chinese.txt # 验证
编辑文档!
上次更新:
贡献者: shanyuhai123
Prev
守护系统 systemd
Next
查看文本内容