Linux 添加用户 修改用户 删除用户 | adduser | useradd | usermod | userdel

Linux 用户管理

  1. useradd testuser 创建的用户 testuser 说明: 新创建的用户会在 /home 下创建一个用户目录 testuser
  2. passwd testuser 给已创建的用户 testuser 设置密码
  3. usermod –help 修改用户这个命令的相关参数
  4. userdel testuser 删除用户 testuser

创建用户 useradd

  1. 作用

useradd 或 adduser 命令用来建立用户帐号和创建用户的起始目录, 使用权限是超级用户。

  1. 格式
useradd [-d home] [-s shell] [-c comment] [-m [-k template]] [-f inactive] [-e expire ] [-p passwd] [-r] name
  1. 主要参数
-c: 加上备注文字, 备注文字保存在passwd的备注栏中。
-d: 指定用户登入时的主目录, 替换系统默认值/home/<用户名>
-D: 变更预设值。
-e: 指定账号的失效日期, 日期格式为MM/DD/YY, 例如06/30/12。缺省表示永久有效。
-f: 指定在密码过期后多少天即关闭该账号。如果为0账号立即被停用;如果为-1则账号一直可用。默认值为-1.
-g: 指定用户所属的群组。值可以使组名也可以是GID。用户组必须已经存在的, 期默认值为100, 即users。
-G: 指定用户所属的附加群组。
-m: 自动建立用户的登入目录。
-M: 不要自动建立用户的登入目录。
-n: 取消建立以用户名称为名的群组。
-r: 建立系统账号。
-s: 指定用户登入后所使用的shell。默认值为/bin/bash。
-u: 指定用户ID号。该值在系统中必须是唯一的。0~499默认是保留给系统用户账号使用的, 所以该值必须大于499。
  1. 应用实例

建立一个新用户账户 testuser1, 并设置 uid 为 544, 主目录为 /usr/testuser1, 属于 users 组

useradd -u 544 -d /usr/testuser1 -g users -m testuser1

-m 如果主目录不存在则自动创建

  1. 例子

使用管理员账号登陆系统, 建立用户 tmp_3452 密码 3sdt5:Eawhg

# 添加用户命令
adduser tmp_3452

# 修改密码命令
passwd tmp_3452

在系统出现提示输入密码是输入密码: 3sdt5:Eawhg 系统提示输入确认密码后再输入一次。OK 添加成功。

useradd 批量添加用户

使用 useradd 时, 如果后面不添加任何参数选项, 例如: sudo useradd test 创建出来的用户将是默认 三无 用户: 一无 Home Directory, 二无密码, 三无系统 Shell

步骤如下

  1. 建立用户名列表文件 username.txt

  2. 创建用户密码对应文件 serc.txt, 格式为 username:password

stu1:tt1
stu2:tt2
stu3:tt3
stu4:tt4
stu5:tt5
stu6:tt6
  1. 批量添加的脚本文件 batch_useradd.sh
# 添加用户, 并且在 /home/ 下为用户生成用户目录
# 批处理模式下更新密码
cat < username.txt | xargs -n 1 useradd -m
# 将上述的密码转换到密码文件和组文件
chpasswd < serc.txt
# 结束验证信息
pwconv
echo "OK 新建完成"
  1. 执行该脚本文件, 查看执行过程
sh batch_useradd.sh

新建完成 useradd 命令, 在执行没有出错的情况下, 不会输出任何的信息, 不会与用户交互。
但是用户必须要记住那些设置项目, 否则添加的用户可能出现一些预想不到的结果。

创建用户并设置密码

adduser ${ANUSER} -m
echo "${ANUSER}:${ANPASS}" | chpasswd

# 快速修改root 密码, 忽略密码规则
echo root:abc123 | sudo chpasswd root

修改用户 usermod

新创建一个 oracle 用户, 这初始属于 oinstall 组, 且同时让他也属于 dba 组

useradd oracle -g oinstall -G dba

将一个用户添加到用户组中, 千万不能直接用. 这样做会使你离开其他用户组, 仅仅做为 这个用户组 sftp 的成员

usermod -G sftp

将用户 docker 加入到 sftp 组, 用户和组均存在

usermod -a -G sftp docker

创建用户 tomcat 使其无法使用 shell, 且其用户目录至 /var/servlet/service

useradd tomcat -d /var/servlet/service -s /sbin/nologin

禁止登录系统,要修改一个已经存在的用户, 执行这个命令

usermod -s /sbin/nologin <username>

对新用户, 可以使用这个命令

useradd -s /sbin/nologin <new username>

/bin/false 是最严格的禁止 login 选项, 一切服务都不能用。而 /sbin/nologin 只是不允许 login 系统, 但可以使用其他 ftp 等服务。

Access to the server over SSH:

/bin/sh
/bin/bash
/sbin/nologin
/bin/tcsh
/bin/csh
/bin/ksh
/bin/bash (chrooted)
/bin/rbash

删除用户 userdel

删除刚创建的账号 tmp_3452
删除用户命令

userdel tmp_3452

或者连同用户目录一并删除

userdel -f tmp_3452

注意: 这里如果用户还在登陆的话, 会提示 用户正在登陆无法删除。此时可能需要先强制用户退出。

强制退出已经登陆用户

查看当前登陆用户的命令

[root@ptr228 ~]# w

会输入如下结果

12:10:27 up 21:13,  1 user,  load average: 0.00, 0.01, 0.08
USER          TTY      FROM              LOGIN@   IDLE   JCPU   PCPU    WHAT
root          pts/0    ***.**.***.**     11:33    0.00s  0.08s  0.00s   w
tmp_3254      ps1      ***.**.***.**     11:33    0.00s  0.08s  0.00s   ls

这里知道了登陆用户的 tty 是 ps1 执行强制退出命令 pkill

# pkill -kill -t [TTY]
[root@ptr228 ~]# pkill -kill -t ps1

执行之后再执行名 w 可以看到用户已经退出。
重复执行删除用户命令, 删除成功。


原文

linux命令useradd添加用户详解
What is the difference between bin/sh, bin/bash, sbin/nologin, bin/tcsh, etc? [closed]

最后更新于 2021-08-07
使用 Hugo 构建
主题 StackJimmy 设计