#1 楼
列出要列出所有本地用户,您可以使用:
cut -d: -f1 /etc/passwd
列出所有能够(以某种方式)进行身份验证的用户,包括非本地,请参阅此回复。
一些更有用的用户管理命令(也仅限于本地用户):
要添加
到添加可以使用的新用户:
sudo adduser new_username
或:
sudo useradd new_username
另请参见:什么是adduser和useradd之间的区别是什么?
要删除/删除用户
要删除/删除用户,首先可以使用:
sudo userdel username
然后您可能要删除已删除用户帐户的主目录:
sudo rm -r /home/username
请谨慎使用以上命令!
修改
修改用户名:
usermod -l new_username old_username
更改用户密码:
sudo passwd username
更改用户的外壳:
sudo chsh username
更改au的详细信息ser(例如,真实姓名):
sudo chfn username
将用户添加到
sudo
组:adduser username sudo
or
usermod -aG sudo username
当然,另请参见:
man adduser
,man useradd
,man userdel
...等。评论
Radu忘记提及sudo chfn
– Mikaela
2014年1月29日在7:26
我认为应该强调,对链接的问题的正确答案是askubuntu.com/a/381646/16395 ---否则,您必须手工考虑GID / UID Ubuntu策略。接受的答案不是很清楚。
–罗马诺
2014年5月21日在18:02
sudo userdel DOMAIN \\ johndoe给我一个错误:“ userdel:无法从/ etc / passwd中删除条目'DOMAIN \ johndoe”-我在/ etc / passwd中查找,它们甚至不在那儿,可能是因为“域”帐户?
–00fruX
2014年8月7日19:44
@ 00fruX是的...如果您使用的是集中式用户数据库,则需要直接处理它。
–奥利♦
14年8月8日在8:32
+1 for adduser和useradd有什么区别?
–sonlexqt
15年10月22日在10:20
#2 楼
只需按键盘上的Ctrl + Alt + T即可打开“终端”。打开时,运行以下命令:cat /etc/passwd
或
less /etc/passwd
more /etc/passwd
您也可以使用awk:awk
awk -F':' '{ print }' /etc/passwd
评论
如何通过命令添加用户?
– nux
2014年1月24日19:31
您可以使用useradd命令。
– Mitch♦
2014年1月24日19:32
@nux晚了一点,但是从命令行使用adduser代替,useradd应该限于作者真正知道他在做什么的脚本。
–弗林德堡
16年7月24日在14:39
#3 楼
获得此类信息的最简单方法是getent
-请参阅getent
命令的联机帮助页。虽然该命令的输出与cat /etc/passwd
相同,但是记住它很有用,因为它将为您提供操作系统中多个元素的列表。要获得您键入的所有用户的列表(如用户在
/etc/passwd
)getent passwd
要向系统中添加用户newuser,您可以键入
sudo adduser newuser
创建一个拥有所有默认设置的用户。
奖金:要将任何用户(例如anyuser)添加到组(例如cdrom)中,请键入
sudo adduser anyuser cdrom
您使用
sudo deluser obsolete
删除用户(例如,已过时的用户)
如果您还想删除其主目录/邮件,请键入
sudo deluser --remove-home obsolete
和
sudo deluser --remove-all-files obsolete
将删除用户以及该用户在整个系统上拥有的所有文件。
评论
请记住,getent不仅会打印/ etc / passwd中用户的输出,而且还会打印给定系统上所有已配置的userdb后端中的所有用户,无论是/ etc / passwd还是LDAP等。
– Marcin Kaminski
2014年9月25日下午16:34
@MarcinKaminski是正确的,它还会打印可以访问服务器的SSO系统中的用户设置。这个答案是最好的答案,getent passwd是正确的命令
–ulkas
18-09-28在8:25
来自所有可枚举的userdb后端的@MarcinKaminski
– jrw32982
19年6月27日在18:21
是的,您可以通过getent和/ etc / passwd找到用户。我在this-dev2devs.com/上找到了一篇文章。
– Prasoon
5月9日14:52
#4 楼
您也可以使用compgen
GNU bash内置:compgen -u
将列出所有用户。
#5 楼
在大多数正常情况下,这应该会吸引所有正常用户(非系统用户,不奇怪用户等):awk -F'[/:]' '{if ( >= 1000 && != 65534) print }' /etc/passwd
此方法通过:
使用
/etc/passwd
作为分隔符从:
读入如果第三个字段(用户ID号)大于1000而不是65534,则第一个字段(
这是因为在许多linux系统上,大于1000的用户名是为非特权(可以说是普通)用户保留的。关于此的一些信息:
用户ID(UID)是由类Unix操作系统分配给每个用户的唯一正整数。每个用户都通过其UID标识到系统
,并且用户名通常仅用作
人员的接口。
UID及其相应的用户名一起存储。和其他
用户特定信息,在/ etc / passwd文件中...
第三个字段包含UID,第四个字段包含
组ID(GID ),默认情况下,它等于所有普通
用户的UID。
在Linux内核2.4及更高版本中,UID是无符号的32位整数
,可以表示值从零到4,294,967,296。但是,
建议仅使用最多65,534的值,以与使用只能容纳16位UID的较旧内核或文件系统的系统保持兼容性。
< br的UID 0具有特殊作用:它始终是root帐户(即
万能的管理用户)。尽管可以在此帐户上更改用户名,并且可以使用相同的UID创建其他帐户,但从安全角度来看,这两种操作都不明智。
UID与普通(即非特权)用户相反,65534通常是为没有系统特权的用户而保留的。
该UID通常用于远程访问系统的个人。 >通过FTP(文件传输协议)或HTTP(超文本传输
协议)。
UID 1到99通常是为特殊系统用户保留的(
,有时称为伪用户),例如wheel,daemon,lp,operator,
新闻,邮件等。这些用户是不需要完全
超级用户权限,但执行某些管理任务并因此需要
的管理员。
某些Linux发行版(即,版本)以
的非特权用户的UID以100开始。以其他方式(例如Red Hat)以
开始。 /> 500,还有其他一些东西,例如Debian,则从1000开始。
由于发行版之间的差异,如果组织中的网络中使用了多个发行版,则可能需要手动干预。
/>
同样,为本地用户保留一个UID块也很方便,例如从1000到9999,为远程用户保留另一个UID(即
u例如,在网络上的其他位置)(例如10000到65534)。重要的是确定方案并遵守该方案。
这种保留数字块的做法的优点包括
对于特定类型的用户来说,它使得在系统日志中搜索可疑的用户活动更加方便。
与流行的看法相反,不必每次输入在
UID字段中是唯一的。但是,非唯一的UID可能会导致安全性问题,因此UID在整个组织中应保持唯一。同样,应尽可能避免从以前的用户回收UID。
评论
几乎是一个完美的答案,但是IMO使用getent而不是直接从/ etc / passwd进行读取和查找UID_MIN / UID_MAX而不是对值进行硬编码会更干净:getent passwd | awk -F:“ {if(\ $ 3> = $(awk'/ ^ UID_MIN / {print $ 2}'/etc/login.defs)&& \ $ 3 <= $(awk'/ ^ UID_MAX / {print $ 2}' /etc/login.defs))打印\ $ 1}“
– Max Truxa
19年7月8日在12:29
#6 楼
可以登录的所有用户的列表(没有系统用户,例如bin,deamon,mail,sys等)awk -F':' ' ~ "$" {print }' /etc/shadow
添加新用户
sudo adduser new_username
或
sudo useradd new_username
删除/删除用户名
sudo userdel username
如果要删除主目录(默认目录/ home / username)
sudo deluser --remove-home username
或
sudo rm -r /path/to/user_home_dir
如果要从此用户删除系统中的所有文件(不仅是家庭目录)
sudo deluser --remove-all-files
评论
也许您应该解释adduser和useradd之间的区别。还将sudo-prefix添加到第一个命令。密码影子文件只能以root身份读取。
– s3lph
2014年9月25日20:13在
awk -F':''$ 2〜“ \ $” {print $ 1}'/ etc / shadow向我显示了所有用户,包括bin,daemon等,并抛出了此警告:转义序列\ $被视为普通$'我发现这篇文章stackoverflow.com/a/25867768/847954并添加了一个反斜杠,它工作正常:awk -F':''$ 2〜“ \\ $” {print $ 1}'/ etc / shadow
–杰夫·麝香
18年6月20日在5:43
#7 楼
好的,这里有个技巧,可以帮助您进行排序。如果您键入user并按两次Tab键,终端将自动完成,它将列出与user一起存在的所有命令作为前4个字符。user (tab tab)
为我提供了可能的选择
如果您想了解有关命令google的更多信息,请输入useradd userdel usermod users users-admin
man
man useradd
给定
useradd-创建新用户或更新默认的新用户信息
...
...
列出用户,您应该遵循Mitch所说的话。
希望我喜欢bash中的制表符补全功能使我免于记忆。
评论
而且此方法可能在后台使用了compgen,请参见其他答案:askubuntu.com/a/925312/830543
– gmarmstrong
2月20日19:35
#8 楼
要查找机器上/ home-folder中具有家庭目录的用户,请运行以下命令cd /home
ls
,然后您可以看到具有授权的用户登录服务器。如果我们要查看任何用户的文件,则您必须是root用户。
评论
这仅显示/ home的内容。尽管Ubuntu默认将用户目录放在那里,但这绝不是强制性的。
–大卫·福斯特(David Foerster)
2014年12月19日,0:57
ls / home也可能包含已删除用户的用户目录。
–苏拉杰
19年7月1日在9:12
#9 楼
第一个答案建议:cut -d: -f1 /etc/passwd
但是使用此计数并计算用户数,您会得到:
$ cut -d: -f1 /etc/passwd | wc -l
46
便携式计算机的46位用户很多!因此,请改用它:
$ cat /etc/passwd | grep -vE '(/bin/false|/sbin/nologin|/bin/sync)' | cut -d: -f1
root
rick
guest-atkb2q
guest-u4sf2i
guest-rmlbtg
guest-mz53vp
要删除来宾帐户(无论如何都没有保存文件),请使用:
$ cat /etc/passwd | grep -vE '(/bin/false|/sbin/nologin|/bin/sync|guest-)' | cut -d: -f1
root
rick
从列表中删除的一些示例用户是:
systemd-timesync:x:100:102:systemd Time Synchronization,,,:/run/systemd:/bin/false
gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/usr/sbin/nologin
sync:x:4:65534:sync:/bin:/bin/sync
sync:x:4:65534:sync:/bin:/bin/sync
guest-atkb2q:x:999:999:Guest:/tmp/guest-atkb2q:/bin/bash
事实证明,单个用户系统上的大多数用户实际上是已自行设置的程序成为用户。
评论
sed答案sed's /:.*//'/ etc / passwd列出用户:awk -F:'{print $ 1}'/ etc / passwd