关于 user-permissions
面向 Linux 管理员的用户、组与权限管理技能,涵盖 sudo、ACL 及特殊权限的命令与配置示例。
主要功能
- 01查看和管理用户账户
- 02创建与维护用户组
- 03配置 sudo 与 sudoers
- 04查看和设置 ACL
- 05管理 SUID、SGID 与粘滞位
适用场景
- 01创建带指定组和 shell 的开发者账户
- 02配置共享目录的组权限
- 03限制用户可通过 sudo 执行的命令
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ chaterm/ terminal-skills --skill user-permissions安装后在 Claude Code 中输入/user-permissions确认已加载。
详细介绍
用户与权限管理
概述
Linux 用户管理、组管理、sudo 配置、ACL 权限及其他技能。
用户管理
查看用户
# Current user
whoami
id
# User information
id username
finger username
# All users
cat /etc/passwd
getent passwd
# Logged in users
who
w
last # Login history
用户操作
# Create user
useradd username
useradd -m -s /bin/bash username # Create home directory, specify shell
useradd -G group1,group2 username # Specify supplementary groups
# Modify user
usermod -aG groupname username # Add to group
usermod -s /bin/zsh username # Change shell
usermod -L username # Lock user
usermod -U username # Unlock user
# Delete user
userdel username
userdel -r username # Also delete home directory
# Change password
passwd username
passwd -l username # Lock password
passwd -u username # Unlock password
chage -l username # View password policy
组管理
查看组
# User's groups
groups username
id -Gn username
# All groups
cat /etc/group
getent group
# Group members
getent group groupname
组操作
# Create group
groupadd groupname
groupadd -g 1001 groupname # Specify GID
# Modify group
groupmod -n newname oldname # Rename
# Delete group
groupdel groupname
# Manage group members
gpasswd -a username groupname # Add user
gpasswd -d username groupname # Remove user
gpasswd -M user1,user2 groupname # Set member list
sudo 配置
基本用法
# Execute as root
sudo command
sudo -i # Switch to root shell
sudo -u username command # Execute as another user
# View permissions
sudo -l
sudoers 配置
# Edit sudoers (recommended method)
visudo
# Or edit files under /etc/sudoers.d/
visudo -f /etc/sudoers.d/username
常见配置示例
# /etc/sudoers.d/username
# Full privileges
username ALL=(ALL:ALL) ALL
# No password required
username ALL=(ALL) NOPASSWD: ALL
# Specific commands
username ALL=(ALL) /usr/bin/systemctl restart nginx
# Specific commands without password
username ALL=(ALL) NOPASSWD: /usr/bin/docker
# Group privileges
%groupname ALL=(ALL) ALL
ACL 权限
查看 ACL
getfacl file
getfacl -R dir # Recursive view
设置 ACL
# Set user permissions
setfacl -m u:username:rwx file
setfacl -m u:username:rx dir
# Set group permissions
setfacl -m g:groupname:rx file
# Set default ACL (new files inherit)
setfacl -d -m u:username:rwx dir
# Recursive set
setfacl -R -m u:username:rx dir
# Remove ACL
setfacl -x u:username file # Remove specific
setfacl -b file # Remove all
特殊权限
SUID/SGID/Sticky
# SUID (4) - Execute as file owner
chmod u+s file
chmod 4755 file
# SGID (2) - Execute as file group/directory inherits group
chmod g+s file
chmod 2755 dir
# Sticky (1) - Only owner can delete
chmod +t dir
chmod 1777 dir
# View
ls -la
# -rwsr-xr-x SUID
# -rwxr-sr-x SGID
# drwxrwxrwt Sticky
常见场景
场景 1:创建开发者用户
# Create user and group
groupadd developers
useradd -m -s /bin/bash -G developers devuser
# Set password
passwd devuser
# Configure sudo
echo "devuser ALL=(ALL) NOPASSWD: /usr/bin/docker, /usr/bin/systemctl" > /etc/sudoers.d/devuser
chmod 440 /etc/sudoers.d/devuser
场景 2:共享目录权限
# Create shared directory
mkdir /shared
groupadd shared
chown root:shared /shared
chmod 2775 /shared # SGID ensures new files inherit group
# Add users to group
usermod -aG shared user1
usermod -aG shared user2
场景 3:限制用户只能执行特定命令
# /etc/sudoers.d/limited-user
limited ALL=(ALL) NOPASSWD: /usr/bin/systemctl status *, /usr/bin/journalctl
故障排除
| 问题 | 解决方案 |
|---|---|
| sudo 权限被拒绝 | 检查 /etc/sudoers.d/ 配置 |
| 用户无法登录 | 检查 shell、密码锁定状态 |
| 组权限未生效 | 重新登录或执行 newgrp groupname |
| ACL 未生效 | 检查文件系统是否支持 ACL |
评论
支持 Markdown