Centos7 用户与组
一、用户与组介绍
1、什么是用户?
用户时操作系统提供的一种安全机制
用户是权限的化身
2、为何要有用户?
划分权限,增强安全性
每启动一个进程,都会与一个用户关联
进程 --》 用户 --》 权限(权限作用在文件身上)
3、查看用户相关信息
id 查看当前用户信息
whoami 查看当前用户是谁
who 查看所有登录的用户
ps aux | grep [s]sh 每一个进程都有其用户
4、linux系统的用户角色划分
linux系统中用户分为管理员和其他用户
管理员拥有最高权限,其他用户根据管理员的分配拥有不同的权限
uid 与 gid
uid :用户id,唯一标识一个系统用户的账号,uid在系统中是唯一的,uid -》身份证号 用户名-》名字
gid :组id,标识一个组
centos7 系统关于uid的约定:
0 超级管理员,最高权限
1~200 系统用户,用来运行系统自带的进程,默认已创建
201~999 系统用户,用来运行安装的程序,所以此类用户无需登录系统
1000+ 普通用户,可以正常登录到系统的用户,权限较小,能执行的任务有限
5、root用户
默认是root用户,其uid、gid均是0,root用户在每台unix/linux操作系统中都是唯一且真实存在的,通过它可以登录系统,可以操作系统中任何文件和命令,拥有最高的管理权限
6、组的概念
主组:用户本身所在的组
附加组:为用户添加的组
用户与组的关系:
一对一:一个用户默认在自己的主组下
一对多:一个用户可以属于多个组,用户只有一个主组,但可以为用户添加多个附加组
多对多:多个用户可以属于多个组
总结:
linux将权限分为了三类:
属主
属组
其他人
二、用户与组相关文件
与用户和组相关的文件:
/etc/passwd 用户相关
/etc/shadow 用户相关
/etc/group 组相关
/etc/gshadow 组相关
/home/... 默认的用户家目录
/var/spool/mail/... 用户mail文件
/etc/passwd
以:为分隔符,分为七列
第一字段 用户名
第二字段 密码(在例子中我们看到x,其实密码被映射到/etc/shadow文件中
第三字段 uid
第四字段 gid
第五字段 描述信息(可为空)
第六字段 用户家目录所在的位置
第七字段 用户登录后第一个启动的程序,通常为shell
/etc/shadow
以:为分隔符,分为九列(可使用man shadow查看详细信息)
第一字段 用户名
第二字段 密码(密文,!!表示没有密码,x表示这个用户不能登录到系统,这个字段是非空的)
第三字段 上次修改密码的时间(这个时间是从1970-1-1到上次修改口令的天数)
第四字段 两次修改密码的最小间隔天数(若为0则表示禁用此功能)
第五字段 两次修改密码的最大间隔天数(此项能增强用户口令的时效性)
第六字段 提前多少天提醒用户密码即将过期
第七字段 密码过期多少天后禁用此用户
第八字段 用户过期日期(此字段指定了用户作废的天数(从1970-1-1开始的天数)若此项为空,则账户永久可用)
第九字段 保留字段
/etc/group
以:为分隔符,分成四列
第一字段 用户组的名称
第二字段 用户组的密码占位符
第三字段 用户组的gid
第四字段 显示该用户组作为哪些用户的附加组,多个用逗号分隔
/etc/gshadow
以:为分隔符,分成四列
第一字段 用户组的名称
第二字段 用户组密码(可以为空或!,表示没有密码)
第三字段 用户组管理者(可以为空,如果有多个用户组管理者,用,分割)
第四字段 显示该用户组作为哪些用户的附加组,多个用,分割
/etc/skel/... 用户家的模板
/home/... 用户的家目录
/var/spool/mail/... 用户的邮箱文件
三、用户管理命令:
useradd 添加用户
userdel 删除用户
usermod 修改用户信息
1、创建用户
useradd df 创建名为df的用户
2、查看用户
id df 查看名为df的用户
who 查看所有登录用户的信息
whoami 查看当前登录的用户名
3、删除用户
userdel df 删除用户,但不删除用户家目录和mail
userdel -r df 使用-r命令,删除更加彻底
4、useradd命令详解
-u 指定用户的uid
-g 指定用户所属的主组
-G 指定用户所属的附加组
-d 指定用户的家目录
-c 指定用户的备注信息
-s 指定用户使用的shell
-e 修改过期时间
-m 不创建家目录(系统账户一般不配备家目录)
-r 创建系统账户,uid处于系统用户范围内,默认没有家目录
5、usermod命令
与useradd命令的参数基本一致,只不过useradd是添加用户,usermod是修改
-u 修改指定用户的uid
-g 修改指定用户的主组
-a 将用户添加到附加组,仅与-G参数一起使用
-G 修改指定用户的附加组,多个使用,隔开,覆盖原有附加组
-d 修改指定用户的家目录
-c 修改指定用户的注释信息
-s 修改指定用户的bash shell
-m 将用户的主目录移动到新位置,如果当前主目录不存在,则不创建新的主目录
-l 修改指定用户的用户名
-L 锁定指定的用户
-U 解锁指定的用户
6、设置于修改密码
passwd 默认给当前用户设置密码
passwd + 用户名 给指定用户设置密码(root用户可以给自己及其他用户设置密码,普通用户只能给自己设置密码)
echo "密码" | passwd --stdin 用户名 非交互式设置密码
#ps
可以使用系统内置变量生成随机字符串
echo $RANDOM | md5sum | cut -c 1-10
useradd命令的参考文件
/etc/login.defs
/etc/default/useradd 可以使用useradd -D查看
/etc/skel/...
四、组管理
1、组管理命令
groupadd 添加组
groupmod 修改组
groupdel 删除组
gpasswd 设置组密码
newgrp 切换主组(临时切换到该组下,获取相应的权限)
2、创建组
3、修改组
4、删除组
如果一个组是用户的主组,那么改组不能被删除,删除用户会默认一起删除他的主组
5、组成员管理
对于用户来说,组分为两类:
1、主组,用户只能又一个主组,可以通过-g指定,如未指定则常见一个默认的主组(于用户名同名)
2、附加组,主组不能满足授权需求,创建附加组,将用户加入该组,用户可以属于多个附加组,加入一个组后就拥有了改组的权限
我们可以为组设置密码,然后让一些非组成员通过newgrp命令临时切换到组内并输入密码获取组用户的权限
五、手动创建用户
1、/etc/passwd
2、/etc/shadow
3、/etc/group
4、/etc/gshadow
5、创建用户家目录,并用模板装修一下,注意权限
6、/var/spool/mail/df 用户邮箱文件
7、账户登录测试
PS:制作密码
openssl passwd 选项 密码
选项:
-1 表示使用的是md5加密算法
-salt 指定salt值,不使用随机产生的salt,(在使用加密算法进行加密时,即使密码一样,salt不一样,所计算出来的hash值也不一样;除非密码一样,salt也一样,计算出来的hash值才一样,salt值为8字节的字符串)