Linux创建用户、删除用户、修改密码完整命令
前言
服务器上为不同人员或程序分配账号,是Linux基础运维的常见操作。创建账号要顺便建好家目录、设好初始密码;删除账号要决定是否清掉家目录和邮件;改密码分root改别人密码和用户改自己密码两种场景。本篇把常用命令一次讲全。
一、创建用户
# 新建用户,同时创建家目录 /home/www
useradd -m www
# 指定UID、家目录、登录Shell、所属组
useradd -u 1001 -d /home/www -s /bin/bash -G wheel www
# 设置初始密码(交互式两次输入)
passwd www
参数说明:
-m:自动创建/home/用户名家目录;-s:指定登录Shell,不想登录给/sbin/nologin;-G:附加到指定组;-M:不创建家目录(服务账号常用)。
一键创建并设密码(脚本场景,免交互):
useradd -m deploy
echo 'Deploy@123456' | passwd --stdin deploy
二、查看用户信息
# 查看用户UID、GID、所属组
id www
# 查看 /etc/passwd 里该用户记录
grep www /etc/passwd
# 查看组信息
groups www
三、修改密码
# root修改任意用户密码(交互式)
passwd www
# 用户自己改自己的密码
passwd
# 强制该用户下次登录改密码
passwd -e www
# 锁定账号(禁止登录)
usermod -L www
# 解锁
usermod -U www
四、修改用户属性
# 改用户名
usermod -l newname oldname
# 改登录Shell
usermod -s /sbin/nologin www
# 加入sudo组(CentOS为wheel)
usermod -aG wheel www
五、删除用户
# 只删账号,保留家目录和邮件
userdel www
# 连家目录、邮件一起删除(推荐,避免残留占空间)
userdel -r www
# 若提示用户进程仍在运行,先终止相关进程
pkill -u www
删除前确认该用户名下没有正在跑的重要服务,否则会误停业务。
六、常见坑
- 服务账号没设
/sbin/nologin:容易被登录爆破,数据库、nginx这类程序账号应禁止Shell登录; userdel没加-r:家目录残留,多次建删会堆很多无用目录;- 改了用户名没改家目录属主:
chown -R www:www /home/www补一下; - 密码太简单被拒绝:
passwd报错BAD PASSWORD,可强制用echo ... | passwd --stdin绕过复杂度检查(生产环境仍应设强密码); - 服务账号误删:先
id和ps -u www确认归属再删。
总结
useradd -m 用户名 建号、passwd 用户名 设密码;root用 passwd 用户名 改任意账号密码,用户用 passwd 改自己的;userdel -r 用户名 连家目录一起删,删前先确认该账号名下没有运行中的服务。
遇到问题加QQ23979811 协助处理
Linux创建用户、删除用户、修改密码完整命令
前言
服务器上要加新用户、删旧用户、改密码,这些都是日常操作。本文把常用的用户管理命令都整理出来,新手也能照着做。
创建用户
useradd 命令
最简单的创建用户:
useradd 用户名
比如创建一个叫 zhangsan 的用户:
useradd zhangsan
创建完之后,这个用户还不能登录,因为没设密码。
创建用户并设密码
一行搞定:
useradd zhangsan && passwd zhangsan
执行 passwd zhangsan 之后会提示输入两次密码。
创建用户并指定家目录
默认家目录是 /home/用户名,想改的话用 -d:
useradd -d /data/zhangsan zhangsan
创建用户并指定用户组
useradd -g 用户组 用户名
比如把 zhangsan 加到 www 组:
useradd -g www zhangsan
创建用户并指定 UID
useradd -u 1001 zhangsan
修改密码
passwd 命令
修改某个用户的密码:
passwd 用户名
比如修改 zhangsan 的密码:
passwd zhangsan
执行后会提示输入两次新密码。
自己改密码
passwd
直接执行,会提示输入旧密码,然后输入新密码两次。
免交互改密码(脚本用)
写脚本的时候不能交互式输入,用这个:
echo "新密码" | passwd --stdin 用户名
比如:
echo "123456" | passwd --stdin zhangsan
删除用户
userdel 命令
只删用户,不删家目录:
userdel 用户名
比如:
userdel zhangsan
删除用户并删家目录
加 -r 参数,把家目录也删掉:
userdel -r zhangsan
警告: -r 会把 /home/zhangsan 整个删掉,里面的文件都没了,确认清楚再执行。
查看用户信息
查看用户 UID、GID、组
id 用户名
比如:
id zhangsan
输出类似:
uid=1001(zhangsan) gid=1001(zhangsan) 组=1001(zhangsan)
查看用户信息
grep 用户名 /etc/passwd
查看所有用户
cat /etc/passwd
每行一个用户,格式是:
用户名:x:UID:GID:注释:家目录:登录Shell
常见坑
坑1:创建用户后不能登录
创建了用户但 SSH 登录不了。
原因: 没设密码,或者 Shell 是 /sbin/nologin。
解决:
- 先设密码:
passwd 用户名 - 检查 Shell:
grep 用户名 /etc/passwd,最后一列应该是/bin/bash
如果是 /sbin/nologin,改回来:
usermod -s /bin/bash 用户名
坑2:删了用户但家目录还在
执行了 userdel zhangsan,但 /home/zhangsan 还在。
原因: 没加 -r 参数。
解决: 手动删:
rm -rf /home/zhangsan
坑3:普通用户没权限 sudo
新用户不能用 sudo。
原因: 没加到 sudoers 里。
解决: 加到 wheel 组(CentOS)或者 sudo 组(Ubuntu):
usermod -aG wheel 用户名
坑4:密码过期了
用户突然不能登录了,提示密码过期。
解决: root 改密码:
passwd 用户名
或者设置密码永不过期:
chage -M 99999 用户名
总结
| 操作 | 命令 |
|---|---|
| 创建用户 | useradd 用户名 |
| 设密码 | passwd 用户名 |
| 删除用户 | userdel 用户名 |
| 删除用户+家目录 | userdel -r 用户名 |
| 查看用户信息 | id 用户名 |
| 加 sudo 权限 | usermod -aG wheel 用户名 |
日常运维就这几个命令,够用了。
遇到问题加QQ23979811 协助处理
Linux用户和组管理,useradd和groupadd命令使用
前言
服务器上需要给开发人员开个账号?或者给不同的人分配不同的权限?这就需要用到 Linux 的用户和组管理。Linux 是多用户系统,每个用户有自己的家目录和权限。学会用户和组管理,是运维的基本功。本文就讲一下怎么创建、删除、修改用户和组。
创建用户
基本创建
useradd testuser
这样就创建了一个叫 testuser 的用户。默认会:
- 创建一个同名的组
- 创建家目录
/home/testuser - 指定 shell 为
/bin/bash
设置密码
passwd testuser
输入两次密码就好了。注意: 新建的用户默认是不能登录的,必须设密码才能登录。
创建用户时指定参数
useradd -m -s /bin/bash -G wheel testuser
参数说明:
-m:自动创建家目录-s /bin/bash:指定默认 shell-G wheel:把用户加入 wheel 组(可以用 sudo)
查看用户信息
id testuser
输出用户的 UID、GID、所属组。
cat /etc/passwd
查看所有用户。
删除用户
userdel testuser
这样只删用户,不删家目录。
如果要连家目录一起删:
userdel -r testuser
注意: -r 会把用户的家目录和邮件都删掉,小心操作。
修改用户
修改用户名
usermod -n newname oldname
修改用户的家目录
usermod -d /home/newhome testuser
把用户加入某个组
usermod -aG wheel testuser
-aG 表示追加到组,不要只用 -G,不然会把原来的组都覆盖掉。
锁定用户
usermod -L testuser
锁定后用户不能登录。
解锁用户
usermod -U testuser
组管理
创建组
groupadd developers
删除组
groupdel developers
查看用户属于哪些组
groups testuser
把用户加入组
usermod -aG developers testuser
从组里删除用户
gpasswd -d testuser developers
sudo 权限
把用户加入 wheel 组(CentOS 默认支持 sudo 的组)
usermod -aG wheel testuser
这样 testuser 就可以用 sudo 执行 root 命令了。
编辑 sudoers 文件
visudo
在文件里添加:
testuser ALL=(ALL) ALL
这样 testuser 也有 sudo 权限。
注意: 一定要用 visudo 编辑,不要直接改 /etc/sudoers,改坏了 sudo 就用不了了。
查看登录历史
谁在线
w
历史登录记录
last
谁在执行 sudo
lastcomm
实际应用场景
场景1:给开发人员开账号
useradd -m -s /bin/bash dev01
passwd dev01
usermod -aG developers dev01
场景2:给运维开 sudo 权限
useradd -m -s /bin/bash ops01
passwd ops01
usermod -aG wheel ops01
场景3:删除离职员工账号
userdel -r olduser
常见坑
坑1:userdel 没加 -r,家目录还在
只删了用户,家目录 /home/testuser 还在,占着磁盘空间。
解决: 删用户的时候加 -r:
userdel -r testuser
坑2:usermod -G 把原来的组覆盖了
用 -G 而不是 -aG,结果用户原来的组都没了,只剩新的组。
解决: 追加组用 -aG:
usermod -aG developers testuser
坑3:新建用户不能登录
创建了用户,但没设密码,结果不能登录。
解决: 创建完用户一定要设密码:
passwd testuser
坑4:visudo 改错了
直接用 vi 改 /etc/sudoers,改错了导致 sudo 用不了。
解决: 一定要用 visudo 命令编辑,它会检查语法。
总结
用户和组管理的核心命令:
- useradd:创建用户
- passwd:设置密码
- userdel -r:删除用户(连家目录)
- usermod -aG:把用户加入组
- groupadd:创建组
- groups:查看用户属于哪些组
- visudo:编辑 sudo 权限
用户管理是 Linux 安全的基础,每个用户用自己的账号,不要所有人都用 root。
遇到问题加QQ23979811 协助处理