linux用户和组
安全3A:
Authentication:认证
Authorization:授权
Accouting|Audition:审计
用户user:
用户类别::管理员和普通用户
普通用户又分为:系统用户和登录用户
用户的标识:UID
管理员:0
普通用户:1-65535
系统用户:1-499(centos6) 1-999(centos7)
登录用户:500-60000(centos6) 1000-60000(centos)
组类别1:管理员组和普通组
管理员组:root 0
普通用户组:1-65535
系统用户组:1-499(centos6) 1-999(centos7)
登录用户组:500-60000(centos6) 1000-60000(centos)
组类别2:
用户的主要组,基本组,主组:
用户必须属于一个且只有一个主组
用户的附加组,辅助组:
一个用户可以属于0个或多个辅助组
组类别3:
私有组:组名同用户名,且仅包含一个用户
公共组:组内包含多个用户
安全上下文:
运行的程序==>进程
root:/bin/cat
qiuwei: /bin/cat
当两个用户运行上面的程序时,进程能够访问资源的权限取决于进程的运行者的身份,
用户的权限有多大就能访问多大的资源
passwd:
使用man命令看下passwd格式
name:登录用户名(qiuwei)
passwd:密码(X)
UID:用户的身份编号(1000)
GID:用户默认所在组编号(1000)
GECOS:用户全名或注释
dierctory:用户的家目录(/home/qiuwei)
shell:用户默认使用的shell
以sarah用户为例:
name:登录用户名(sarah)
passwd:密码(X)
UID:用户的身份编号(1241)
GID:用户默认所在组编号(1241)
GECOS:用户全名或注释(无注释信息)
dierctory:用户的家目录(/home/sarah)
shell:用户默认使用的shell==>/sbin/nologin
从上面可以看到passwd是没有的,用户的密码不是存放在/etc/passwd下的,而是在专门存放在/etc/shadow中,且只有管理员用户能够查看,因为是密码,如果普通用户能看那就有问题了
shadow文件格式:
还是以sarsh用户为例:
登录用户名: sarah
用户密码码:$6$wMPzucdS$G9lv.F1KtfHUyZYGLYgpCkHr7kVZCXI7Q.
B8VyMzM8OsFAfKqWMtiYuguFtdhUTliqdZXiQJzxW5dZwW8ckZ0.(现在一般是使用sha512加密)
从1970年1月1日期密码最近一次被更改的时间:17014
密码的最短使用期限:0
密码的最长使用期限;9999
密码过期前几天提醒时间:7
密码过期几天账号会被锁定:
从1970年1月1日算起,多少天后账号失效
密码期限示意图:
加密机制:
加密:明文-->密文
解密:密文-->明文
单项加密:哈希算法,原文不同,密文不同
相同算法定长输出,获得密文不可逆推除原始数据
雪崩效应:初始条件的微小改变,引起结果的巨大改变
对称加密:加密和解密使用同一个密码
非对称加密:加密和解密实用的一对儿密钥
密钥对儿:
公钥:public key
私钥 :private key
加密算法种类:
md5:128位
sha1:160位
sha224:224位
sha256:256位
sha384:384位
sha512:512位==>现在常用
更改加密算法: authconfig --passalgo=sha256 --update
将加密算法改为sha256后,然后再改回sha512,通过对比可知,sha512密码复杂程度大大超过了sha256
在第二个$和第三个$中间有几个字符,称为salt,是随机数,所以就算你两个用户设置相同的密码但是家里salt后,shadow现实的密码也是完全不一样的
给上a,b,c用户设置密码centos,但是shadow显示密码完全不一样
密码的使用策略:
1.使用随机密码
2.最短长度不要低于8位
3.应该使用大写字母,小写字母,数字和标点符号四类字符中至少三类
4.定期更换
设置随机数:
openssl rand -base64 20
group文件格式:
群组名称:群组名称
群组密码:通常不需要设置密码,密码在/etc/gshadow
GID:群组的ID
以当前组为附加组的用户列表(用逗号为分隔符)
群组名称:admins
密码:x
GID:503
以admins为附加组的用户:natasha,harry
gshadow文件格式:
群组名称:群组名称
群组密码:通常不需要设置密码,密码在/etc/gshadow
组管理员列表:组管理员的列表,更改组密码和成员
以当前组为附加组的用户列表(用逗号为分隔符)
群组名称:admins
密码:x
组管理员列表:
以admins为附加组的用户:natasha,harry
vipw:编辑用户密码文件
vigr:编辑组文件
pwck:检查用户密码的完整性
grpck:检查用户组及密码文件的完整性
用户和组管理命令
用户:
useradd:创建用户
-u:指定用户的UID
-o:配合-u选项,不检查UID的唯一性(即两个用户可用同一个UID)
-g GID:指明用户的基本组,组名或GID都行
-c:用户的注释信息
-G:指明用户的附加值,可以多个,用逗号隔开
-d:以指定路径(不存在)为家目录
备注:-d选项时,父目录必须存在,子目录不要有
-s:指明用户的默认shell程序
/etc/shells文件中
-N:不创建私有组做主组,使用users组做主组
-r:创建系统用户centos6 ID<500 centos7 ID<1000
说明:
用户名:bietianshen
UID:5000
基本组:root
附加组:bin qiuwei
注释信息:yongrenzirao
默认shell:/bin/csh
家目录:/qiuwei
默认值设定:/etc/default/useradd
useradd -D显示或更改默认设置
useradd -D -s /bin/csh:创建新用户时,默认shell为csh
练习:
1 、创建 用户gentoo ,附加组为bin 和root ,默认shell为 为
/bin/csh ,注释信息为"Gentoo Distribution"
useradd -G bin,root -s /bin/csh -c "Gentoo Distribution" gentoo id gentoo getent passwd gentoo
2 、创建 下面的用户、组和组成员关系
名字为 为admins 的组
用户natasha ,使用admins 作为附属组
用户harry ,也使用admins 作为附属组
用户sarah ,不可交互登录系统, 且 不是admins 的成员,
natasha ,harry ,sarah 密码 都是centos
指令:
groupadd admins useradd -G admins natasha useradd -G admins harry useradd -s /sbin/nologin sarah echo centos |passwd --stdin natasha echo centos |passwd --stdin harry echo centos |passwd --stdin sarah
用户属性修改
usermod:
选项:
-u:新UID
-g GID :新的基本组
-G GROUP1[GROUP2,....]:新附加组,原来的组将会被覆盖,若保留原有。则要同时
使用-a选项,表示append,追加
-s SHELL:新的默认shell
-c:新的注释信息
-d:新家目录不会自动创建,原家目录中的文件不会同时移动至新的家目录;若要 创建新家目录并移动原家数据,同时使用-m
-l:新名字
-L:lock指定用户,在/etc/shadow密码栏的增加!
-U:unlock,将/etc/shadow密码栏的!拿掉
-e yyyy-MM-DD:指定用户账号过期日期
-f 10:设定非活动期限10天
指令
usermod -u 4567 -g root -aG qiuwei -s /bin/bash -l dj gentoo
UID:4567
基本组:root
附加组:bin,qiuwei
默认shell:/bin/bash
用户名:dj
删除用户
userdel:
-r选项:删除用户家目录
查看用户相关的ID信息:id
选项:
-u:查看UID
-g:
-G:
-n:name
UID:4567
gid:0
group:基本组root(0),附加组bin(1)和qiuwei(500)
su:用户切换
su usernam:非登录时切换,即不会读取目标用户的配置文件,不改变当前工作目录
su - usernam:登录时切换,会读取目标用户的配置文件,切换至家目录,完全切换
登录式shell,配置文件及次序:
/etc/profile --> /etc/profile.d/*.sh --> ~/.bash_profile --> ~/.bashrc --> /etc/bashrc
非登录式shell:
~/.bashrc --> /etc/bashrc --> /etc/profile.d/*.sh
设置密码
passwd [options]username :修改指定用户的密码,仅root用户权限
passwd:修改自己的密码
选项:
-l:锁定指定用户
-u:解锁指定用户
-e:强制用户下次登录修改密码
-n mindays:指定最短使用期限
-x maxdays:最大使用期限
-w warndays:提前多少天开始警告
-i inactivedays:非活动期限
--stdin:从标准输入接受用户密码
echo “centos”|passwd -stdin username
创建组
groupadd [options]...groupname
-g:指明GID
-r:创建系统组
centos6:ID<500
centos7:ID<1000
修改和删除组
groupmod [option]...group
-n groupname:更改组名
-g GID:更改组ID
groupdel:删除组
groupdel groupname:删除指定组
更改组密码:
组密码:gpasswd
gpasswd [option]group
-a user:将user添加至指定用户中
-d user:从指定用户中移除用户user
-A user1,user2,...:设置有管理权限的用户列表
newgrp:临时切换基本组
如果用户不属于此组,则需要组密码
groupmems:列出组成员
groupmems -a user_name | -d user_name | [-g group_name] | -l | -p
列出组成员 groupmems -l -g qiuwei 增加组成员 groupmems -a root -g qiuwei 删除组成员 groupmems -d root -g qiuwei
原文地址:http://bietianshen.blog.51cto.com/9834214/1833549