linux 用户和组

1、linux 用户和组

1.1 安全 3A

  资源分派:

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

1.2 令牌(token)

用户一登录成功系统分配令牌 token,用户凭借该令牌访问该令牌可以访问的文件,用户想要得到最新的令牌必须重新登录

1.3 Linux UID与GID

Linux 用户:Username/UID  Linux 组:Groupname/GID

#Linux 用户:
用户管理员:root,UID=0
普通用户 UID:1-65535
    系统用户 UID:1-499(centos6),1-999(centos7)
        系统用户:对守护进程获取资源进行权限分配
    登录用户:500+(centos6),1000+(centos7)

#Linux 组:
组管理员:root,GID=0
系统组 GID:1-499(centos6),1-999(centos7)
普通组 GID:500+(centos6),1000+(centos7)

1.4 Linux 安全上下文

  运行中的程序:进程(process)

  以进程发起者的身份运行:当用户执行程序的时候,用户的身份是程序的一个发起者即上下文:context(运行此程序的用户身份,用户组身份)

  进程所能访问资源的权限取决于进程的运行者身份

1.5 Linux 组的类别

用户账号可以属于组1 组2 组3,权限为三组累加权限

(1)用户的主要组(primary group)

  用户必须属于一个且只有一个主组

  组名同用户名,且仅包含一个用户,私有组

(2)用户的附加组(supplementary group)

    一个用户可以属于零个或多个辅助组

1.6 Linux 用户和组的主要配置文件

(1)/etc/default/useradd:与创建用户默认属性值(属于组、配置文件(/etc/skel/)…)有关

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

用户 :密码 :UID :GID :描述信息 :家目录 :shell 类型
    密码处使用 X 占位,使用命令 pwunconv 显示密码,使用命令 pwconv 占位
    使用命令 chfn <用户名> 添加描述信息;使用 finger <用户名> 查看用户信息
    如果要更改家目录,不只是要更改家目录还要更改配置,给更改的用户家目录权限 cp -r /etc/skel/.[^.]* /[用户新家目录]
    支持的 shell 类型:/etc/shells;使用 chsh -s /bin/sh 账号名 更改 shell 类型
    /sbin/nologin:不能登录,一般给服务使用

(3)/etc/group:组及其属性信息

gpasswd [用户名] 设置组口令
普通用户可以自己加入组(前提:得知道该组的口令)     # 不建议

newgrp [组名] 输入密码,加入该组,加入后加入组临时成为主组,如果已经在该组里面使用 newgrp 暂时切换主组

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

用户名 :加密后的口令 :更改口令的时间 :口令最短更改期 :口令过期日期 :密码警告时间 :密码禁用期 :账户过期日期:保留字段
#在/etc/login.defs 更改默认口令有效期

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

root :口令(!锁定):组长:组成员(和 group 最后一个字段相同)

(6)文件操作:vipw 和 vigr(具有语法检查功能) pwck 和 grpck(检查格式)

1.7 Linux 用户管理命令

创建用户默认值设定在:/etc/default/useradd 中

#增加
useradd
#修改
usermod
#删除
userdel
#创建用户
useradd命令参数:   
-o  # 配合-u,不检查 UID 的唯一性   -g  # GID:指明用户所属基本组,可为组名,也可以为 GID   -c  # 用户的注释信息   -d  # 以指定的路径(不存在)为家目录   -s  # 指明用户的默认 shell 程序   -G  # 为用户指明附加组,组必须事先存在   -N  # 不创建私有组做主组,使用 users 组做主组   -r  # 创建系统用户 CentOS6:ID<500,CentOS7:ID<1000   -m  # 创建家目录,用于系统用户   -M  # 不创建家目录,用于非系统用户 useradd -D   # 显示默认设置 useradd -D -s shell  # 更改 shell useradd -D -b BASE_DIR  # 更改 BASE_DIR useradd -D -g GROUP  # 更改 GROUP 
#修改用户
usermod [OPTION] login   -u UID:新 UID   -g GID:新 GID   -G :新附加组,原来的附加组被覆盖,若要保留同时使用-a 选项   -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 -r login # 顺便删除家目录
# 只显示该用户的相关信息(/etc/passwd
getent
passwd [用户名]
#修改指定用户的密码
passwd [OPTIONS] login
  -d    #删除指定用户密码
  -l    #锁定指定用户
  -u    #解锁指定用户
  -e    #强制用户下次登录修改密码
  -f    #强制操作
  -n mindays    #指定最短使用期限
  -x maxdays    #最大使用期限
  -w warndays    #提前多少天开始警告
  -I inactivedays #非活动期限
  -stdin          #从标准输入接收用户密码
     echo “password” | passwd --stdin username

  用户管理之批量创建用户:

    方法一:复制 /etc/passwd 中的用户信息,追加至 users.txt 文件里,通过newusers users.txt 批量创建用户(不限终端,跨终端使用 scp 远程拷贝再批量创建)

    方法二:shell 脚本之 for 循环实现

  用户管理之批量修改口令:

    方法一:追加多个 "用户名:密码" 至 passwd.txt 文件,cat passwd.txt | chpasswd 批量修改密码

    方法二:shell 脚本之 for 循环实现

  用户管理之切换用户身份:

su user_name    #不会改变当前工作目录以及HOME,SHELL,USER,LOGNAME。
su - user_name  #改变身份时,也同时变更工作目录,以及HOME,SHELL,USER,LOGNAME。也更改PATH变量。

1.8 Linux 组账号维护命令

#增加
groupadd
#修改
groupmod
#删除
groupdel
#创建组
groupadd [OPTION]… group_name
   -g GID:指定 GID
   -r 创建系统组(CentOS6:ID<500 CentOS7:ID<1000#修改组
groupmod [OPTION]… group_name
   -n group_name:新名字
   -g GID:新 GID

#删除组(主组不能直接删,附加组可以)
groupdel group_name
#添加或移除至指定组
gpasswd [OPTION] GROUP
   -a user   #将 user 添加至指定组中
   -d user  #从指定组中移除用户 user
   -A user1,user2,… #设置有管理权限的用户列表
newgrp          #临时切换主组,如果用户不属于此组,则需要组密码
groupmems -l -g 组名        # 查看组成员
groupmems -a 用户名 -g 组名  # 往组里添加用户(删除-d 全清-p)
groups 用户名    # 查用户属于哪个组

1.8 密码加密

  加密机制:加密:明文→密文 解密:密文→明文

  单项加密:哈希算法,原文不同,密文必不同

  相同算法定长输出,获得密文不可逆推出原始数据

  雪崩效应:初始条件的微小改变,引起结果的巨大改变

  加密算法:md5、sha1、sha224、sha256、sha384、sha512

  更改加密算法:authconfig –passalgo=sha256 –update,其实更改了/etc/login.defs

  密码的复杂性策略,生产中使用

posted @ 2020-02-27 12:39  我听过  阅读(248)  评论(0编辑  收藏  举报