我需要一个命令来列出所有用户,以及添加、删除和修改用户的命令,这些命令可以帮助通过终端轻松管理用户账户。
要列出所有本地用户,您可以使用以下命令:
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 <用户名>
,这会更改用户详细信息(例如真实姓名)。我试图将此作为评论添加,但是收到错误提示,告诉我必须拥有+50声望才能这样做。 - Amindacut -d: -f1,3 /etc/passwd | grep -P '\d{4,}$'
- bksundaycut
命令的用法(使用man cut
)。 - Robert Dundonsudo deluser --remove-home <用户名>
。sudo rm -r /home/username
不仅危险,因为您可能会因为拼写错误而轻易地删除错误的目录,而且它也不一定要以要删除的用户命名(请参见 /etc/passwd
)。 - stackprotector获取这种信息的最简单方法是使用getent
命令 - 参见 getent
命令的man页 。虽然该命令提供与cat /etc/passwd
相同的输出,但它很有用,因为它会给出操作系统中多个元素的列表。
要获取所有用户的列表(因为用户在/etc/passwd
中列出),请键入:
getent passwd
sudo adduser newuser
sudo adduser anyuser cdrom
sudo deluser obsolete
sudo deluser --remove-home obsolete
和
sudo deluser --remove-all-files obsolete
getent passwd
命令是正确的。 - ulkasawk -F'[/:]' '{if ($3 >= 1000 && $3 != 65534) print $1}' /etc/passwd
/etc/passwd
中读取:
作为分隔符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}"
- Max Truxaawk -F':' '$2 ~ "\$" {print $1}' /etc/shadow
sudo adduser new_username
或者
sudo useradd new_username
sudo userdel username
sudo deluser --remove-home username
或者
sudo rm -r /path/to/user_home_dir
sudo deluser --remove-all-files
adduser
和useradd
之间的区别,并在第一个命令前添加sudo
前缀。密码影子文件只能由root用户读取。 - s3lphawk -F':' '$2 ~ "\$" {print $1}' /etc/shadow
显示了所有用户,包括 bin、daemon 等,并且抛出了以下警告:转义序列 \$' 被视为普通的
$'。我在这篇帖子 https://stackoverflow.com/a/25867768/847954 中找到了解决方法,并添加了一个额外的反斜杠,问题得到了解决:awk -F':' '$2 ~ "\\$" {print $1}' /etc/shadow
。 - jeff muskuser (tab tab)
给我可能的选项
useradd userdel usermod users users-admin
如果你想了解更多关于一个命令的信息,可以谷歌一下或者输入 man
man useradd
会给出
useradd - 创建一个新用户或更新默认新用户信息
...
...
要列出用户,你应该按照Mitch说的去做。
希望这有所帮助,我喜欢在bash中使用制表符自动完成,这样就不用记住那些东西了。
cd /home
ls
/home
的内容。虽然Ubuntu默认将用户目录放在那里,但这并不是强制性的。 - David Foersterls /home
可能还包含已删除用户的用户目录。 - Surajlslogins
lslogins (1) - 在系统中显示已知用户的信息
lslogins
是一个Linux命令,用于显示系统上已知用户的信息。它从各种来源(如/etc/passwd
、/etc/group
和其他特定于系统的用户信息数据库)收集信息。该命令扫描wtmp
和btmp
日志,/etc/shadow
(如果需要)和/etc/passwd
文件,并输出所需的数据。可选的用户名参数可用于仅输出指定用户的信息。
cut -d: -f1 /etc/passwd
但是使用这个方法并计算用户数量,您会得到:
$ cut -d: -f1 /etc/passwd | wc -l
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
s/\:.*//
- Avinash Rajawk -F: '{ print $1 }' /etc/passwd
- saviour123grep bash /etc/passwd | cut -d: -f1
- S2L