Bash编程016——用户与组(二)
用户与组的管理
管理用户与组的命令工具
- useradd,添加新的用户
- usermod,修改已经存在的指定用户
- userdel,删除已经存在的指定用户
- groupadd,添加新的组
- groupmod,修改已经存在的组
- groupdel,删除已经存在的组
这里给出一些简单的使用帮助,详细信息请参阅man手册。
# 查看当前已经存在的所有用户
cat /etc/passwd | cut -f 1 -d :
# 输出如下:
root
daemon
bin
sys
sync
games
man
lp
mail
news
uucp
proxy
www-data
backup
list
irc
gnats
nobody
systemd-timesync
systemd-network
systemd-resolve
systemd-bus-proxy
syslog
_apt
messagebus
uuidd
whoopsie
avahi-autoipd
avahi
colord
dnsmasq
geoclue
speech-dispatcher
hplip
kernoops
pulse
rtkit
saned
usbmux
gdm
ruo
sshd
16.1 useradd
useradd是一个用于创建新用户的低级使用程序,为了添加新的用户,useradd命令必须编辑/etc/passwd、/etc/shadow、/etc/group、/etc/gshadow文件,因此需要管理员权限。
简单演示添加用户,添加用户后需使用passwd username来设置用户密码后才可以登录:
# 添加用户
sudo useradd tom
# 查看新添加的用户和默认的私有组
cat /etc/passwd | grep tom
# 输出为:tom:x:1001:1001::/home/tom:
cat /etc/group | grep tom
# 输出如下:tom:x:1001:
# 设置密码
sudo passwd tom
# 切换用户可以使用su username
注意在上面的passwd中我们可以看到tom的主目录为/home/tom,但是在/home目录下我们找不到tom的子目录,这里需要手动创建或者使用useradd -m 选项自动创建。
命令格式:
- useradd [options] LOGIN
- useradd -D
- useradd -D [options]
选项介绍(详细信息,请参阅man useradd):
- -b,--base-dir BASE_DIR 若未使用 -d HOME_DIR,则使用默认的基目录。BASE_DIR 加上账户名就是主目录。如果没有使用 -m 选项,BASE_DIR 必须已经存在。 如果选项没有指定,useradd 将使用 /etc/default/useradd 中的 HOME 变量,或者默认的 /home。
- -c,--comment COMMENT。任何字符串,通常是用户全名
- -d,--home-dir HOME_DIR 将创建新用户,并使用 HOME_DIR 作为用户登陆目录的值。默认值是将 LOGIN 名附加到 BASE_DIR后面,并使用这作为登陆目录。目录不一定必须已经存在 HOME_DIR,但是会在需要时创建。
- -D, --defaults 更改默认值
- -g,--gid GROUP 设置用户的主组,GROUP为组名或GID,必须是已经存在的。
- -G,--groups GROUP1[,GROUP2,...[,GROUPN]]]用户还属于的附加组列表。每个组都用逗号隔开,没有中间的空格。这里的组受到了 -g 选项给定的组同样的限制。默认上,用户只属于初始组。
- -m, --create-home 如果不存在,则创建用户主目录。
16.2 usermod
修改一个已经存在的用户账户。
格式:usermod [选项] 用户名
- -a,--append 将用户添加到附加组,只能和-G选项一起使用
- -d,--home HOME_DIR 设置用户的主目录。如果加上 -m 选项,当前主目录的内容将会移动到新主目录中,如果不存在,则创建。
- -m, --move-home 将用户的主目录移动到新位置。这个选项只有和 -d (或 --home) 选项组合使用时才有效。
- -G, --groups GROUP1[,GROUP2,...[,GROUPN]]] 用户还属于的附加组列表。组之间使用逗号分隔,没有空格。这些组需要遵守和 -g 选项中给的组同样的限制。如果用户当前是一个组的成员,而这个组没有列在这里,用户将被从那个组里便删除。这个行为可以通过 -a选项修改,这使用户追加到给出的附加组列表中。
16.3 userdel
删除指定的用户账户和相关文件。
格式:userdel [选项] 用户名
选项介绍:
- -r, --remove 用户主目录中的文件将随用户主目录和用户邮箱一起删除。在其它文件系统中的文件必须手动搜索并删除。
- -h,--help 显示帮助信息。
16.4 groupadd
groupadd命令用于创建一个新的用户组。
命令格式:groupadd [选项] group
选项:
- -g,--gid GID 指定添加组的gid,GID是一个非负整数并且不能和已有组号重复,默认gid为当前最大gid+1
- -r, --system 创建一个系统组。
16.5 groupmod
groupmod用于修改一个已经存在的组的相关信息。
格式:groupmod [选项] GROUP
选项:
- -g,--gid GID 将原有的gid修改为新的GID
- -n,--new-name 将原有的组名修改为新的组名
16.6 groupdel
groupdel删除一个已经存在的组。
格式:groupdel [选项] group
注:给出的组名必须存在。