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里只有密码标志x,shadow存放着真正的密码
第一个字段:用户名
第二个字段:经过加密后的密码(如果密码位是!!或*代表没有密码,不能登录)
第三个字段:密码最后一次修改日期(使用1970年1月1日作为标准时间,每过一天时间戳加1)
第四个字段:两次密码的修改间隔时间(和第三个字段相比,也就是多少时间间隔后才能修改密码)
第五个字段:密码有效期(和第3字段相比)
第六个字段:密码修改到期钱的警告天数(和第五字段相比)
第七个字段:密码过期后的宽限天数(和第5个字段相比,0代表密码过期后立即失效,-1代表密码永不失效)
第八个字段:帐号失效时间(不管有效期是否到,要用时间戳表示)
第九个字段:保留
/etc/group
存放用户组的配置信息
每添加一个用户,就会生成和用户名一样的组作为用户名的初始组
第一字段:组名
第二字段:组密码 (root给组选个管理员,设置完密码,管理员知道设置的密码,就可以把其他用户拉到组或者从组中删除,会降低系统的安全性,通常不使用)
第三个字段:GID
第四字段:组中附加用户(linux无法直接查看初始组,先进/etc/passwd查看初始组id,再进/etc/gourp查看组id是哪个组)
需要注意的是,linux不是用用户名和组名来区别的,用的是UID和GID,当然,还有之前说的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所用的-u,g,G,c,L,U等对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用户名 把用户从组中删除
本文出自 “罹殇” 博客,请务必保留此出处http://wt7315.blog.51cto.com/10319657/1847440
原文地址:http://wt7315.blog.51cto.com/10319657/1847440