Linux 用户与组管理:useradd、group 与 sudo 一次讲清
为什么要有用户和组
Linux 是多用户系统,一台机器上可以有多个账号同时使用。每个文件、每个进程都归属于某个用户,权限的边界就从这里划开:你能读什么、能改什么、能执行什么,首先取决于你是谁。组则是把一批用户打包成一个集合,方便统一授权——给组一次权限,组里的所有用户都跟着生效,省得一个个去配。
看一眼现状:id、whoami、groups
动手之前先看清自己是谁。whoami 显示当前用户名,id 会同时打出 uid、gid 和所属组,groups 只列组。刚装好的系统上一般只有一个普通用户加 root,uid 为 0 的永远是 root,普通用户从 1000 开始编号。记住这个对照关系,后面排权限问题时经常要用到。
建用户:useradd 与 passwd
新建用户用 useradd,例如 sudo useradd -m -s /bin/bash dev:-m 是同时创建家目录,-s 指定登录 shell。光建用户还不够,账号默认是没有密码的,登录不了,需要 sudo passwd dev 再设一个密码。想顺手把用户加进某个组,建的时候加上 -G sudo,docker,或者事后用 sudo usermod -aG docker dev 追加——注意 -aG 里的 -a 千万别漏,漏了会把用户原来加入的组全部替换掉。
组管理:groupadd 与 groupdel
组的命令是一套对应的:groupadd testers 建组,groupdel testers 删组,gpasswd -a dev testers 也可以把用户加进组。用户和组的对应关系存在 /etc/group 里,每行一个组,格式是组名、密码占位、gid、成员列表,直接看这个文件是最直观的核对方式。改完组之后,已经登录的会话不会立即生效,需要重新登录一次,新的组成员身份才会挂上。
sudo:普通用户临时提权
日常运维很少直接用 root 登录,靠的是 sudo:普通用户在命令前加 sudo,输入自己的密码后临时拿到 root 权限执行这一条命令。谁能用 sudo 由 /etc/sudoers 决定,最常见的授权就是把用户放进 sudo 组(Debian/Ubuntu)或 wheel 组(RHEL/CentOS)。改这个文件不要直接用编辑器打开,用 visudo,它会在保存前检查语法,写错一行导致 sudo 全军覆没就麻烦了。
删用户与改名字
人走了账号要回收:userdel dev 只删账号、保留家目录,userdel -r dev 连家目录一起删,删之前先确认里面没有要留的东西。改用户名用 usermod -l newname oldname,改家目录位置用 usermod -d /home/newname -m oldname。这类操作最好在该用户没有登录的时候做,否则正在跑的进程和文件归属会乱。
排错思路
权限问题十有八九出在身份上:先 id 用户名 看 uid、gid 和组对不对,再 ls -l 看文件归属和 rwx 位。刚加的组没生效,先问一句有没有重新登录;sudo 提示不在 sudoers 里,先查用户在不在 sudo 或 wheel 组。把用户、组、sudo 这三层理顺,Linux 权限的大半问题都有了头绪。
- 点赞
- 收藏
- 关注作者
评论(0)