什么是用户
登录进系统的用户对硬件资源的操作都需要通过操作系统,操作系统的开发者们都专门开发了安全机制,要使用操作系统必须事先输入正确的用户名和密码。
为何要有用户
系统上的每一个进程,都需要一个特定的用户运行,一个用户拥有特定的权限,该用户运行的进程与用户权限一致。
通常在生产环境是使用普通用户管理服务器,因为root权限过大,容易出问题。
查看用户信息的命令
- id:查看用户信息
[chirou@duorou ~]$ id
uid=1001(chirou) gid=1001(chirou) 组=1001(chirou) 环境=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
- whoami:查看当前用户是谁
- who:查看当前登录的所有用户登录时间及终端信息
[chirou@duorou ~]$ who
root tty1 2020-10-28 08:50
chirou pts/0 2020-10-28 08:52 (192.168.12.102)
test pts/1 2020-10-28 15:07 (192.168.12.102)
- w:查看当前登录的所有用户详细信息
[chirou@duorou ~]$ w
19:19:16 up 10:32, 3 users, load average: 0.00, 0.03, 0.05
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root tty1 08:50 30:20 0.11s 0.11s -bash
chirou pts/0 192.168.12.102 08:52 1:40 0.68s 0.19s sshd: chir
test pts/1 192.168.12.102 15:07 4.00s 0.31s 0.21s sshd: test
Linux系统中对用户的划分
Linux系统中对用户主要分为管理员root与其他用户,管理员拥有最高权限,其他用户根据管理员的分配拥有不同的权限。
在Linux系统中是通过UID和GID来区分不同用户和组的,用户的名称是给人类看的,系统仅仅能够识别ID这样的数字。
- UID:用户ID,唯一标识一个用户的数字。
- 在CentOS 系统中UID为0的用户为管理员root用户,CentOS 7之前UID1-499为系统用户,为了满足文件或服务启动的需要,一般不能登录,UID500之后为普通用户。CentOS 7中UID1-200为运行系统自带进程的系统用户,201-999为安装程序的系统用户。1000+为普通用户。
- GID:组ID,唯一标识一个组的数字。
每个用户可以属于多个组,用户必须有一个主组,其他为用户的附加组。每个组里可以包含多个用户。
用户相关文件
文件 | 作用 |
---|---|
/etc/passwd | 记录用户账号信息 |
/etc/shadow | 记录用户密码信息 |
/etc/group | 记录组信息 |
/etc/gshadow | 记录组密码信息 |
/home/USER_NAME | 用户家目录 |
/etc/skel | 用户家目录的模板目录 |
/var/spool/mail/USER_NAME | 邮箱文件 |
-
/etc/passwd以冒号:分隔,分为七个字段
- 第一字段:用户名
- 第二字段:密码占位符,
- 第三字段:UID
- 第四字段:GID
- 第五字段:用户注释信息
- 第六字段:用户家目录
- 第七字段:用户的登录SHELL
[chirou@duorou ~]$ head /etc/passwd root:x:0:0:root:/root:/bin/bash
-
/etc/shadow以冒号:分隔,分为九个字段
- 第一字段:用户名
- 第二字段:加密后的密码,!!表示没有密码
- 第三字段:最近一次更改密码的时间,记录的是当前时间距离Unix元年的天数
- 第四字段:密码最少使用天数,0表示无限制
- 第五字段:密码最长使用天数,99999表示无限制。
- 第六字段:密码距离过期天数的预警时间。
- 第七字段:密码过期后的宽恕时间,在此时间内用户可以更改密码,过了此时间后系统会禁用此用户,不能再登录。
- 第八字段:账号过期时间,如果值为空则表示永久可用。
- 第九字段:保留字段,未使用。
[root@duorou /home]# head -1 /etc/shadow root:$6$.zQAsXpp$3cwrj/2R1rtf.NuMd.PdJX3Wvh8.uRl3z9BvSVzSjiID9jPFIV/ItSX48oaiaknZ1qKhTybiq8vp7DQixET9F0:18554:0:99999:7:::
-
/etc/group:组信息文件,分成四个字段
- 第一字段:组名称。
- 第二字段:组密码占位符。
- 第三字段:GID。
- 第四字段:显示该组作为哪个用户的附加组,多个用逗号分隔。
[root@duorou /home]# head -1 /etc/group root:x:0:
-
/etc/gshadow:组密码文件,分为四段
- 第一段:组名称。
- 第二段:组密码,如果是空或者!表示没有密码。
- 第三段:用户组管理者,空表示没有管理者,如果有多个用逗号分隔。
- 第四段:显示该用户组作为哪个用户的附加组,若有多个用逗号分隔。
[root@duorou /home]# head -1 /etc/gshadow root:::
-
/etc/skel:存放用户家目录模板文件,新用户家目录内的初识内容从该目录内复制。
[panghu@duorou ~]$ ll -a /etc/skel
总用量 24
drwxr-xr-x. 3 root root 78 10月 6 10:14 .
drwxr-xr-x. 146 root root 8192 10月 28 20:31 ..
-rw-r--r--. 1 root root 18 4月 1 2020 .bash_logout
-rw-r--r--. 1 root root 193 4月 1 2020 .bash_profile
-rw-r--r--. 1 root root 231 4月 1 2020 .bashrc
drwxr-xr-x. 4 root root 39 10月 6 10:14 .mozilla
- /var/spool/mail/:用户邮箱文件所在目录
[panghu@duorou ~]$ ll /var/spool/mail
总用量 0
-rw-rw----. 1 chirou mail 0 10月 27 19:45 chirou
-rw-------. 1 root mail 0 10月 20 21:02 root
-rw-rw----. 1 rpc mail 0 10月 6 10:14 rpc
-rw-rw----. 1 test mail 0 9月 26 10:46 test
用户管理命令
创建用户:useradd
- -u:指定UID
- -g:指定主组
- -G:指定附加组,附加组必须事先存在。
- -d:指定家目录
- -c:指定备注信息
- -s:指定shell
- -e:修改过期时间
- -M:不创建家目录
- -r:创建系统账号,UID处于系统用户范围内,默认没有家目录
[test@duorou ~]$ useradd chirou
# 默认会创建一个与用户名同名的组,组员为该用户,会在/home目录下创建一个与用户同名的目录,shell为/bin/bash,UID为1000+,永不过期,/var/spool/mail目录下会创建一个与用户名相同的邮箱文件。家目录中会存在.bash_*环境变量相关的文件,这些文件默认从/etc/skel目录中拷贝。这个默认拷贝环境变量位置是由/etc/default/useradd和/etc/login.defs两个配置文件定义的。
# 当普通用户在家目录下执行了rm -rf *命令,下次登录系统时会出现-bash-4.1$这样的提示符,解决方法就是在/etc/skel目录中拷贝需要的环境变量文件,然后重新登录即可。
cp -a /etc/skel/.bash* ./
设置密码:passwd
普通用户只能修改自己的密码,root用户可以修改所有用户密码。
passwd chirou
# 执行完后即成功创建了一个普通用户,可以正常登录使用。
echo “密码” | passwd --stdin 用户名
# 非交互式设置密码,常用于批量添加用户。
# 可用系统内置变量生成随机字符来充当密码
echo $RANDOM | md5sum | cut -c 1-10
手动创建用户
useradd和passwd命令创建用户本质上也是在修改账户相关文件,那么我们也可以通过直接编辑这些文件来创建一个新用户。下述操作都需要root权限才能进行。
- 1、首先编辑/etc/passwd文件,添加新的一行,指定用户名、UID、GID、家目录和shell。
- 2、编辑/etc/shadow文件,在最下面添加新的一行,指定与上面相同的用户名,添加秘文密码。在shadow文件中密码都是以秘文形式存放,可以通过openssl passwd命令生成加密的密码,然后粘贴到密码字段即可。/etc/shadow的权限是000,修改后需要在末行模式下执行:wq!来强制保存。
- 3、编辑/etc/group文件,添加一行。
- 4、编辑/etc/gshadow文件。
- 5、在/home目录中创建与用户名同名的目录。
- 6、将/etc/skel中的文件复制至该目录中,并修改属性。
- 7、创建邮箱文件并修改属性。
此时新用户创建完成,可以正常登录系统。