用户和用户组管理
用户配置文件
Linux通过用户配置文件来查看和修改用户信息,从而建立合理的用户等级制度,规范服务器操作
四种用户配置文件
1.用户信息文件/etc/passwd
2.影子文件 /etc/shadow
3.组文件信息 /etc/group
4.组密码文件 /etc/gshadow
用户信息文件/etc/passwd
passwd文件中存放着每个用户的信息,每个用户信息由七个字段构成,以root为例,各字段的含义如下
root,用户名
x,密码标志,表示该用户设有密码,真正的密码存在影子文件中
0,UID,用户ID;0表示该用户为超级用户管理员,1~499表示系统用户(伪用户),500~65535表示普通用户
0,GID,用户的初始组ID,如果想将普通用户改为管理员,更改GID是没有用的,需要更改UID为0才能生效
初始组和附加组
初始组:指用户登录系统时所在的用户组,每个用户只有一个初始组,初始组一般就是组名与用户名相同用户组
附加组:指用户可以加到其他的用户组,并拥有这些组的权限,一个用户可以有多个附加组
root,用户信息说明
/root,用户家目录,普通用户家目录在/home/用户名/
/bin/bash,命令解释程序shell;/bin/bash为标准shell;伪用户的shell为/sbin/nologin,是不允许登录的
影子文件/etc/shadow
影子文件中的信息更多一些,有九个字段,各字段的含义:
root,用户名
第二个字段,采用SHA-512加密后的真正密码,所以shadow文件的权限为000,只有系统管理员才能进入,如果该字段密码位是"!!"或"*",代表没有密码,不允许登录,伪用户的密码都是这样;如果管理员想禁止某一用户登录系统,只需在密码位前加"!";注意文件只读,没有写权限,修改文档内容后应该使用“wq!”强制保存退出
17251,密码最后一次修改的时间,格式为1970-01-01至今的天数
0,密码修改后,允许再次修改密码的时间间隔
99999,密码有效期
7,密码失效前7天发出警告
第七个字段,密码失效后的宽限天数,0表示立即失效,-1表示永不失效
第八个字段,账号失效时间,用时间戳表示,到了这个时间密码就会失效,优先级大于字段五
第九个字段,保留字段
时间戳换算
时间戳-->日期
date -d "1970-01-01 17251 days"
日期-->时间戳
echo $(($(date --date="2017/04/09" +%s)/86400+1))
组信息文件/etc/group
组信息文件信息中含有四个字段,个字段含义为
root,组名,每添加一个用户,会在此文件中添加组名与用户名相同的组,做为用户初始组
x,组密码标志
0,GID,组ID
第四个字段,组中的附加用户
组密码文件/etc/gshadow
1.用户家目录
普通用户,/home/用户名/,权限700
超级用户,/root/,权限550
2.用户邮箱 /var/spool/mail/用户名/
3.用户模块目录 /etc/skel
新添一个用户时,会在家目录生成模板目录下的文件
用户管理命令
1.useradd [选项] 用户名
-g 指定用户的初始组,useradd -g user1 user2
-G 指定用户的附加组,,useradd -G user1 user2
useradd命令实际就是在四个配置文件中新添了相应的内容,并且生成了家目录,用户邮箱,将/etc/skel下的文件拷贝到了用户家目录;useradd实现的功能可以通过手动操作以上七个文件实现
2.passwd [用户名]
管理员更改任何用户的密码,passwd后跟用户名,可以不遵守密码规范;
普通用户只能更改自己的密码,直接输入passwd,且必须遵守密码规范(复杂性、时效性、易记性)
3.userdel -r 用户名
-r删除用户的同时删除家目录
删除用户也可以手动更改四个配置文件,删除相应家目录、用户邮箱实现
4.su [-/-c] 用户名
- 选项只用"-",代表连带用户的环境变量一起替换
如果不使用"-",即使切换了用户,系统关于用户的环境变量不会变化;
-c 仅执行一次命令,不切换用户身份,例,su -root -c "useradd sanguo"
用户组管理命令
1.groupadd [-g] 组名 添加用户组
-g 指定GID
2.groupmod 修改用户组信息
-g 修改组ID
-n 修改组名,groupmod -n testgroup group1,将group1改名为testgroup
3.groupdel 组名 删除用户组
如果用户组拥有初始用户,则该用户组无法删除
4.gpasswd [-ad] 组名
-a 用户名 将用户加入组,gpasswd -a user1 group1
-d 用户名 将用户从组中删除,gpasswd -d user1 group1