TencentOS Server 用户和组管理

在 TencentOS Server 4 上进行用户账号管理、组管理、sudo 权限配置和文件权限控制的操作方法,帮助系统管理员高效完成日常权限管理任务。

相关产品
TencentOS Server 产品页,含版本规格、价格与购买入口。

一、注意事项

如需创建或删除账号,请确认已获取 root 权限或使用具备 sudo 权限的普通账号。

二、创建用户

·创建普通用户(同时创建家目录,默认 Shell 为 bash):

useradd -m -s /bin/bash <username>

·创建系统用户(无家目录,无登录 Shell,适合服务账号):

useradd -r -s /sbin/nologin <service_user>

·创建用户并加入指定主组:

useradd -m -g <groupname> <username>

·创建用户同时加入多个附加组。加入附加组前请确保对应组已存在,可使用 groupadd <组名> 创建:

useradd -m -G wheel,docker,<groupname> <username>

·设置用户密码:

passwd <username>

三、查看用户信息

# 查看当前用户whoami# 查看用户信息id <username># 输出示例:uid=1001(alice) gid=1001(alice) groups=1001(alice),10(wheel)# 查看所有用户(含系统用户)cat /etc/passwd# 查看登录中的用户whow# 查看最近登录记录last

四、修改用户

注意:警告:锁定账号会导致该用户无法登录,正在运行的服务进程不受影响,但用户将无法建立新会话。请确认操作影响范围后再执行。

# 修改用户主组usermod -g <groupname> <username># 将用户添加到附加组(-a 追加,否则会替换)usermod -aG wheel <username>usermod -aG docker <username># 修改用户家目录usermod -d /new/home -m <username># 修改用户默认 Shellusermod -s /bin/zsh <username># 修改用户名(登录名)usermod -l <newname> <oldname># 锁定用户账号(禁止登录)usermod -L <username>passwd -l <username># 解锁用户账号usermod -U <username>passwd -u <username>

五、删除用户

注意:警告:userdel -r 会同时删除用户家目录及其中所有数据,操作不可逆,请确认已备份后再执行。

# 删除用户(保留家目录)userdel <username># 删除用户及其家目录(慎用!)userdel -r <username>

六、用户密码管理

# 设置密码passwd <username># 设置密码过期策略chage -M 90 <username> # 最长 90 天有效chage -l <username> # 查看密码过期信息# 强制用户下次登录修改密码passwd –expire <username>chage -d 0 <username>

七、组管理

# 创建组groupadd <groupname># 创建指定 GID 的组groupadd -g 2000 <groupname># 将用户加入组usermod -aG <groupname> <username>gpasswd -a <username> <groupname># 将用户从组中移除gpasswd -d <username> <groupname># 查看组信息groups <username>cat /etc/group | grep <groupname># 删除组groupdel <groupname>

八、sudo 权限配置

sudo 允许普通用户以 root 或其他用户身份执行命令,避免直接使用 root 登录。

九、通过 wheel 组配置

# 将用户加入 wheel 组(TencentOS 默认 wheel 组成员可使用 sudo)usermod -aG wheel <username># 验证su – <username>sudo whoami # 输出 root

十、自定义 sudoers 配置

注意:警告:编辑 /etc/sudoers 必须使用 visudo 命令,避免语法错误导致权限锁死。

visudo

常用配置示例:

# 允许 alice 执行所有命令(需输入密码)alice ALL=(ALL) ALL# 允许 alice 执行所有命令(无需密码,如 CI/CD 账号)alice ALL=(ALL) NOPASSWD: ALL# 允许 developers 组的成员执行所有命令%developers ALL=(ALL) ALL# 只允许执行特定命令(最小权限原则)bob ALL=(ALL) /usr/bin/systemctl restart nginx, /usr/bin/systemctl status nginx# 允许 alice 以 mysql 用户身份执行命令alice ALL=(mysql) /usr/bin/mysqldump

也可以在 /etc/sudoers.d/ 目录下创建独立文件(推荐,避免修改主配置文件):

# 创建 alice 的 sudo 配置echo "alice ALL=(ALL) NOPASSWD: /usr/bin/systemctl restart nginx" > /etc/sudoers.d/alicechmod 440 /etc/sudoers.d/alice

十一、基本权限(rwx)

# 修改文件权限chmod 755 /opt/myapp/start.sh # rwxr-xr-xchmod 644 /etc/myapp/config.yaml # rw-r–r–# 递归修改目录权限chmod -R 755 /opt/myapp/# 用符号修改权限chmod u+x script.sh # 给所有者添加执行权限chmod go-w file.txt # 去掉组和其他人的写权限chmod a+r file.txt # 给所有人添加读权限# 修改所有者和所属组chown <username>:<groupname> /opt/project/chown -R <username>:<groupname> /opt/project/ # 递归

十二、特殊权限位

# SUID(以文件所有者权限运行)chmod u+s /usr/bin/passwd # 示例:passwd 命令需要 SUID 修改 /etc/shadow# SGID(以文件所属组权限运行,对目录=新建文件继承目录的组)chmod g+s /shared/project/# Sticky Bit(目录:只有文件所有者才能删除自己的文件)chmod +t /tmpls -la /tmp # 显示为 drwxrwxrwt

十三、ACL(访问控制列表)

ACL 提供比传统 rwx 更细粒度的权限控制:

# 安装 acl 工具dnf install -y acl# 给特定用户设置权限setfacl -m u:bob:rw /shared/file.txt# 给特定组设置权限setfacl -m g:developers:rx /opt/project/# 查看 ACLgetfacl /shared/file.txt# 删除 ACLsetfacl -x u:bob /shared/file.txt# 递归设置 ACLsetfacl -R -m u:bob:rX /opt/project/

十四、验证

# 验证用户创建id <username>cat /etc/passwd | grep <username># 验证组成员groups <username># 验证 sudo 权限sudo -l -U <username> # 列出用户的 sudo 权限# 验证文件权限ls -la /opt/myapp/getfacl /shared/file.txt # 查看 ACL

十五、常见问题

问题:用户加入组后权限未生效

处理方案:当用户加入新组后,当前已登录的会话不会立即获取新组成员身份。可选择重新登录或使用 newgrp 命令在当前会话中刷新组信息:

# 当前会话生效(无需重新登录)newgrp <groupname>

问题: 报错sudo: user is not in the sudoers file

处理方案:将用户添加至 wheel组。

# 以 root 权限将用户加入 wheel 组usermod -aG wheel <username># 或在 /etc/sudoers.d/ 中添加配置

赞 (0)
上一篇 5天前
下一篇 5天前