Linux账户管理

当用户登陆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

useradd -r zhuxj --创建一个系统用户

passwd

在用useradd创建了账户之后,默认情况下,该账户是被锁住的,需要通过passwd命令为该用户设置密码。

passwd zhuxj --修改zhuxj的密码

passwd --修改自己的密码

usermod

和useradd很像,用于修改用户

userdel

删除用户,其用法如下:

userdel [-r] username

-r:连同home目录一起删除