Alex_McAvoy

想要成为渔夫的猎手

Linux 新增与删除用户

【useradd 命令】

在 Linux 中,想要新建一个用户可以使用 useradd 命令,其命令格式为:useradd [选项] 用户账号名

其中,各选项含义如下:

  • -u:后接 UID,直接指定一特定 UID 给新建的账号
  • -g:后接用户组名,该用户组为账号的初始用户组,会放在 /etc/passwd 的第四个字段中
  • -G:后接用户组名,该用户组为新建账号还可加入的用户组,会修改 /etc/group 中相应的字段
  • -M:系统账号默认值,强制执行,不创建用户主文件夹
  • -m:一般账号默认值,强制执行,创建用户主文件夹
  • -d:指定某个目录成为主文件夹,而不使用默认值,要求使用绝对路径
  • -s:后接一个 Shell,默认为 /bin/bash,即 /etc/passwd 的第八个字段
  • -f:后接密码过期宽限的天数,即 /etc/shadow 的第七个字段,0 为立即失效,-1 为永不失效
  • -e:后接格式为 YYYY-MM-DD 的日期,会写入 /etc/shadow 的第八个字段,即账号失效日期

可以发现,新建的账户的默认的用户组与账号名相同,这是因为 Linux 系统的私有用户组机制,即系统会创建一个与账号一样的用户组作为初始用户组,且主文件夹权限会设置为 700

实际上,系统已经规定好诸多默认值,可以简单的使用 useradd 用户账号名 来创建用户,这些规定好的默认值可以使用 useradd -D 来进行查看,这个命令实际上是去调用 /etc/defualt/useradd 的数据

各行含义如下:

  • GROUP:新建账号的初始用户组的 GID
  • HOME:用户文件夹的基准目录
  • INACTIVE:密码过期后是否会失效
  • EXPIRE:账号失效的日期
  • SHELL:默认使用的 Shell
  • SKEL:用户主文件夹参考基准目录
  • CREATE_MAIL_SPOOL:是否创建用户的 mailbox

【passwd 命令】

在使用 useradd 命令创建账号后,默认情况下,该账号是被封锁的,需要在设置好密码后才可登录

passwd 命令用于设置账号的密码,该命令格式为:passwd [选项] 账号名,当不加账号名时,修改的是当前用户的密码

常见选项有:

  • -l:lock,会在 /etc/shadow 第二个字段加上 !,使得密码失效
  • -u:unlock,与 -l 选项相对,使密码解锁
  • -S:列出密码相关参数,即 /etc/shadow 中的大部分信息
  • -n:后接多久不可修改密码天数,即 /etc/shadow 的第四个字段
  • -x:后接多久内必须修改密码天数,即 /etc/shadow 的第五个字段
  • -w:后接密码过期前警告天数,即 /etc/shadow 的第六个字段
  • -i:后接密码失效日期,即 /etc/shadow 的第七个字段
  • —stdin:通过前一个管道数据作为密码输入

需要注意的是,Linux 使用 PAM 模块来管理密码,管理机制写在 /etc/pam.d/passwd 中,而该文件与密码相关的测试模块使用的是 pam_cracklib.so,这个模块会检验密码相关的信息,如果太过简单将不会被采纳

【chage 命令】

chage 命令可以修改密码的详细参数,相较于 passwd 命令来说更为简便,命令格式为:chage [选项] 用户账号名

常见选项如下:

  • -l:列出账号的详细密码参数并进行更改
  • -d:后接最近一次更改密码的日期,即 /etc/shadow 的第三个字段
  • -m:后接密码最短保留天数,即 /etc/shadow 的第四个字段
  • -M:后接密码多久必须修改天数,即 /etc/shadow 的第五个字段
  • -W:后接密码过期前警告天数,即 /etc/shadow 的第六个字段
  • -I:后接密码失效天数,即 /etc/shadow 的第七个字段
  • -E:后接账号失效日期,即 /etc/shadow 的第八个字段

【usermod 命令】

当使用 useradd 命令时加入了错误的参数,最直接的方式是修改 /etc/passwd/etc/shadow 文件,但 Linux 中提供了 usermod 命令来直接对账号相关数据进行微调,命令格式为:usermod [选项] 账号用户名

常见的选项有:

  • -l:后接账号名,修改账户名,即修改 /etc/passwd 的第一个字段
  • -u:后接 UID,修改 UID,即修改 /etc/passwd 的第三个字段
  • -g:后接初始用户组,修改初始用户组,即修改 /etc/passwd 的第四个字段
  • -c:后接账号说明,修改账号说明,即修改 /etc/passwd 的第五个字段
  • -d:后接账号主文件夹,修改账号主文件夹,即修改 /etc/passwd 的第六个字段
  • -s:后接 Shell,修改默认 Shell,即修改 /etc/passwd 的第八个字段
  • -L:将用户密码冻结,会在 /etc/shadow 第二个字段加上 !,使得密码失效
  • -U:与 -L 选项相对,使密码解锁
  • -f:后接密码失效天数,修改密码失效天数,即修改 /etc/shadow 的第七个字段
  • -e:后接账号失效日期,修改账号失效日期,即修改 /etc/shadow 的第八个字段
  • -G:后接次要用户组,修改次要用户组,会修改 /etc/group 中的相关数据
  • -a:与 -G 合用来增加次要用户组

【userdel 命令】

userdel 命令用于删除用户相关数据,包括:

  • 用户账号/密码相关参数:/etc/passwd/etc/shadow
  • 用户组相关参数:/etc/group/etc/gshadow
  • 用户个人文件数据:/home/用户账号名/var/spool/mail/用户账号名

该命令格式为:userdel [-r] 用户账号名,其中 -r 选项是连同用户的主文件夹也删除

感谢您对我的支持,让我继续努力分享有用的技术与知识点!