用户和组管理

一:Linux安全模型

安全3A认证

  1. Authentication:认证
  2. Authorization:授权
  3. Accouting|Audition:审计

令牌:token,identity

令牌是授予用户权限的,如果修改的用户的令牌,用户必须重新登录才能获取新令牌

安全上下文

安全上下文指的是一类定义某个进程允许做什么的许可和权限的集合,以进程发起者的身份运行,进程所能够访问资源的权限取决于进程的运行者的身份

加密

单向加密:

  • 不可逆:相同算法定长输出,获得密文不可逆推出原始数据
  • 雪崩效应:初始条件的微小改变,引起结果的巨大改变

加密算法:

  • md5: message digest, 128bits
  • sha1: secure hash algorithm, 160bits
  • sha224: 224bits
  • sha256: 256bits
  • sha384: 384bits
  • sha512: 512bits

更改加密算法:

authconfig --passalgo=sha256 --update

密码复杂性策略

  • 使用数字、大写字母、小写字母及特殊字符中至少3种
  • 足够长
  • 使用随机密码
  • 定期更换,不要使用最近曾经使用过的密码

密码期限

二:用户

用户的分类

root用户(超级管理员):UID=0的用户为超级用户,拥有系统的最大权限

普通用户:UID范围1-60000

系统用户:是程序服务运行的用户,UID范围在1-499(CentOS6.x)、1-999(CentOS7.x),系统用户通常没有登录shell的权限

登录用户:UID范围在500|1000-60000+,用于交互式登录

用户管理命令

useradd 创建用户

  • -u:指定uid
  • -g:指定gid为主组
  • -G:指定附加组
  • -o:不检查uid唯一性,结合-u使用
  • -c:添加描述信息
  • -d:指定家目录
  • -s:指定默认shell
  • -N:不创建主组,并且加入users组为主组
  • -r:创建系统用户
  • -m:创建系统用户时强制创建家目录,结合-r使用
  • -M:创建登录用户时不创建家目录
  • -D:修改/etc/default/useradd文件
    • -s SHELL
    • -b HOME
    • -g GROUP

usermod 修改用户

  • -u:修改uid
  • -g:修改gid
  • -G:修改附加组,结合-a可以追加附加组
  • -s:修改默认shell
  • -c:修改描述信息
  • -d:修改家目录,结合-m可以搬家
  • -l:修改用户名
  • -L:锁定账户
  • -U:解锁账户,在新系统上不支持对空密码用户解锁
  • -e YYYY-MM-DD:设置账户过期时间
  • -f INACTIVE:设定非活动期限

userdel 删除用户

  •  -r:删除用户时连家目录一并删除

id 查看用户信息

  • -u:查看uid
  • -g:查看gid
  • -G:查看用户所属的组的ID
  • -n:显示名称,配合-ugG使用

su 切换用户

  • su USERNAME 非完全切换,部分变量还是原用户的变量
  • su - USERNAME 完全切换,相当于重新登录
  • su [-] USERNAME -c 'CMD' 登录到新用户执行CMD命令后返回旧用户

passwd 修改用户密码

  • -d:删除指定用户名密码
  • -l:锁定用户密码 == usermod -L
  • -u:解锁用户密码 == usermod -U
  • -e:强制用户下次登录必须修改密码
  • -f:强制操作
  • -n MINDATS:最短使用期限
  • -x MAXDAYS:最长使用期限
  • -w WARNDAYS:提前多少天警告
  • -i INACTIVEDAYS:非活动期限
  • --stdin 从标准输入接受用户密码,如:echo "user1" | passwd --stdin user1 修改user1用户的密码为user1

chage 修改用户密码默认策略 /etc/login.defs

  • -d LAST_DAY
  • -E --expiredate EXPIRE_DATE
  • -I --inactive INACTIVE
  • -m --mindays MIN_DAYS
  • -M --maxdays MAX_DAYS
  • -W --warndays WARN_DAYS
  • –l 显示密码策略
exp:
[root@centos6 ~]# chage -d 0 user1 [root@centos6 ~]# chage -m 0 -M 42 -W 14 -I 7 user1 [root@centos6 ~]# chage -E 2018-09-10 user1 [root@centos6 ~]# chage -l user1 Last password change : password must be changed Password expires : password must be changed Password inactive : password must be changed Account expires : Sep 10, 2018 Minimum number of days between password change : 0 Maximum number of days between password change : 42 Number of days of warning before password expires : 14

newusers /etc/passwd格式的文件  用于批量创建用户

chpasswd  PASSWORD文件 批量修改口令,文件格式为 用户名:密码 一一对应

三:组

组的分类

管理员组:root, 0

普通组:

系统组:1-499, 1-999(CentOS7.x)

普通组:500+, 1000+(CentOS7.x)

组的类别

主组:用户的主要组,用户必须属于一个且只有一个主要组

私有组:组名同用户名,且仅包含一个用户为私有组,创建用户时如不加参数默认会创建一个主组也是私有组

附加组:一个用户加入到其他组中,但不是用户的主组,这些组叫做用户的附加组

组管理

groupadd 创建组

  • -g:指定创建组的GID
  • -r:创建系统组

groupmod 修改组

  • -n:修改组名
  • -g:修改新的组GID

groupdel 删除组

gpasswd 修改组密码

-a:将用户添加到指定组

-d:将用户从指定组删除

-A:设置有管理权限的用户列表

newgrp 临时切换主组,如果用户不在此组中则需要密码,否则不需要

groupmems 管理和查看组成员

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

groups 查看用户所属组列表

四:相关的配置文件

config:FILE

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

7个字段:

  1. login name:登录用名(wang)
  2. passwd:密码 (x)
  3. UID:用户身份编号 (1000)
  4. GID:登录默认所在组编号 (1000)
  5. GECOS:用户全名或注释
  6. home directory:用户主目录 (/home/wang)
  7. shell:用户默认使用shell (/bin/bash)
[root@centos6 ~]# cat /etc/passwd
root:x:0:0:dongfei,it,11101,131312221:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin

/etc/group:组及其属性信息

4个字段:

  1. 群组名称:就是群组名称
  2. 群组密码:通常不需要设定,密码是被记录在 /etc/gshadow
  3. GID:就是群组的 ID
  4. 以当前组为附加组的用户列表(分隔符为逗号)
[root@centos6 ~]# cat /etc/group
root:x:0:gentoo,user11
bin:x:1:bin,daemon,gentoo,user11

/etc/shadow:用户密码及其相关属性

9个字段:

  1. 登录用名
  2. 用户密码:一般用sha512加密
  3. 从1970年1月1日起到密码最近一次被更改的时间
  4. 密码再过几天可以被变更(0表示随时可被变更)
  5. 密码再过几天必须被变更(99999表示永不过期)
  6. 密码过期前几天系统提醒用户(默认为一周)
  7. 密码过期几天后帐号会被锁定
  8. 从1970年1月1日算起,多少天后帐号失效
  9. 保留字段
[root@centos6 ~]# cat /etc/shadow
root:$6$9MvILiAieGOcghCi$2/ZmaouQQZLQPJNPlaVNUmsAijd34JJIPnR4OPiTTyTTo8bkdPAoFDvo5V/Lni1i1hiAyLdRe7tylR2PfZNsM.:17622:0:99999:7:::
bin:*:17622:0:99999:7:::

/etc/gshadow:组密码及其相关属性

4个字段:

  1. 群组名称:就是群组名称
  2. 群组密码:
  3. 组管理员列表:组管理员的列表,更改组密码和成员
  4. 以当前组为附加组的用户列表:(分隔符为逗号)
[root@centos6 ~]# cat /etc/gshadow
root:::gentoo,user11
bin:::bin,daemon,gentoo,user11

/etc/skel:家目录模板文件

[root@centos6 ~]# ls -a /etc/skel/
.  ..  .bash_logout  .bash_profile  .bashrc  .gnome2  .mozilla

/etc/default/useradd 创建用户默认配置文件

[root@centos6 ~]# cat /etc/default/useradd
# useradd defaults file
GROUP=100           #users组ID
HOME=/home           #家目录位置
INACTIVE=-1           #非活动时间不限定
EXPIRE=
SHELL=/bin/bash        #创建用户时默认shell SKEL=/etc/skel        #家目录模板目录 CREATE_MAIL_SPOOL=yes    #是否创建邮箱

/etc/login.defs 配置用户密码策略

[root@centos6 ~]# cat /etc/login.defs 
#
# Please note that the parameters in this configuration file control the
# behavior of the tools from the shadow-utils component. None of these
# tools uses the PAM mechanism, and the utilities that use PAM (such as the
# passwd command) should therefore be configured elsewhere. Refer to
# /etc/pam.d/system-auth for more information.
#

# *REQUIRED*
#   Directory where mailboxes reside, _or_ name of file, relative to the
#   home directory.  If you _do_ define both, MAIL_DIR takes precedence.
#   QMAIL_DIR is for Qmail
#
#QMAIL_DIR      Maildir
MAIL_DIR        /var/spool/mail      #创建邮箱目录
#MAIL_FILE      .mail

# Password aging controls:
#
#       PASS_MAX_DAYS   Maximum number of days a password may be used.
#       PASS_MIN_DAYS   Minimum number of days allowed between password changes.
#       PASS_MIN_LEN    Minimum acceptable password length.
#       PASS_WARN_AGE   Number of days warning given before a password expires.
#
PASS_MAX_DAYS   99999            #密码最大有效期,300年
PASS_MIN_DAYS   0              #密码最短有效期
PASS_MIN_LEN    5              #密码最短长度
PASS_WARN_AGE   7              #密码警告期限

#
# Min/max values for automatic uid selection in useradd
#
UID_MIN                   500       #登录用户的UID范围 500-60000
UID_MAX                 60000

#
# Min/max values for automatic gid selection in groupadd
#
GID_MIN                   500        #登录用户的GID范围 500-60000
GID_MAX                 60000

#
# If defined, this command is run when removing a user.
# It should remove any at/cron/print jobs etc. owned by
# the user to be removed (passed as the first argument).
#
#USERDEL_CMD    /usr/sbin/userdel_local

#
# If useradd should create home directories for users by default
# On RH systems, we do. This option is overridden with the -m flag on
# useradd command line.
#
CREATE_HOME     yes          #是否创建家目录

# The permission mask is initialized to this value. If not specified, 
# the permission mask will be initialized to 022.
UMASK           077

# This enables userdel to remove user groups if no members exist.
#
USERGROUPS_ENAB yes

# Use SHA512 to encrypt password.
ENCRYPT_METHOD SHA512         #默认加密算法

MD5_CRYPT_ENAB no

用户相关文件操作命令

vipw  ==  vi /etc/passwd

vigr  ==  vi /etc/group

pwck 检查passwd文件的配置

grgck 检查group文件的配置

pwunconv 将加密密码在passwd文件中显示

pwconv 将passwd文件中的密码位显示为x

chfn 为用户添加描述信息

finger 查看用户的描述信息

chsh -s SHELL 修改用户的默认登录shell

欢迎大家共同交流学习~

原文地址:https://www.cnblogs.com/L-dongf/p/8707607.html