用户组和权限管理(一)

一、杂项知识整理

1、tee命令:从标准输入读取送至标准输出并保存到文件中,也可以发送至管道:

    [root@localhost testdir]# cat /etc/issue | tee /testdir/tee.txt     
    CentOS 7.2 
    Kernel \r on an \m
    [root@localhost testdir]# cat tee.txt 
    CentOS 7.2 
    Kernel \r on an \m
    [root@localhost testdir]# cat /etc/issue | tee tee.txt  |  tr 'a-z' 'A-Z'
    CENTOS 7.2 
    KERNEL \R ON AN \M

2、用户标识:UID:十六位二进制数字 0-65535

    管理员为0 普通用户为1-65534

        系统用户1-499(centos6)1-999(centos7)

        登录用户 500-6w         1000-6w

    同一个UID可以有多个用户

3、加密算法:

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

    非对称加密,加密和解密使用一对密钥

        公钥  私钥

    单向加密,只能加密不能解密:提取数据特征码

        定长输出:

        雪崩效率:初始条件微小改变,记过发生巨大改变

            echo “asdfasdf” | md5sum/sha512sum        

    [root@localhost testdir]# echo "sadf" | md5sum     
    26c30bbc936c12d60c8befb0a5bea194  -
    [root@localhost testdir]# echo "sadf" | sha512sum
    537ba4bac71e332b3ef10dc82b67f11f14f7a9ffc2399c6401a52d9ed20372e290a3c06efd8177195b5ad    814dc6f5017f
    acbabe218f61c83ee5518180eb5d497  -

    算法:

        MD5:message digest,128bits

        sha1:secure hash algorithm,160bits

        sha 224 256

        sha 384 512等等

    在计算时加salt,添加的随机数

4、/etc/passwd 文件格式如下

    name:passwd:UID:GID:GECOS:Directory:shell  

    zhangsan:x:1001:1001::/home/zhangsan:/bin/bash

    passwd:可以是加密的密码,也可以是占位符x

    GECOS:用户注释信息

    directory:家目录

    shell:用户默认shell

    /etc/shadow文件格式:

    用户名:算法和加密密码(一般用sha512加密):最近一次修改时间(从1970年到密码最近一次被更改的天数):最短使用期限(密码再过几天可以被更改,0表示随时):最长使用期限:警告期(过期之前提前警告):过期期限:保留字段

    zhangsan:$6$xcuKLAdE$DGFJeE2Qy5XubtEorWiI5oDPwmankBTnqayZdomdeddxKNKK7O55Yul6c3mnTHP58rc5TqXh1mj8/3atvdrtm0:17008:0:99999:7:::
    shiting:!!:17008:0:99999:7:::

    shiting用户的算法和密码为!!,说明此用户没有设置密码。两个叹号都去掉之后可以无密码登录,否则不可用。usermod -L USER此命令就是在用户密码上加!,即锁定用户,使之无法登陆,本身有无密码皆可操作,usermod -U USER 解锁用户。

    /etc/group 组信息库

    group_name:passwd:GID:user_list(该组的用户成员,以此组为附加组的用户的用户列表)

5、两个命令:pwconv和pwunconv:将passwd中的密码转换到shadow中显示。将shadow中的密码显示在passwd中。

注意:四个用户和组子相关文件是:/etc/passwd /etc/shadow /etc/group /etc/gshadow。没有gpasswd这个文件。

6、finger命令:用于显示用户的相关信息:用户名,用户全名,终端设备号和登录时间等信息:

    [root@localhost testdir]# finger root    
    Login: root           Name: root
    Directory: /root                    Shell: /bin/bash
    On since 六 7月 30 17:40 (CST) on tty1    42 seconds idle
    On since 六 7月 30 11:30 (CST) on pts/0 from 172.18.16.71
       2 seconds idle
    Mail last read 六 7月 30 13:00 2016 (CST)
    No Plan.


二、命令详解及事例

1、id命令:显示用户的真是和有效id信息

    用户名 显示uid gid等信息

    -u 只显示有效用户uid

    -g 显示用户的基本组id

    -G 显示用户所属的所有组id

    -n 显示名称而非id,例如ng则是显示id和名字

    [root@localhost testdir]# id postfix    
    uid=89(postfix) gid=89(postfix) 组=89(postfix),12(mail)
    [root@localhost testdir]# id -u shiting
    1003
    [root@localhost testdir]# id -g shiting
    1003
    [root@localhost testdir]# id -G shiting
    1003
    [root@localhost testdir]# id -n shiting
    id: 以默认格式无法只显示名称或只显示真实ID。

2、chage命令:修改账号和密码的有效期限:

    下一次登录强制重新设置密码

        chage -d 0 USER

    [root@localhost ~]# chage -l  user6    
    最近一次密码修改时间:8月 03, 2016
    密码过期时间:从不
    密码失效时间:从不
    帐户过期时间:从不
    两次改变密码之间相距的最小天数:0
    两次改变密码之间相距的最大天数:99999
    在密码过期之前警告的天数:7
    [root@localhost ~]# chage -m 0 -M 42 -W 14 -I 7 user6 
    [root@localhost ~]# chage -l user6
    最近一次密码修改时间:8月 03, 2016
    密码过期时间:9月 14, 2016
    密码失效时间:9月 21, 2016
    帐户过期时间:从不
    两次改变密码之间相距的最小天数:0
    两次改变密码之间相距的最大天数:42
    在密码过期之前警告的天数:14

    -m 密码可更改的最小天数。

    -M 密码保持有效的最大天数

    -W 用户密码到期前,题前收到警告信息的天数

    -E 账号到期的日期,过了这天,账号将不再可用

    -d 上次更改的日期

    -I 停滞时期,如果一个密码已过期这些天,那么此账号将不可用

    -h 帮助信息

    -l 列出当前的设置,由非特权用户来确定他们的密码或账号何时过期

    [gejingyi@localhost ~]$ chage -l gejingyi    
    最近一次密码修改时间:7月 30, 2016
    密码过期时间:从不
    密码失效时间:从不
    帐户过期时间:2月 12, 1970
    两次改变密码之间相距的最小天数:0
    两次改变密码之间相距的最大天数:99999
    在密码过期之前警告的天数:7
   [root@localhost testdir]# chage -l gejingyi
    最近一次密码修改时间					:7月 29, 2016
    密码过期时间					:12月 11, 2017
    密码失效时间					:12月 18, 2017
    帐户过期时间						:5月 05, 2018
    两次改变密码之间相距的最小天数		:50
    两次改变密码之间相距的最大天数		:500
    在密码过期之前警告的天数	:7

    更改时间用时间段,更改日期用准确日期TTTT-MM-DD;也可以通过更改配置文件保证之后创建的用户都按照参数设置为准:文件有两个,一个是/etc/login.defs:

    PASS_MAX_DAYS99999    
   PASS_MIN_DAYS0
   PASS_MIN_LEN5
   PASS_WARN_AGE7
   #
   # Min/max values for automatic uid selection in useradd
   #
   UID_MIN                  1000
   UID_MAX                 60000
   # System accounts
   SYS_UID_MIN               201
   SYS_UID_MAX               999
   #
   # Min/max values for automatic gid selection in groupadd
   #
   GID_MIN                  1000
   GID_MAX                 60000
   # System accounts
   SYS_GID_MIN               201
   SYS_GID_MAX               999

    一个为/etc/default/useradd:

    [root@localhost testdir]# cat /etc/default/useradd    
   # useradd defaults file
   GROUP=100
   HOME=/home
   INACTIVE=-1
   EXPIRE=42
   SHELL=/bin/bash
   SKEL=/etc/skel
   CREATE_MAIL_SPOOL=yes 

    其中第二个文件也为我们使用useradd命令添加新用户时进行默认配置,包括shell类型和默认邮箱建立以及家目录位置等,我们可以在此修改参数来更改useradd命令使用时的默认配置。


三、课后作业及练习

见下篇