Linux 基础之查看、添加、修改、删除用户命令介绍

坦白讲,Linux用户管理就是用一些基本的命令来进行增删改查。
其实很简单,但是有一些关键点需要弄清楚。

首先,我们来谈谈最重要的事情。
/etc/passwd文件是用户信息的大纲,但不要只用cat看。
去年我们在运行这个项目的时候,一位同事的猫错误代码直接卡在了机器上。
最后使用getent passwd保存即可。
还有一点是useradd命令的-m参数非常实用,特别是在处理3 000个用户的组时。
如果不创建主目录会报错。
还有一些重要的细节。
例如,指定主目录时,如果该路径不存在,系统会自动创建,但必须正确设置主目录的权限,否则普通用户将无法更改。

一开始我以为passwd命令是最简单的修改密码的,后来发现是错误的。
您需要 sudo 来更改 root 密码。
只有普通用户才能使用passwd。
等等,还有一件事。
使用chpasswd批量修改密码时,不要输错users.txt格式。
空格或换行符必须符合标准,否则密码可能会被篡改。

最后提醒:使用 userdel 删除用户时,不要忘记 -r 参数。
去年,一位同事刚刚删除了记录。
结果,用户的主目录仍然占用系统空间,导致磁盘变满。
如果你觉得值得一试,可以给常用的命令写一个别名,比如alias us='useradd -m -s /bin/bash -g users',这样效率更高,而且可以防止滑点。

linux用户的ID分几种

那天,我在宿舍修电脑的时候,同学小张的系统突然关机了,我无法登录,当我进入他的终端时,看到UID变了,很多用户的UID互相冲突了。
例如,UID 1 000本来是小张的,但被脚本改为UID 5 01 现在系统找不到对应关系,登录时提示“无效的UID”。
他赶紧拆了重建,花了很长时间。
这时,我突然想到,这就像家里的水管一样。
UID 是水龙头编号。
如果更换不当,水压将会恶化。
但 Linux 比管道系统复杂得多。
更改 UID 可能涉及整个系统的权限树。
例如,如果 /etc/passwd 中的格式稍微不正确。
甚至无法打开主目录。
我查了资料,发现有的公司内部系统UID从5 000开始配置就和系统自己不一样。
UID和GID看似简单,但如果真正改的话,每一步都要像绣花一样小心翼翼。
等等还有一件事。
我看到有人把UID改成中文号码,系统就崩溃了。
这很有趣。

Linux如何查看和修改用户所属组

哎,我告诉你,我在做系统的时候,在处理用户群体的时候,确实踩到了很多坑。

就在几年前,我在武汉的时候,有一个项目紧急启动。
有哥们来找我,说用户alice无法添加到web_admins组。
当我看到它时,我想,哎呀,我用错了顺序。
他使用了 usermod -G web_admins alice,但是正如你所看到的,如果不添加 -a,他所在的所有组都消失了。
如果这是生产环境,可以吗? 赶紧sudo usermod -aG web_admins alice,好家伙,这样就可以了。
因此,添加其他组时,-a 一定不能丢失。

还有一次,在上海,我正在构建一项新服务。
我想建立一个名为 devops 的独立小组,并让一些开发成员加入。
使用gpasswd -a alice devops时,报错。
我一想,哦,得先组个团啊。
如果我忘记创建组,就会报告错误。
这是很基本的,但是我当时手抖了,差点耽误了其他事情。
群组创建后,操作起来就很简单了。

我记得另一个场景。
在杭州,用户bob权限不正确,无法访问某个目录。
我查了一下,发现他的团队犯了一个错误。
他使用 sudo usermod -g Developer bob 来更改组,但他没有注意到开发人员组实际上是测试组。
结果,bob想要写一个文件,却发现没有权限。
教训是,当改变主组时,你必须非常小心,以确保新组是正确的。

而且,更改群组后,必须注销并重新登录,否则就没用了。
我有一个同事,换了群之后,就不让他退出了。
结果程序运行时一直出错。
真的,虽然我让他退出,他还是坚持要尝试一下,最后还怪罪了我。
你在生气吗?
我们来谈谈组文件/etc/group。
我在广东的时候,服务器出了问题。
经过长时间的搜索,我发现/etc/group是被动的。
你看一下那个文件,格式不对,而且有很多地方逗号不对。
结果,无法将用户添加到组中,并且服务出现问题。
所以,不要低估/etc/passwd 和/etc/group。
有时这两个文件会出现问题。

此外,使用 groups 命令非常快。
您可以看到当前用户属于哪些组,并且会显示在一行中。
比如分组Alice,你可以直接看到Alice在哪些分组中,非常方便。
但如果更改组,则必须注销并重新登录,否则组仍引用原来的组。

总之,说到用户群体,最重要的是不要把主群体和附加群体混为一谈。
新文件默认属于主组。
如果添加额外的组,则必须注意setgid位,否则权限将丢失。
另外,换完组后,记得注销并重新登录,否则你的工作就白费了。