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:39
下一篇 2016-08-04 14:39

相关推荐

  • 简单易懂的CentOS启动流程

    在使用Linux操作系统时,我们只需要按下电源键,等待一会儿,登录终端就呈现在我们眼前,在这段时间内,操作系统究竟做了哪些事情? 先上一张流程梗概图,你会对启动流程有个大致的了解 启动流程详解 POST加电自检   主板在接通电源后,系统首先由POST程序来对CPU、主板、内存、硬盘子系统、显示子系统串并行接口、键盘、CD-ROm光驱等硬件进行检测 读取MB…

    Linux干货 2016-09-11
  • M20 – 1- 第二周博客(2):Linux的常用命令与通配符

    1、Linux的常用命令 pwd 命令 简介: Print the name of the current working directory. 格式: pwd [-LP] 实例1 [root@centos6 local]# pwd  &n…

    Linux干货 2016-08-03
  • openssl基础应用

    参考http://www.178linux.com/2704 http://www.williamlong.info/archives/837.html 一、前言 什么是openssl?讲openssl之前我们先了解下什么是ssl?ssl是secure socket layer的简称,其使用对称加密解密,非对称加密解密(公钥加密解密),单向加密解密结合证书实…

    Linux干货 2015-09-27
  • 虚拟机的安装

    虚拟机的安装步骤: 1、打开VMware点击创建新的虚拟机 2、选择典型安装方式点击下一步 3、选择稍后安装操作系统点击下一步 4、客户机操作系统选择Linux,版本选择Centos 64位 5、设定虚拟机的名称及存放路径 6、设定磁盘的容量,选中将虚拟磁盘存储为单个文件 7、对虚拟设备进行设置 8、CD/DVD此项选中使用ISO映像文件并选择映像所在路径 …

    2018-03-27
  • 计算机的组成及其功能

    1.计算机的组成及其功能 1.1计算机的硬件基本结构 从ENIAC到当前最先进的计算机都采用的是冯·诺依曼体系结构分别是:控制器,运算器,存储器,输入与输出设备 控制器:将指令逐条从存储器中取出,经译码分析后向全机发出相应         的操作控制信号作用于其他部件,使各部件有…

    Linux干货 2016-10-28
  • lvm基本应用

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

    Linux干货 2016-05-21