Linux系统之用户和组

Linux系统之用户和组

1、什么是用户

用户:资源获取标识符,资源分配,安全权限模型的核心要素之一

2、没有用户,操作系统可否正常执行?

答案是肯定的

在Linux系统上,用户管理是基于用户名和密码的方式进行资源的分配,

Username/UID分为以下类别:

    管理员:root, 0
    普通用户:1-65535
        系统用户:1-499(CENTOS6), 1-999
            对守护进程获取资源进行权限分配
        登录用户:500(CENTOS6)+, 1000+
            交互式登录

Linux组:Groupname/GID

    管理员组:root, 0
    普通组:
        系统组:1-499, 1-999
        普通组:500+, 1000+

Linux组类别

    用户的主要组(主组):
        用户必须属于一个且只有一个主组
        组名同用户名,且仅包含一个用户:私有组
    用户的附加组(辅助组):
        一个用户可以属于零个或多个辅助组

用户在登录时要进行认证,认证成功后要进行资源的分配既授权,还要对资源的使用进行审计,就是我们所熟悉的3A

Authentication 认证
Authorization 授权
Accounting|Audition 审计

进程的安全上下文

进程对文件的访问权限应用模型
    进程的属主(发起者)与文件的属主是否相同;如果相同;则应用属主权限;
    否则,则检查进程的属组(发起者)是否属于文件的属组;如果是,则应用属组权限;
    否则,就只能应用other的权限;

下面来介绍下Linux用户和组的主要配置文件

1、/etc/passwd:用户及其属性信息(名称、UID、主组ID等)

Linux系统之用户和组

从图片上我们可以看到该文件是以":"为分隔符,分为的7个字段。如何知道每个字段的意思呢?

尝试使用man帮助文档:

首先确定该帮助文档在man的那个分段中

[root@centos7 ~]# whatis passwd
passwd (5)   - password file
passwd (1)   - update user's authentication tokens
sslpasswd (1ssl) - compute password hashes

由以上信息可知我们能够使用如下命令查看该文件7个的字段的意思:

[root@centos7 ~]# man 5 passwd

Linux系统之用户和组

man文档已经解释的很详细了,这里我在简单说明一下:

用户名:密码占位符:UID:GID:用户备注信息(多个以,隔开):家目录:默认shell

2、/etc/shadow

首先还是用whatis命令查看简要命令帮助

[root@centos7 ~]# whatis shadow
shadow (3)           - encrypted password file routines
shadow (5)           - shadowed password file

查看man文档

[root@centos7 ~]# man 5 shadow

我可以看到该配置文件的格式和/etc/passwd格式一样,都是用":"分割开的不同字段

 login name:登录名
 encrypted password:加密密码
 date of last password change:最近一次的密码修改时间(距离1970-01-01的时间)
 minimum password age:密码最短使用期限
 maximum password age:密码最长使用期限
 password warning period:警告区间
 password inactivity period:非活动区间
 account expiration date:账号过期期限
 reserved field:预留段

在这里我们简单介绍下加密解密机制

加密方法: 
    对称加密:如果加密、解密使用相同的密码称之为对称加密 DES,3DES,AES 
    非对称加密:DSA,RSA 
    单向加密:雪崩效应,定长输出,不可逆

这里我们着重开下/etc/shadow的第二个字段

格式如下:

$6$abcesd$fkdlagjdkalghio3qu4389qjtrkiejgr 
$6$xyzm./$878956ukijotrjiytoeutyvimyeuiore

$为分隔符

6表示加密算法 查看系统上支持的加密算法可以使用如下方法:

[root@centos7 ~]# sha   //输入sha,按两次TAB自动补全    
sha1sum    sha224sum  sha256sum  sha384sum  sha512sum 
以上分别对应2-6  即6为sha512算法
其中1对应的为md5算法

使用如下命令可以改变默认的加密算法:

[root@centos7 ~]# authconfig --passalgo=sha512(可以更改) --update

abce或xyzm:表示salt

最后一部分表示:加密后的密码

即该字段的整体意义为:$加密算法$8位盐$乱码

一个小的知识点

密码的复杂性策略

使用数字、大写字母、小写字母及特殊字符中至少3种

足够长

使用随机密码(没有规律的、非脑残的密码)

定期更换,不要使用最近曾经使用过的面

3、/etc/group

[root@centos7 ~]# whatis group
group (5)            - user group file

[root@centos7 ~]# man 5 group

Linux系统之用户和组

4、/etc/gshadow

[root@centos7 ~]# man gshadow

group name:It must be a valid group name, which exist on the system.
encrypted password
administrators
       It must be a comma-separated list of user names.
       Administrators can change the password or the members of the group.
       Administrators also have the same permissions as the members (see below).
 members
       It must be a comma-separated list of user names.
       Members can access the group without being prompted for a password.
       You should use the same list of users as in /etc/group.

对于Linux下的用户和组所涉及到的基本文件已经介绍完了,下面我们来介绍常用命令:

vipw和vigr:相当于用vim打开上述的四个文件进行编辑

[root@centos7 ~]# man vipw
[root@centos7 ~]# vipw /etc/passwd
[root@centos7 ~]# vipw -s /etc/shadow
[root@centos7 ~]# man vigr
[root@centos7 ~]# vigr /etc/group
[root@centos7 ~]# vigr -s /etc/gshadow

pwck和grpck:检查上述文件的正确性

[root@centos7 ~]# pwck
user 'ftp': directory '/var/ftp' does not exist
user 'avahi-autoipd': directory '/var/lib/avahi-autoipd' does not exist
user 'saslauth': directory '/run/saslauthd' does not exist
user 'pulse': directory '/var/run/pulse' does not exist
user 'gnome-initial-setup': directory '/run/gnome-initial-setup/' does not exist
pwck: no changes
[root@centos7 ~]# grpck

useradd[options] LOGIN
    -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
[root@centos7 ~]# useradd -D
GROUP=100
HOME=/home
INACTIVE=-1
EXPIRE=
SHELL=/bin/bash
SKEL=/etc/skel
CREATE_MAIL_SPOOL=yes
[root@centos7 ~]# man useradd
-b, --base-dir BASE_DIR
-e, --expiredate EXPIRE_DATE
-f, --inactive INACTIVE
-g, --gid GROUP
-s, --shell SHELL

usermod[OPTION] login

-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: 设定非活动期限;

userdel[OPTION]... login
   -r: 删除用户家目录;

passwd[OPTIONS] UserName: 修改指定用户的密码,仅root用户权限
passwd: 修改自己的密码;
常用选项:
-l:锁定指定用户
-u:解锁指定用户
-e:强制用户下次登录修改密码
-n mindays: 指定最短使用期限
-x maxdays:最大使用期限
-w warndays:提前多少天开始警告
-i inactivedays:非活动期限;
--stdin:从标准输入接收用户密码;
echo "PASSWORD" | passwd--stdinUSERNAME

chage[OPTION]... LOGIN
-d LAST_DAY
-E, --expiredateEXPIRE_DATE
-I, --inactive INACTIVE
-m, --mindaysMIN_DAYS
-M, --maxdaysMAX_DAYS
-W, --warndaysWARN_DAYS
–l,显示密码策略
下一次登录强制重设密码
    chage -d 0 tom
    chage -m 0 –M 42 –W 14 –I 7 tom
    chage -E 2016-09-10 tom

groupadd[OPTION]... group_name
-g GID: 指明GID号;[GID_MIN, GID_MAX]
-r: 创建系统组;
    CentOS 6: ID<500
    CentOS 7: ID<1000

组属性修改:groupmod
groupmod[OPTION]... group
-n group_name: 新名字
-g GID: 新的GID;


组删除:groupdel

    groupdelGROUP


组密码:gpasswd
gpasswd[OPTION] GROUP
-a user: 将user添加至指定组中;
-d user: 从指定组中移除用户user
-A user1,user2,...: 设置有管理权限的用户列表


newgrp命令:临时切换基本组;
   如果用户本不属于此组,则需要组密码
    临时切换指定的组为基本组

groupmems[options] [action]
options:
-g, --group groupname更改为指定组(只有root)
Actions:
-a, --add username 指定用户加入组
-d, --delete username 从组中删除用户
-p, --purge 从组中清除所有成员
-l, --list 显示组成员列表

groups [OPTION].[USERNAME]… 查看用户所属组列表

[root@centos7 ~]# groups user1
user1 : user1 root new_mygrp
        主组  附加组

批量添加用户及其密码

user.txt
user1:x:10001:10001::/testdir/user1:/bin/csh
user2:x:10002:10002::/testdir/user2:/bin/tcsh
user3:x:10003:10003::/testdir/user3:/bin/bash

[root@centos7 ~]# newusers user.txt
[root@centos7 ~]# tail -3 /etc/passwd
user1:x:10001:10001::/testdir/user1:/bin/csh
user2:x:10002:10002::/testdir/user2:/bin/tcsh
user3:x:10003:10003::/testdir/user3:/bin/bash

passwd.txt
user1:123456
user2:redhat
user3:centos

[root@centos7 ~]# cat passwd.txt | chpasswd
[root@centos7 ~]# tail -3 /etc/shadow
user1:$6$bAKS54WgOC56WH$4vgt7VIkIqTzsZyDKt1s55oBGY04XRjuF8MHwsslt.9WuRzIJE/eLIPQhvwEKxPYQ84x6lF3gjE7HWQlpbm8i.:17017:0:99999:7:::
user2:$6$N27Zc/GayA$jYZqMIo58RnwnIP5ytiwyHONn1VxEGRZZNEYzu7x392zgnZa2aTpH9c2oVcr/W0Uo7X8oJU/DRlaQI63SLYTq1:17017:0:99999:7:::
user3:$6$UUFRnwBEJe$0yyxVFkxSxhRk40TDT/j6NfxwP7a/jPQnEhku/8Nqns42II6fNouiEi/GheQwTVJcDBWaYb4qePWy7qquhPVV.:17017:0:99999:7:::

注:新建用户的相关文件
/etc/default/useradd
/etc/skel/*
/etc/login.defs

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

(0)
sixijiesixijie
上一篇 2016-08-04 14:25
下一篇 2016-08-04 14:39

相关推荐

  • Linux程序包管理rpm、yum、源码编译

    概述:     众所周知,Linux操作系统本身,必须要借助额外的一些软件,才能完成某些应用的,操作系统如果没有应用程序的填充,就无法创造出生产力,这样即使再完美的操作系统,也毫无用处。那么本章就简要介绍一下Linux系统上对程序包的管理,分为以下三个部分:     1、程序包的…

    Linux干货 2016-08-24
  • Linux之bash shell脚本编程入门篇(一)

    什么是bash shell脚本编程? 答:Linux里面有多种shell,而CentOS和redhat的默认shell是bash shell。至于shell脚本,这个跟windows操作系统里面的批处理文件有点像(.bat的文件)。不知道大家还是否记得Linux的哲学思想吗?其中有那么两点点:由众多目的的单一应用程序组成:一个程序只做一件事,且做好;组合目的…

    Linux干货 2016-08-15
  • Shell 位置参数总结

    描述: 位置参数指的是shell脚本的命令行参数,同时也表示shell函数的额函数参数。 说明: 示例: #!/bin/sh echo "number:$#"     # 传给脚本的参数个数 echo "scname:$0" &n…

    Linux干货 2016-08-16
  • ACL权限实例详解

    CentOS7当中,无论是操作系统安装时还是之后手工创建的文件系统(xfs、ext4)均会开启ACL功能。 CentOS6及之前的版本,仅操作系统安装时创建的文件系统才会默认开启ACL,手工创建的文件系统,需要手工开启ACL 功能。 Acl如何设置 创建分区 mount -o acl /dev/sda7  取消的方式,重新挂载时不指定即可 tune…

    2017-07-29
  • 2016 10 19 第5天作业

    20161019第5天作业 软链接和硬链接的区别 硬链接 ①硬链接文件不能跨分区创建 ②一个硬链接文件的删除不影响其他链接的访问 ③链接文件指向的源文件被删除后,链接文件还能正常访问源文件的数据 ④硬链接的文件类型是 –  普通文件 ⑤硬链接和源文件的属性(大小,权限,时间戳,Inode号)相同 ⑥硬链接不能对目录创建 ⑦创建硬链接会增…

    Linux干货 2016-10-20
  • HAProxy 入门及基础负载应用

    A、首介 。。。         HAProxy——开放源代码软件,是一款代理服务器和伪4层的负载均衡软件解决方案。基于TCP(第四层)和HTTP(第七层)应用的代理软件,支持高并发链接,它的工作模式可以将其简单而安全地整合到当前的服务架构中,同时可以保护你的WEB服务器不暴露到…

    Linux干货 2017-05-17