用户和权限管理

一、用户

Linux中用户是资源获取的标识符,资源分配,文件系统安全权限模型的核心要素之一。密码则是用户认证的凭证,用户信息和密码信息都存放在相应的文本文件中,密码信息在存放的过程用了一定的加密算法进行加密。  

1.加密算法:

资源分派:   

Authentication:认证(确认身份,也有可能好几个人一个身份)    

用户名+口令验证     

Authorization:授权(对文件操作)      

Accouting|Audition:审计(根据日志判断操作)               

加密方法(计算速度快,可以破解一切密码):

对称加密(DES,3DES,):加密和解密都是用同样秘钥,叫做对称加密

公钥加密(DSA,RSA):私钥和公钥。

私钥加密(认证用户),公钥解密。

单向加密:比较二次数据可以得知数据是否被修改

雪崩效应(蝴蝶效应):初始条件的细小改变,会导致数据的巨大变化

定长输出:

不可逆:

MD5:信息摘要,128bits定长输出

SHA1:安全的hash算法,160bits

SHA224: 224bits

SHA256: 256bits

SHA384: 384bits

SHA512: 512bits

更改加密算法authconfig  –passalgo=sha256 –update

  显示当前的加密算法 authconfig –test | grep hashing

diff 逐行比较两个文件的内容,列出两个文件之间不同。

    man sslpasswd (此命令可以自己按照加密方式得到密码,但是支持MD5加密算法)

openssl passwd -1 -salt 123456789  (用MD5加密,然后在密码中加了123456789字符作为盐,用来保证相同密码加密的MD5码不相同)

2.相关存放信息文件有:   

/etc/passwd  用户信息表,存放NAME、UID、GID、COMMENT、HOMEDIR、TYPE  SHELL    

/etc/shadow 用户密码信息表,存放加密后的密码,密码修改相关时限    

/etc/group 组信息表,存放GROUPNAME、GID、其他将此组当做附加组的用户名      

/etc/gshadow 组密码表,存放GROUPNAME、加密密码、其他将此组当做附加组的用户名       

3.相关环境配置文件:    

/etc/login.de 控制创建用户时系列参数      

/etc/default/useradd   也是控制创建用户时的系列参数      

/etc/shells 当前系统中存在的shell类型       

etc/skel   创建用户家目录时里面的文件的来源

4.Linux安全上下文(security context)

运行中的程序:进程(process)

以进程发起者的身份运行:(是由root和mage决定的,不是cat决定,这两者执行cat的权限是不一样的)

root: /bin/cat

mage: /bin/cat

进程所能够访问资源的权限取决于进程的运行者的身份,而不是进程所有者的身份

组的类别

一个账号可以加入多个组,一个组也可以包含多个用户

例如:

group1:wang,mage,li

group2:wang,li

Linux组的类别:

用户的主要组(主组):(一个用户在创建的时候必须要指定一个组)

用户必须属于一个且只有一个主组

组名同用户名,且仅包含一个用户:私有组

这是默认的,新建一个用户,就会产生和用户同名的组,有且仅有一个

用户的附加组(辅助组,secondary group):

一个用户可以属于零个或多个辅助组

前提:进程有属主和属组;文件有属主和属组

(1) 任何一个可执行程序文件能不能启动为进程:取决发起者对程序文件是否拥有执行权限

(2) 启动为进程之后,其进程的属主为发起者;进程的属组为发起者所属的组

(3) 进程访问文件时的权限,取决于进程的发起者

(a) 进程的发起者,同文件的属主:则应用文件属主权限

(b) 进程的发起者,属于文件属组;则应用文件属组权限

(c) 应用文件“其它”权限

5./etc/passwd 用户信息文件详解

文件格式:

NAME:X:UID:GID:COMMENT:HOME:SHELL

NAME:用户名

X  :用户密码占位符,以前用户密码存放在这里(pwconv,pwunconv。这两个命令可以将密码重新导入这里或者到导出回/etc/shadow)

UID:User IDentfie 

用户识别码,每个用户唯一的识别码,Linux系统识别用户不通过NAME来识别,是通过UID识。

根据UID的数字,将用户分为两类:

65535

管理员用户:UID(0)

普通用户:

系统用户:UID (1-499)CentOS 6

UID (1-999)CentOS 7

普通用户:UID (500+) CentOS 6

UID (500+) CentOS 7

GID:Group IDentfie

基本组GID,每个用户都有一个基本组,这个基本组可以不是唯一的。基本组GID也分为同UID一样分为两类,具体分组见上面。

COMMENT:注释信息,就finger USERNAME 得出的信息。

HOME:用户的家目录路径

SHELL:shell类型

/etc/group  存放组信息表

格式:  GROUPNAME:X:GID:附加组

GROUOPNAME: 组名

X : 组密码占位符

GID:组GID

附加组:其他用户以这个组为附加组的用户名

vigr 修改配置文件时,格式不对会提醒

/etc/passwd 存放密码的信息表

格式: login name:encrypted password:date of last password change:minimum password age:maximum password age:password warning period:password inactivity period:account expiration date:reserved field

login name : 用户名

encrypted password:加密密码

date of last password change:最近修改密码的时间,从1970年1月1日

minimum password age:最小的修改密码时间

maximum password age:密码最长能使用的时间

password warning period:距离过期的警告时间

password inactivity period:非活动区间(账号一登陆就需要修改密码)

account expiration date: 账户有效期

vipw 修改配置文件时,格式不对会提醒

pwck 检查/etc/passwd 文件格式是否存在错误

/etc/gshadow

group name :组名

encrypted password:群组加密密码

administrators :组管理员

members :组成员

grpck 检查/etc/gpasswd 文件格式是否存在错误  

pwck和grpck

用户创建:

用户创建方式之一:useradd 命令

useradd 

-u UID: [UID_MIN, UID_MAX]定义在/etc/login.defs

-o 配合-u 选项,不检查UID的唯一性

-g GID:指明用户所属基本组,可为组名,也可以GID

-c "COMMENT":用户的注释信息

-d HOME_DIR: 以指定的路径(不存在)为家目录

-s SHELL: 指明用户的默认shell程序可用列表在/etc/shells文件中

-G GROUP1[,GROUP2,…]:为用户指明附加组,组必须事先存在

-N 不创建私用组做主组,使用users组做主组

-r: 创建系统用户 CentOS 6: ID<500, CentOS 7: ID<1000

默认值设定: /etc/default/useradd文件中

显示或更改默认设置:

useradd -D

useradd –D -s SHELL

默认配置文件

/etc/default/useradd

/etc/skel/*

/etc/login.defs

批量创建用户:

newusers PASSWD.TXT

PASSWD.TXT 的格式必须是/etc/passwd 下面的格式

chpasswd 批量修改用户口令

cat SHADOW.TXT |  chpasswd  

SHADOW.TXT 的格式:

ACCOUNT:明文密码

修改用户属性:

usermod

-u UID: 新UID

-g GID: 新基本组

-G GROUP1[,GROUP2,…[,GROUPN]]]:新附加组,原来的附加组将会被覆盖;若保留原有,则要同时使用-a选项,表示append;

-s SHELL:新的默认SHELL;

-c 'COMMENT':新的注释信息;

-d HOME: 新家目录不会自动创建,原家目录中的文件不会同时移动至新的家目录;若要创建新家目录并移动原家数据,同时使用-m选项

-l login_name: 新的名字;

-L: lock指定用户,在/etc/shadow 密码栏的增加 !

-U: unlock指定用户,将 /etc/shadow 密码栏的 ! 拿掉

-e YYYY-MM-DD: 指明用户账号过期日期;

-f INACTIVE: 设定非活动期限;

chage [OPTION]… LOGIN

-d LAST_DAY

-E, –expiredate EXPIRE_DATE

-I, –inactive INACTIVE

-m, –mindays MIN_DAYS

-M, –maxdays MAX_DAYS

-W, –warndays WARN_DAYS

–l,显示密码策略

下一次登录强制重设密码

chage -d 0 tom

chage -m 0 –M 42 –W 14 –I 7 tom

chage -E 2016-09-10 tom

用户相关的其它命令

chfn 指定个人信息

chsh 指定shell

删除用户:

userdel

-r: 删除用户家目录;

设置用户密码:

passwd

-l:锁定指定用户

-u:解锁指定用户

-e:强制用户下次登录修改密码

-n mindays: 指定最短使用期限

-x maxdays:最大使用期限

-w warndays:提前多少天开始警告

-i inactivedays:非活动期限;

–stdin:从标准输入接收用户密码;

echo "PASSWORD" | passwd –stdin USERNAME

用户组相关信息:

groupadd [OPTION]… group_name

-g GID: 指明GID号; [GID_MIN, GID_MAX]

-r: 创建系统组;

修改和删除组

组属性修改: groupmod

groupmod [OPTION]… group

-n group_name: 新名字

g GID: 新的GID;

组删除: groupdel

groupdel GROUP

更改组密码

组密码: gpasswd

gpasswd [OPTION] GROUP

-a user: 将user添加至指定组中;

-d user: 从指定组中移除用户user

-A user1,user2,…: 设置有管理权限的用户列表

newgrp命令:临时切换基本组;

如果用户本不属于此组,则需要组密码

更改和查看组成员

groupmems [options] [action]

-g, –group groupname 更改为指定组 (只有root)

-a, –add username 指定用户加入组

-d, –delete username 从组中删除用户

-p, –purge 从组中清除所有成员

-l, –list 显示组成员

groups 显示用户组信息

显示用户相关信息:

id 

-g, –group   仅仅显示有效GID

      -G, –groups  显示所有组的GID

-n, –name 

              print a name instead of a number, for -ugG

       -r, –real

              print the real ID instead of the effective ID, with -ugG

       -u, –user

              print only the effective user ID

        finger

原创文章,作者:fighter,如若转载,请注明出处:http://www.178linux.com/28892