用户相关命令
用户的分类
- 用户分类的本质其实是看用户的uid和命令解释器
用户分类 | uid | 命令解释器 | 说明 |
---|---|---|---|
root | 0 | /bin/bash | 系统中权限最高的用户;家目录为/root |
普通用户 | uid>=1000 | /bin/bash | 权限低,只能管理自己的/home/xxx家目录 |
虚拟(傀儡)用户 | 1<=uid<1000 | /sbin/nologin | 无法登录,只是让服务或程序正常运行,无家目录 |
用户信息与密码文件
- /etc/passwd用户信息文件
[root@Dezyan ~]# cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
- 以“:”为分隔符,每列的意义为:
第1列 | 第2列 | 第3-4列 | 第5列 | 第6列 | 第7列 |
---|---|---|---|---|---|
用户名 | x 密码标记 | UID:GID | 说明信息(可以为空) | 用户家目录(root,普通用户即可) | 命令解释器 /bin/bash 可以登录系统 /sbin/nologin 虚拟用户 |
- /etc/shadow密码信息文件
- 常用的命令解释器:
- /bin/bash
- /bin/sh
- /bin/dash #ubt,debian命令解释器
- /sbin/nologin 虚拟用户
- … /bin/csh /bin/tcsh /bin/xxxx
⭐️useradd 添加用户
语法形式
useradd [选项] [用户名]
选项
-c #添加备注文字,可以是任何文本字符串;
-m #创建用户家目录(如果用户家目录不存在可使用此参数);
-M #创建用户时,不创建用户家目录;
-s #指定该用户的命令解释器;
-u #指定该用户的uid;
注意
-
在红帽系列系统中,创建用户时,不加任何选项时,会默认创建家目录并且指定命令解释器为/bin/bash
-
在ubt系列系统中,创建用户时,不加任何选项时,不会创建家目录,并且命令解释器会指定为/bin/dash(sh)
示例
#创建一个uid为10011,用户名为vmware的虚拟用户,并添加“虚拟机”注释
[root@Dezyan ~]# useradd -s /sbin/nologin -M -u 10011 -c "虚拟机" vmware
[root@Dezyan ~]# tail -1 /etc/passwd
vmware:x:10011:10011:虚拟机:/home/vmware:/sbin/nologin
#在ubt系统中创建一个普通用户并创建家目录指定命令解释器为/bin/bash
root@Dezyan01:~# useradd -s /bin/bash -m dezyan
root@Dezyan01:~# tail -1 /etc/passwd
dezyan:x:12347:12347::/home/dezyan:/bin/bash
root@Dezyan01:~# ll /home/
total 12
drwxr-xr-x 3 root root 4096 Nov 6 15:26 ./
drwxr-xr-x 19 root root 4096 Nov 1 20:15 ../
drwxr-x--- 2 dezyan dezyan 4096 Nov 6 15:26 dezyan/
su 切换用户
语法形式
su - [用户名]
注意
su命令切换用户,一些环境变量没有更新
su - 的时候环境变量就更新。
passwd/chpasswd 设置用户密码
- 交互式设置密码
passwd [用户名]
- 非交互式设置密码
#红帽类系统
echo '[密码]' | passwd --stdin [用户名]
#ubt类系统(也可以在红帽类系统使用)
方法1:创建普通文件passwd.txt,内容格式为:
[用户名]:[用户密码]
可根据文件内容批量修改:
cat passwd.txt | chpasswd
方法2:更改单个用户密码:
echo '[用户名]:[密码]' | chpasswd
示例
#在kylin系统中更改dezyan用户密码为dingzhiyan1016
echo 'dingzhiyan1016' | passwd --stdin dezyan
echo 'dezyan:dingzhiyan1016' | chpasswd
查看用户信息
whoami #查看系统当前用户;
id [用户名] #查看用户uid,gid;是否存在;属于哪些组;
w #查看用户登录后的当前操作;负载信息;
last #查看当前用户历史的登录情况;
lastlog #查看所有用户的登录情况;
userdel 删除用户
语法形式
userdel [选项] [用户名]
选项
-r #删除用户的同时删除家目录;
-f #强制删除该用户,即使该用户已登录;
注意
1.userdel [用户名] 删除用户时不会删除用户家目录;
2.userdel操作在实际环境中很危险,通常会修改/etc/passwd文件,在需要删除的用户签添加注释('#'),确认无风险后再进行删除;
usermod 修改用户的基本信息
语法形式
usermod [选项] [用户名]
选项
-c #修改用户帐号的备注文字;
-g #修改用户所属的群组;
-G #修改用户所属的附加群组;
-s #修改用户的命令解释器(可将普通用户改为虚拟用户);
-u #修改用户uid;
-l #修改用户帐号名称;
示例
#将普通用户dzy修改为虚拟用户
usermod -s /sbin/nologin dzy