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格式

linux用户和组_linux

name:登录用户名(qiuwei)

passwd:密码(X)

UID:用户的身份编号(1000)

GID:用户默认所在组编号(1000)

GECOS:用户全名或注释

dierctory:用户的家目录(/home/qiuwei)

shell:用户默认使用的shell

linux用户和组_linux_02

以sarah用户为例:


name:登录用户名(sarah)

passwd:密码(X)

UID:用户的身份编号(1241)

GID:用户默认所在组编号(1241)

GECOS:用户全名或注释(无注释信息)

dierctory:用户的家目录(/home/sarah)

shell:用户默认使用的shell==>/sbin/nologin


从上面可以看到passwd是没有的,用户的密码不是存放在/etc/passwd下的,而是在专门存放在/etc/shadow中,且只有管理员用户能够查看,因为是密码,如果普通用户能看那就有问题了


shadow文件格式:

linux用户和组_linux_03

还是以sarsh用户为例:

登录用户名: sarah

用户密码码:$6$wMPzucdS$G9lv.F1KtfHUyZYGLYgpCkHr7kVZCXI7Q.

B8VyMzM8OsFAfKqWMtiYuguFtdhUTliqdZXiQJzxW5dZwW8ckZ0.(现在一般是使用sha512加密)

从1970年1月1日期密码最近一次被更改的时间:17014

密码的最短使用期限:0

密码的最长使用期限;9999

密码过期前几天提醒时间:7

密码过期几天账号会被锁定:

从1970年1月1日算起,多少天后账号失效


密码期限示意图:

linux用户和组_用户_04密码加密:


加密机制:

加密:明文-->密文

解密:密文-->明文

单项加密:哈希算法,原文不同,密文不同

          相同算法定长输出,获得密文不可逆推除原始数据

          雪崩效应:初始条件的微小改变,引起结果的巨大改变

对称加密:加密和解密使用同一个密码

非对称加密:加密和解密实用的一对儿密钥 

          密钥对儿:

               公钥:public key 

               私钥 :private key


加密算法种类:

md5:128位

sha1:160位

sha224:224位

sha256:256位

sha384:384位

sha512:512位==>现在常用


更改加密算法: authconfig  --passalgo=sha256 --update

linux用户和组_linux_05

将加密算法改为sha256后,然后再改回sha512,通过对比可知,sha512密码复杂程度大大超过了sha256


在第二个$和第三个$中间有几个字符,称为salt,是随机数,所以就算你两个用户设置相同的密码但是家里salt后,shadow现实的密码也是完全不一样的

linux用户和组_linux_06

给上a,b,c用户设置密码centos,但是shadow显示密码完全不一样


密码的使用策略:

1.使用随机密码

2.最短长度不要低于8位

3.应该使用大写字母,小写字母,数字和标点符号四类字符中至少三类

4.定期更换


设置随机数:

openssl rand -base64 20

linux用户和组_用户_07


group文件格式:


群组名称:群组名称

群组密码:通常不需要设置密码,密码在/etc/gshadow

GID:群组的ID

以当前组为附加组的用户列表(用逗号为分隔符)

linux用户和组_用户_08

群组名称:admins

密码:x

GID:503

以admins为附加组的用户:natasha,harry



gshadow文件格式:


群组名称:群组名称

群组密码:通常不需要设置密码,密码在/etc/gshadow

组管理员列表:组管理员的列表,更改组密码和成员

以当前组为附加组的用户列表(用逗号为分隔符)

linux用户和组_用户_09

群组名称: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

linux用户和组_用户_10linux用户和组_linux_11

说明:

用户名: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


linux用户和组_用户_12

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

linux用户和组_用户_13


用户属性修改

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

linux用户和组_用户_14更改如下:

UID:4567

基本组:root

附加组:bin,qiuwei

默认shell:/bin/bash

用户名:dj



删除用户

userdel:

-r选项:删除用户家目录




查看用户相关的ID信息:id

选项:

-u:查看UID

-g:

-G:

-n:name

linux用户和组_用户_15用户dj的

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


linux用户和组_用户_16

列出组成员
groupmems -l -g qiuwei 
增加组成员
 groupmems -a root -g qiuwei
 删除组成员
 groupmems -d root -g qiuwei