Linux是个多用户多任务的分时操作系统,越是对服务器安全性要求越高的服务器,越需要建立合理的用户权限等级制度和服务器操作规范。

linux中主要是通过配置文件来查看和修改用户信息

关于用户的配置文件有四个。

/etc/passwd

/etc/shadow

/ect/group

/etc/gshadow

/etc/passwd

记录了这个用户的一些基本属性

1字段:用户名称

2字段:密码标识(表示有密码,会去/etc/shadow下调用)

3字段:UID

     0  超级用户

     1-499  系统用户(伪用户)

     500-65535普通用户

4字段:GID(用户初始组ID

5字段:用户说明

6字段:家目录

     普通用户:/home/用户名

     超级用户:/root/

7字段:登录之后的shell

     shell就是linux的命令解释器

     在/etc/passwd当中,除了标准shell/bn/bash之外,还可以写如/sbin/nologin(无法登录)

对于组,有初始组和附加组的概念。

 初始组:就是指用户一建立就立刻拥有这个用户组的相关权限,每个用户的初始组只能有一个,一般就是和这个用户的用户名相同的组名作为这个用户的初始组。

每个用户都必须拥有一个初始组,每个用户只能拥有一个初始组

 

 附加组:指用户可以加入多个其他的用户组,并拥有这些组的权限,附加组可以有多个。

影子文件/etc/shadow

存放用户密码信息,只有系统管理员才有权利进行查看和修改的文件,权限为000

前面说的passwd里只有密码标志xshadow存放着真正的密码

第一个字段:用户名

第二个字段:经过加密后的密码(如果密码位是!!或*代表没有密码,不能登录)

第三个字段:密码最后一次修改日期(使用197011日作为标准时间,每过一天时间戳加1

第四个字段:两次密码的修改间隔时间(和第三个字段相比,也就是多少时间间隔后才能修改密码)

第五个字段:密码有效期(和第3字段相比)

第六个字段:密码修改到期钱的警告天数(和第五字段相比)

第七个字段:密码过期后的宽限天数(和第5个字段相比,0代表密码过期后立即失效,-1代表密码永不失效)

第八个字段:帐号失效时间(不管有效期是否到,要用时间戳表示)

第九个字段:保留

/etc/group  

存放用户组的配置信息

每添加一个用户,就会生成和用户名一样的组作为用户名的初始组

第一字段:组名

第二字段:组密码 root给组选个管理员,设置完密码,管理员知道设置的密码,就可以把其他用户拉到组或者从组中删除,会降低系统的安全性,通常不使用)

第三个字段:GID

第四字段:组中附加用户(linux无法直接查看初始组,先进/etc/passwd查看初始组id,再进/etc/gourp查看组id是哪个组)

 

 

需要注意的是,linux不是用用户名和组名来区别的,用的是UIDGID,当然,还有之前说的PID,理论上来说都是唯一的。

gshadow

用户组管理密码

第一字段:组名,是用户组的名称,由字母或数字构成。  

第二字段:用户组密码,这个段可以是空的或!,如果是空的或有!,表示没有密码 

第三字段:组管理者,这个字段也可为空,如果有多个用户组管理者,用,号分割 

第四字段:组内用户列表,如果有多个成员,用,号分割 

 

 

用户的家目录

普通用户:/home/用户名,所有者和所属组都是此用户,权限是700

超级用户:/root/,所有者和所属组都是root用户,权限是550

 

假如通过修改/etc/passwd,将某用户的uid更改为0,他的权限更改了,但是家目录的位置却没有更改。

 

命令:

useradd  添加用户

语法:useradd 【选项】用户名

-u UID          手工指定用户的UID

-d 家目录           手工指定用户的家目录

-c  用户说明        手工指定用户的说明

-g  组名           手工指定用户的初始组

-G  组名           指定用户的附加组(可以多个附加组,逗号分割就行了)

-s  shell        手工指定用户的登录shell,默认是/bin/bash

 

其实就是修改了刚刚所说的几个配置文件,我们也可以手动写入这几个文件来创建用户

一般新建用户使用默认值就可以了,用户的默认值文件

GROUP=100  用户默认组(linux系统中,有一种共有模式和私有模式,在公有模式中是这样的,在现在的linux中,默认的是都是私有模式,在私有模式中,用户添加是创建同名的组)

HOME=/home      用户家目录

INACTIVE=-1     密码过期宽限天数       (shadow文件的第7字段相对应)

EXPIRE=        密码失效时间        (shadow文件的第8字段相对应)

SHELL=/bin/hsah   默认的shell

SKEL=/etc/skel   模版目录

CREATE_MAIL_SPOOL=YES  是否建立邮箱

还有另外一个默认配置文件,/etc/login.defs ,把注释行去掉,就剩这些了、

 

PASS_MAX_DAYS 99999       密码有效期             (shadow文件的第5个字段)

PASS_MIN_DAYS 0         密码修改间隔         (shadow文件的第4个字段)

PASS_MIN_LEN             密码最小5位(现在用的是PAM原则)        

PASS_WARN_AGE 7           密码到期警告            (shadow文件的第6个字段)

UID_MIN  500          最小uid

UID_MAX  60000         最大UID范围

ENCRYPT_METHOD SHA512       加密模式

 

 

 

passwd【选项】用户名

-S 查询用户密码的密码状态,仅root用户可用

-l 暂时锁定用户。仅root可用

-u 解锁用户。仅root用户可用

-stdin 可以通过管道符输出的数据作为用户的密码

 

 

-S来查看下密码状态,内容是和/etc/shadow相对应的

锁定和解锁用户

实际上可以看到是shadow中的user1用户加了!当然,我们可以手工添加。

 

 

usermod   修改用户信息

前面的useradd所用的-ugGcLU等对usermod来说,基本通用

 

 

chage  修改用户密码状态

chage【选项】用户名

-l             列出用户的详细密码状态

-d             修改密码最后一次更改日期

-m  天数       两次密码修改间隔

-M 天数        密码过期前警告天数

-I 天数          密码过期后宽限天数

-E日期           帐号失效时间

 

我学习的时候在想,我还要记这么多参数?就算用--help去查看也得多少时间,所以如果我用到这,我就直接用vim编辑配置文件了。

 

shage -d 0 user1 估计这个命令的最大作用也就是这了,要求用户一登录就必须设置密码。

 

 

userdel  删除用户

userdel【选项】用户名

-r 删除用户的同时删除用户家目录

 

id 查询用户的uid

id 用户名

 

su  切换用户身份

su 【选项】用户名

- 选项只用-,代表连用户的环境变量一起切换

-c 命令:仅执行一次命令,而不切换用户身份

 

如果在切换时没有加-,会有各种各样的问题

 

 

groupadd 添加用户组

groupadd 【选项】组名

-g GID  指定组ID

 

groupmod【选项】组名

-g GID  修改组ID

-n新组名  修改组名

 

groupdel 组名  删除用户组

如果组中有初始用户存在,无法删除,附加用户,不影响组的删除。

 

 

gpasswd【选项】组名      把用户添加入组或从组中删除

-a 用户名  把用户加入组

-d用户名  把用户从组中删除