Skip to content

用户管理

用户账户

useradd - 创建用户

bash
useradd username                   # 创建用户
useradd -m username                # 创建用户并创建主目录
useradd -m -s /bin/bash username   # 指定默认 Shell
useradd -m -d /home/custom username    # 指定主目录
useradd -m -g developers username  # 指定主组
useradd -m -G wheel,docker username    # 指定附加组
useradd -m -u 1001 username        # 指定 UID
useradd -m -e 2024-12-31 username  # 指定过期日期
useradd -r systemuser              # 创建系统用户

usermod - 修改用户

bash
usermod -l newname oldname         # 修改用户名
usermod -d /home/newdir username   # 修改主目录
usermod -s /bin/zsh username       # 修改默认 Shell
usermod -g developers username     # 修改主组
usermod -aG docker username        # 添加附加组
usermod -G group1,group2 username  # 设置附加组(覆盖)
usermod -L username                # 锁定用户
usermod -U username                # 解锁用户
usermod -e 2024-12-31 username     # 设置过期日期
usermod -e "" username             # 取消过期日期

userdel - 删除用户

bash
userdel username                   # 删除用户
userdel -r username                # 删除用户和主目录
userdel -rf username               # 强制删除

passwd - 密码管理

bash
passwd                             # 修改当前用户密码
passwd username                    # 修改指定用户密码
passwd -l username                 # 锁定用户密码
passwd -u username                 # 解锁用户密码
passwd -d username                 # 删除密码
passwd -e username                 # 强制下次登录修改密码
passwd -S username                 # 查看密码状态
passwd -n 7 -x 90 -w 7 username    # 密码策略

密码策略选项:

  • -n: 最小使用天数
  • -x: 最大使用天数
  • -w: 警告天数
  • -i: 过期后锁定天数

查看用户信息

bash
id username                        # 查看用户 ID 信息
id -u username                     # 查看 UID
id -g username                     # 查看 GID
id -G username                     # 查看所有组 ID
id -un                             # 当前用户名

whoami                             # 当前用户名
who                                # 查看登录用户
w                                  # 详细登录信息
users                              # 登录用户列表

finger username                    # 用户详细信息
pinky username                     # 简化版用户信息

用户组管理

groupadd - 创建组

bash
groupadd developers                # 创建组
groupadd -g 1001 developers        # 指定 GID
groupadd -r systemgroup            # 创建系统组

groupmod - 修改组

bash
groupmod -n newname oldname        # 修改组名
groupmod -g 1002 groupname         # 修改 GID

groupdel - 删除组

bash
groupdel groupname                 # 删除组

gpasswd - 组密码管理

bash
gpasswd groupname                  # 设置组密码
gpasswd -r groupname               # 删除组密码
gpasswd -a username groupname      # 添加用户到组
gpasswd -d username groupname      # 从组中移除用户
gpasswd -A admin groupname         # 设置组管理员
gpasswd -M user1,user2 groupname   # 设置组成员列表

查看组信息

bash
groups                             # 当前用户所属组
groups username                    # 指定用户所属组
cat /etc/group                     # 查看所有组
getent group groupname             # 查看组信息

用户配置文件

/etc/passwd - 用户信息

username:x:1001:1001:User Name:/home/username:/bin/bash

字段说明:

  1. 用户名
  2. 密码占位符(x 表示密码在 /etc/shadow)
  3. UID
  4. GID
  5. 用户描述
  6. 主目录
  7. 默认 Shell
bash
cat /etc/passwd
getent passwd username

/etc/shadow - 密码信息

username:$6$hash:19600:0:99999:7:::

字段说明:

  1. 用户名
  2. 加密密码
  3. 上次修改日期(从1970-01-01起的天数)
  4. 最小使用天数
  5. 最大使用天数
  6. 警告天数
  7. 过期后锁定天数
  8. 账户过期日期
  9. 保留字段
bash
sudo cat /etc/shadow
sudo chage -l username             # 查看密码过期信息

/etc/group - 组信息

groupname:x:1001:user1,user2

字段说明:

  1. 组名
  2. 密码占位符
  3. GID
  4. 组成员列表
bash
cat /etc/group
getent group

/etc/gshadow - 组密码信息

bash
sudo cat /etc/gshadow

权限管理

基本权限

权限文件目录
r (4)读取内容列出内容
w (2)修改内容创建/删除文件
x (1)执行文件进入目录

chmod - 修改权限

数字方式:

bash
chmod 755 file                     # rwxr-xr-x
chmod 644 file                     # rw-r--r--
chmod 600 file                     # rw-------
chmod 700 file                     # rwx------
chmod 777 file                     # rwxrwxrwx
chmod -R 755 directory             # 递归修改

符号方式:

bash
chmod u+x file                     # 所有者添加执行权限
chmod g-w file                     # 组移除写权限
chmod o=r file                     # 其他人只读
chmod a+x file                     # 所有人添加执行权限
chmod u=rwx,g=rx,o=r file
chmod +x file                      # 默认所有用户

特殊权限

权限数字说明
SUID4以文件所有者身份执行
SGID2以文件所属组身份执行
Sticky1只有所有者可删除
bash
chmod 4755 file                    # SUID
chmod 2755 dir                     # SGID
chmod 1755 dir                     # Sticky Bit
chmod u+s file                     # 设置 SUID
chmod g+s dir                      # 设置 SGID
chmod +t dir                       # 设置 Sticky Bit

ACL - 访问控制列表

bash
getfacl file                       # 查看 ACL
setfacl -m u:username:rwx file     # 设置用户 ACL
setfacl -m g:groupname:rx file     # 设置组 ACL
setfacl -m u:username:rw- dir      # 设置目录 ACL
setfacl -x u:username file         # 删除用户 ACL
setfacl -b file                    # 删除所有 ACL
setfacl -d -m u:username:rx dir    # 设置默认 ACL(新文件继承)
setfacl -R -m u:username:rx dir    # 递归设置

chown - 修改所有者

bash
chown user file                    # 修改所有者
chown user:group file              # 修改所有者和组
chown :group file                  # 只修改组
chown -R user:group directory      # 递归修改
chown --reference=file1 file2      # 参照文件设置

chgrp - 修改组

bash
chgrp group file                   # 修改组
chgrp -R group directory           # 递归修改

sudo 权限

配置 sudo

bash
visudo                             # 编辑 sudoers 文件

sudoers 配置示例

root    ALL=(ALL:ALL) ALL
username ALL=(ALL) ALL
username ALL=(ALL) NOPASSWD: ALL
username ALL=(ALL) /usr/bin/apt, /usr/bin/yum
%wheel  ALL=(ALL) ALL
%sudo   ALL=(ALL:ALL) ALL

格式说明:

用户    主机=(运行身份) 命令

sudo 使用

bash
sudo command                       # 以 root 执行命令
sudo -u username command           # 以指定用户执行
sudo -l                            # 查看可执行的命令
sudo -k                            # 清除缓存密码
sudo -v                            # 验证 sudo 密码
sudo -i                            # 切换到 root
sudo su -                          # 切换到 root

切换用户

su - 切换用户

bash
su -                               # 切换到 root
su - username                      # 切换到指定用户
su username                        # 切换用户(不加载环境)
su -c "command" username           # 以指定用户执行命令

su 与 sudo 的区别

特性susudo
需要密码目标用户密码当前用户密码
权限范围完全切换可限制命令
日志记录
安全性较低较高

登录管理

查看登录信息

bash
who                                # 查看登录用户
w                                  # 详细登录信息
last                               # 登录历史
last -n 20                         # 最近20条
last -f /var/log/wtmp.1            # 指定日志文件
lastb                              # 失败登录记录
lastlog                            # 所有用户最后登录时间

强制用户下线

bash
pkill -u username                  # 终止用户所有进程
pkill -9 -t pts/0                  # 终止指定终端
who -u                             # 查看用户 PID
kill -9 <PID>                      # 终止进程

批量用户管理

批量创建用户

bash
for user in user1 user2 user3; do
    useradd -m $user
    echo "$user:password" | chpasswd
done

使用 newusers 批量创建

创建文件 users.txt:

user1:x:1001:1001::/home/user1:/bin/bash
user2:x:1002:1002::/home/user2:/bin/bash
bash
newusers users.txt

批量修改密码

创建文件 passwords.txt:

user1:password1
user2:password2
bash
chpasswd < passwords.txt

下一步学习