我需要一个命令来列出终端中的所有用户。以及如何从终端添加,删除,修改用户。
这可能有助于通过终端轻松管理您的帐户。
awk -F: '{ print $1 }' /etc/passwd
我需要一个命令来列出终端中的所有用户。以及如何从终端添加,删除,修改用户。
这可能有助于通过终端轻松管理您的帐户。
awk -F: '{ print $1 }' /etc/passwd
Answers:
要列出所有本地用户,您可以使用:
cut -d: -f1 /etc/passwd
要列出所有能够(以某种方式)进行身份验证的用户,包括非本地用户,请参阅此回复。
一些更有用的用户管理命令(也仅限于本地用户):
要添加新用户,您可以使用:
sudo adduser new_username
要么:
sudo useradd new_username
要删除/删除用户,首先可以使用:
sudo userdel username
然后,您可能要删除已删除用户帐户的主目录:
sudo rm -r / home / 用户名
请谨慎使用以上命令!
修改用户名:
usermod -l new_username old_username
要更改用户密码:
sudo passwd username
要更改用户的外壳:
sudo chsh username
要更改用户的详细信息(例如,真实姓名):
sudo chfn username
要将用户添加到sudo
组:
adduser username sudo
要么
usermod -aG sudo username
:而且,当然也看到man adduser
,man useradd
,man userdel
...等等。
sudo chfn <username>
会更改用户详细信息(例如真实姓名)的信息。我尝试将其添加为评论,但出现错误告诉我必须拥有+50声望。
获得此类信息的最简单方法是getent
-请参见该getent
命令的联机帮助页。尽管该命令的输出cat /etc/passwd
与记住相同的输出一样有用,因为它会为您提供OS中多个元素的列表。
要获取您键入的所有用户的列表(用户在中列出/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 passwd
是正确的命令
在大多数正常情况下,这应该会吸引所有正常用户(非系统用户,非奇怪用户等):
awk -F'[/:]' '{if ($3 >= 1000 && $3 != 65534) print $1}' /etc/passwd
这是通过以下方式工作的:
/etc/passwd
:
作为分隔符这是因为在许多linux系统上,用户名1000以上是为非特权(可以说是普通)用户保留的。这里的一些信息:
用户ID(UID)是由类Unix操作系统分配给每个用户的唯一正整数。每个用户都通过其UID标识到系统,并且用户名通常仅用作人类的界面。
UID及其对应的用户名和其他特定于用户的信息存储在/ etc / passwd文件中...
第三个字段包含UID,第四个字段包含组ID(GID),默认情况下,它等于所有普通用户的UID。
在Linux内核2.4及更高版本中,UID是无符号的32位整数,可以表示从0到4,294,967,296的值。但是,为了保持与使用只能容纳16位UID的较旧内核或文件系统的系统的兼容性,建议仅使用最多65,534个值。
UID 0具有特殊作用:它始终是根帐户(即,万能的管理用户)。尽管可以在此帐户上更改用户名,并且可以使用相同的UID创建其他帐户,但从安全角度来看,这两种操作都不明智。
与普通(即,非特权)用户相反,UID 65534通常保留给没有系统特权的用户,没人。此UID通常用于个人通过FTP(文件传输协议)或HTTP(超文本传输协议)远程访问系统。
UID 1到99传统上是为特殊系统用户(有时称为伪用户)保留的,例如wheel,daemon,lp,operator,news,mail等。这些用户是不需要总root用户权限但可以执行以下操作的管理员:一些管理任务,因此需要比授予普通用户的特权更多的特权。
某些Linux发行版(即版本)从100开始为非特权用户提供UID。其他发行版(如Red Hat)从500开始,而其他发行版(如Debian)则从1000开始。由于发行版之间的差异,手册如果组织中的网络中使用了多个发行版,则可能需要干预。
同样,为本地用户保留一个UID块(例如1000到9999)和为远程用户(即网络上其他地方的用户)保留另一个UID(例如10000到65534)也很方便。重要的是要确定并坚持下去。
为特定类型的用户保留数字块的这种做法的优点之一是,它更方便地在系统日志中搜索可疑的用户活动。
与流行的看法相反,UID字段中的每个条目不必唯一。但是,非唯一的UID可能会导致安全问题,因此UID在整个组织中应保持唯一。同样,应尽可能避免从以前的用户回收UID。
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)) print \$1}"
可以登录的所有用户的列表(没有系统用户,例如:bin,deamon,mail,sys等)
awk -F':' '$2 ~ "\$" {print $1}' /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身份读取。
awk -F':' '$2 ~ "\$" {print $1}' /etc/shadow
向我显示了包括bin,daemon等在内的所有用户,并发出了以下警告:转义序列\$' treated as plain
$'我发现了这篇文章stackoverflow.com/a/25867768/847954 并添加了一个反斜杠,效果很好:awk -F':' '$2 ~ "\\$" {print $1}' /etc/shadow
要查找机器上/ home-folder中具有家庭目录的用户,请运行以下命令
cd /home
ls
然后,您可以看到有权登录服务器的用户。如果我们要查看任何用户的文件,则您必须是root用户。
/home
。虽然Ubuntu默认将用户目录放在那里,但这绝不是强制性的。
ls /home
也可能包含已删除用户的用户目录。
sed 's/:.*//' /etc/passwd