当用户登陆Linux系统时,Linux将做如下检查:
1)在/etc/passwd文件里匹配输入的用户名,获取该用户名的UID和GID(其中GID和/etc/group关联)、Home目录和Shell设置
2)在/etc/shadow里核对该用户的密码
/etc/passwd文件结构
这个文件的每一行代表一个账号,如下所示:oracle:x:501:501::/home/oracle:/bin/bash
1. 用户名 2. 密码:早期的密码放在该字段,但如今的密码已单独放在/etc/shadow里,所以该字段已经没有意义,用'x'占位 3. UID: 0:root 1~499:系统账号,如bin,daemon,adm,nobody等 >=500:普通用户账号 4. GID:与/etc/group关联 5. 用户信息说明:一般没什么用,为空 6. 主文件夹 7. 默认shell
/etc/shadow文件结构
oracle:$6$AsOW5s9y$1JhRl0RYwGN48TVNMqF6sFrTKbo9.tvdHUR.xeFHzoFIqtzWnTrBE7oa99qlXOIRidfQyNPcGyS9eX2Ajy.Od0:16024:0:99999:7:::
1. 用户名 2. 加密过的密码 3. 最近更改密码的日期:改日期是一个整数,表示从1970年1月1日开始累加的天数。 4. 密码不可被更改的天数(与第3个字段相比):0表示密码随时可被修改。 5. 密码需要更改的天数(与第3个字段相比):表示用户必须在这个天数内更改密码,否则将不可用,99999(273年)表示无需更改 6. 密码需要更改期限前的警告天数(与第5个字段相比) 7. 密码过期后的账号宽限天数(与第5个字段相比) 8. 账号失效日期 9. 保留字段
/etc/group文件结构
oinstall:x:501:
dba:x:503:oracle
1. 用户组名
2. 用户组密码:已移至/etc/gshadow
3. GID
4. 属于该用户组的账号
上面的例子中,oracle同时属于oinstall和dba两个组,但为什么oinstall的第4列为空呢?这是因为它是初始用户组(即oracle登陆后的用户组),而dba不是。
下面我们再看看什么是有效用户组,虽然某个用户可以属于多个用户组,但同一时刻,只能有一个有效用户组(默认情况下为初始用户组),我们可以通过groups命令查看:
[oracle@lx16 ~]$ groups
oinstall dba如上所示,排在第一位的就是有效用户组,如果你想改变当前的有效用户组,可以通过newgrp命令:
[oracle@lx16 ~]$ newgrp dba
[oracle@lx16 ~]$ groups
dba oinstall
账号管理
useradd
useradd用于新建用户,它的默认值可以通过如下命令获得:
# useradd -D
GROUP=100
HOME=/home
INACTIVE=-1
EXPIRE=
SHELL=/bin/bash
SKEL=/etc/skel
CREATE_MAIL_SPOOL=yes也就是说,当你使用useradd username命令添加用户时,将采用以上的默认值。下面看几个例子:
useradd zhuxj --创建一个默认的用户
useradd -u 700 -g users zhuxj --指定uid为700,用户组为users
[Ok3w_NextPage]useradd -r zhuxj --创建一个系统用户
passwd
在用useradd创建了账户之后,默认情况下,该账户是被锁住的,需要通过passwd命令为该用户设置密码。
passwd zhuxj --修改zhuxj的密码
passwd --修改自己的密码
usermod
和useradd很像,用于修改用户
userdel
删除用户,其用法如下:
userdel [-r] username
-r:连同home目录一起删除