用户和权限管理

一、用户

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

(0)
上一篇 2016-08-05 16:16
下一篇 2016-08-05 16:16

相关推荐

  • lvm基本应用

    前言 一种技术要知其然,还要知其所以然 lvm简介 LVM是 Logical Volume Manager(逻辑卷管理)的简写,它是Linux环境下对磁盘分区进行管理的一种机制。普通的磁盘分区管理方式在逻辑分区划分好之后就无法改变其大小,当一个逻辑分区存放不下某个文件时,这个文件因为受上层文件系统的限制,也不能跨越多个分区来存放,所以也不能同时放到别的磁盘上…

    Linux干货 2016-05-21
  • shell中的if else语句与文件查找find浅析

    shell中的if else语句与文件查找find浅析    上篇文章中我们讲述了shell脚本编程的初步入门,其中讲到了shell编程中的顺序执行,顺序执行时一种简单的小脚本,如果在编辑脚本的时候遇到要做出条件判断执行的时候要怎么办呢?我们学习过if之后你会发现这会很简单。if 语句通过关系运算符判断表达式的真假来决定执行哪个分支。 S…

    Linux干货 2016-08-16
  • tcpdump输出详解

    在这里不得不再吐槽下国内整个IT粗糙浮躁,度娘下来的中文文档几尽抄袭~google下来的文档英文文档质量远高于国内中文文档.用ie或没有安装插件的浏览器访问,不然可能会有其它访问请求数据干扰分析 IP数据包结构 TCP数据包结构 // tcpdump需root权限 # tcpdump -x -i eth1 i…

    Linux干货 2015-04-15
  • gawk基础

    gawk程序是Unix中原始awk程序的GNU版本。gawk程序让流编辑器迈上了一个新的台阶,它提供了一种编程语言而不只是编辑器命令。在gawk编程语言中,可以完成下面的事情: (1)定义变量来保存数据; (2)使用算数和字符串操作符来处理数据; (3)使用结构化编程概念(比如if-then语句和循环)来为数据处理增加处理逻辑; (4)通过提取数据文件中的数…

    Linux干货 2017-05-22
  • 正则表达式

         正则表达式是由一类特殊字符所编写的模式,通过这些字符的使用,我们能检索 查找文本中符合某些规则的内容。 正则表达式元字符的分类有:字符匹配,匹配次数,位置锚定,分组等。      字符匹配:      . : 匹配任意单个字符     &n…

    Linux干货 2017-04-06
  • linux内核及系统启动流程

    Linux内核 内核概述 如图,最上面是用户空间(User Space),是用户程序执行的地方;用户空间之下是内核空间(Kernel Space),内核位于此。基于此,GUN C Library(glibc)提供了连接内核的系统调用接口,还提供了在用户空间应用程序和内核之间进行转换的机制,因为内核空间和用户空间的应用程序使用的是不同的保护地址空间。用户空间的…

    Linux干货 2016-08-08