Linux用户和组管理

用户和组管理

bash的配置文件:

配置文件类型 配置文件路径
全局配置 /etc/profile
/etc/profile.d/*.sh
/etc/bashrc
个人配置 ~/.bash_profile
~/.bashrc
配置文件类型 功能
profile类 为交互式登录的shell提供配置,用来设定环境变量、运行命令或脚本
bashrc类 为非交互式登录的shell提供配置,用来设定本地变量、定义命令别名

用户组类型

用户组类别 特性
私有组 创建用户时,如果没有为其指定所属的组,
系统会自动为其创建一个与用户名相同的组
基本组 用户的默认组
附加组(额外组) 默认组以外的其它组

配置文件信息

配置文件 作用
/etc/passwd 用户及其属性信息(名称、uid、基本组id等等)
/etc/group 组及其属性信息
/etc/shadow 用户密码及其相关属性
/etc/gshadow 组密码及其相关属性。在用户执行基本组切换时使用

配置文件 /etc/passwd /etc/group
第一字段 用户名 组名
第二字段 密码占位符 组密码
第三字段 UID GID
第四字段 GID 以当前组为附加组的用户列表(分隔符为逗号)
第五字段 用户的描述信息
第六字段 用户家目录
第七字段 用户的登录shell

配置文件 /etc/shadow
第一字段 登录名
第二字段 加密后的密码
第三字段 最近一次更改密码的日期
第四字段 密码的最小使用期限
第五字段 密码的最大使用期限
第六字段 密码警告时间段
第七字段 密码禁用期
第八字段 帐号的过期日期
第九字段 保留字段

用户创建命令useradd

  • 语法:useradd [option] USERNAME
    • -u UID        指定用户UID,[UID_MIN,UID_MAX]定义在/etc/login.defs文件中
    • -g GID       指定用户所属基本组,可为组名或GID,组groupname必须事先存在
    • -G groupname,...  附加组,可以有多个,用逗号隔开。组groupname必须事先存在
    • -c "COMMENT"   注释信息(或用户描述)
    • -d /path/to/directory 指定用户的家目录。此目录必须不能事先存在,否则将不会从/etc/skel中复制环境设置文件
    • -s shell       这里的shell最好使用/etc/shells里面有的shell,/etc/shells指定了当前系统可用的安全shell
    • -M          创建用户时不给其创建家目录
    • -r          添加一个系统用户(系统用户不用登陆不用家目录配合-M -s nologin使用)
    • -D          直接打印/etc/default/useradd文件的内容或配合其它选项(例如-s SHELL)直接修改/etc/default/useradd文件中的默认值
  • useradd [option] USERNAME
[root@hostnamectl ~]# useradd tianxiadiyi
[root@hostnamectl ~]# tail -1 /etc/passwd
tianxiadiyi:x:1006:1006::/home/tianxiadiyi:/bin/bash
  • -g 指定组(指定组时组必须先存在)
[root@hostnamectl ~]# tail -1 /etc/group
guilai:x:1005:
[root@hostnamectl ~]# useradd -u 1005 -g 1005 -G root -c "my world" -d /home/world -s /bin/bash guilai
[root@hostnamectl ~]# tail -1 /etc/passwd
guilai:x:1005:1005:my world:/home/world:/bin/bash

创建组groupadd

  • groupadd [options] GROUP
       -g GID //指定GID
       -r //添加一个系统组
hostnamectl ~]# groupadd -g 1008 xiaobai
[root@hostnamectl ~]# grep xiaobai /etc/group
xiaobai:x:1008:

id 查看用户的帐号属性信息

  • id 查看用户的帐号属性信息
        -u : 查看UID
        -g : 查看GID
        -G : 查看Groups
[root@hostnamectl ~]# id guilai
uid=1005(guilai) gid=1005(guilai) 组=1005(guilai),0(root)

用户删除命令userdel

  • userdel [option] USERNAME
        -r:删除用户的同时删除其家目录(userdel默认不会删除其家目录)
[root@hostnamectl ~]# userdel tianxiadiyi
[root@hostnamectl ~]# id tianxiadiyi
id: tianxiadiyi: no such user

删除组命令groupdel

  • groupdel [options] GROUP
[root@hostnamectl ~]# grep xiaobai /etc/group
xiaobai:x:1008:
[root@hostnamectl ~]# groupdel xiaobai
[root@hostnamectl ~]# grep xiaobai /etc/group
[root@hostnamectl ~]# 

修改用户帐号属性的命令

  • usermod 修改用户属性
  • usermod [options] username
         -u :UID
         -g :GID
         -a -G groupname: 不使用-a选项,会覆盖此前的附加组
         -d -m : 改变用户家目录的同时把原来家目录的文件移动到新的家目录中
         -e :YYYY-MM-DD 指明用户帐号过期日期
         -f :INACTIVE 设定非活动期限
         -L : 锁定帐号,被锁定的帐号在/etc/shadow文件中密码前面会有一个!感叹号
         -U : 解锁帐号
         chsh 修改用户的默认shell (建议用-s 更简单)
            chsh [options] [username]
         -s: SHEL
  • -u修改账户UID (UID不能重复)
[root@hostnamectl ~]# usermod -u 10002 guilai
[root@hostnamectl ~]# id guilai
uid=10002(guilai) gid=1005(guilai) 组=1005(guilai),0(root)
  • -g 修改用户基本组
[root@hostnamectl ~]# usermod -g 1007 guilai
[root@hostnamectl ~]# id guilai
uid=10002(guilai) gid=1007(tianxaidiyi) 组=1007(tianxaidiyi),0(root)
  • -a -G修改用户附加组
[root@hostnamectl ~]# grep swordsman /etc/group
swordsman:x:1008:
[root@hostnamectl ~]# usermod -a -G 1008 guilai
[root@hostnamectl ~]# id guilai
uid=10002(guilai) gid=1007(tianxaidiyi) 组=1007(tianxaidiyi),0(root),1008(swordsman)
  • -G覆盖用户附加组
[root@hostnamectl ~]# id guilai
uid=10002(guilai) gid=1007(tianxaidiyi) 组=1007(tianxaidiyi),1008(swordsman)
  • -d修改用户家目录(文件不会移动只移动家目录地址)
[root@hostnamectl ~]# usermod -d /opt/world guilai
[root@hostnamectl ~]# grep guilai /etc/passwd
guilai:x:10002:1007:my world:/opt/world:/bin/bash
  • -d -m修改用户家目录(包括家目录里所有文件)
[root@hostnamectl ~]# mkdir -p /opt/world/abc
[root@hostnamectl ~]# usermod -d /home/guilai  -m guilai
[root@hostnamectl ~]# grep guilai /etc/passwd
guilai:x:10002:1007:my world:/home/guilai:/bin/bash
[root@hostnamectl ~]# ls /home/
guilai/ world/  
[root@hostnamectl ~]# ls /home/guilai/
abc
  •  -L : 锁定帐号,被锁定的帐号在/etc/shadow文件中密码前面会有一个!感叹号
[root@hostnamectl ~]# grep guilai /etc/shadow
guilai:$6$8xpOiM55$1rmh9cE7t3ttiDvG.P5SUlcVBoaO29J48Np1pjwDHaemQN.OTuIwjQn9Fi0/.dEivY8J7XkWRvsCJddHvMeII0:18158:0:99999:7:::
[root@hostnamectl ~]# grep guilai /etc/shadow
guilai:!$6$8xpOiM55$1rmh9cE7t3ttiDvG.P5SUlcVBoaO29J48Np1pjwDHaemQN.OTuIwjQn9Fi0/.dEivY8J7XkWRvsCJddHvMeII0:18158:0:99999:7:::
  • -U :解锁帐号
[root@hostnamectl ~]# usermod -U guilai
[root@hostnamectl ~]# grep guilai /etc/shadow
guilai:$6$8xpOiM55$1rmh9cE7t3ttiDvG.P5SUlcVBoaO29J48Np1pjwDHaemQN.OTuIwjQn9Fi0/.dEivY8J7XkWRvsCJddHvMeII0:18158:0:99999:7:::
  • -s:修改用户shell
[root@hostnamectl ~]# usermod -s /bin/sh guilai
[root@hostnamectl ~]# grep guilai /etc/passwd
guilai:x:10002:1007:my world:/home/guilai:/bin/sh

修改组信息命令groupmod

  • groupmod [options] GROUP
  • -g修改指定组的UID
[root@hostnamectl ~]# grep Hermit /etc/group
Hermit:x:1010:
  • -n groupname 修改组名
[root@hostnamectl ~]# groupmod -n Devil Hermit
[root@hostnamectl ~]# grep Devil /etc/group
Devil:x:1010:

切换用户命令su

切换用户的方式 特点
su USERNAME 非登录式切换,即不会读取目标用户的配置文件
su - USERNAME 登录式切换,即会读取目标用户的配置文件。完全切换
su - 不指定用户时默认切换至root用户
配置文件类型 功能
profile类 为交互式登录的shell提供配置,用来设定环境变量、运行命令或脚本
bashrc类 为非交互式登录的shell提供配置,用来设定本地变量、定义命令别名
  • root su至其他用户不需要密码,非root用户su至其他用户时需要输入目标用户的密码

  • su [options] [-] [USER [arg]...]

  • su - username 登录式切换,即会读取目标用户的配置文件。完全切换

[root@hostnamectl ~]# su - guilai
上一次登录:四 9月 19 17:50:54 CST 2019pts/0 上
[guilai@hostnamectl ~]$ pwd
/home/guilai
  • su username 非登录式切换,即不会读取目标用户的配置文件
[root@hostnamectl ~]# su guilai
[guilai@hostnamectl root]$ pwd
/root
  • su - :其他用户登陆root
不指定用户时默认切换至root用户

-c 'COMMAND' 切换身份执行命令,命令执行结束后又回到原来的身份

[root@hostnamectl ~]# su - doom -c 'touch a'
[root@hostnamectl ~]# ls /home/doom/
a

密码管理命令passwd

  • passwd [options] [USERNAME]
  • passwd 修改密码
[root@hostnamectl ~]# passwd guilai
更改用户 guilai 的密码 。
新的 密码:
  • --stdin 从标准输入获取用户密码,例:echo "redhat"|passwd --stdin user1
[root@hostnamectl ~]# echo '123' |passwd --stdin guilai
更改用户 guilai 的密码 。
passwd:所有的身份验证令牌已经成功更新。

  • -l: 锁定用户
  • -u : 解锁用户
  • -d : 删除用户密码

  • -n mindays 指定最短使用期限
[root@hostnamectl ~]# passwd -n 10 guilai
调整用户密码老化数据guilai。
passwd: 操作成功
  • -x maxdays 指定最长使用期限
[root@hostnamectl ~]# passwd -x 1000 guilai
调整用户密码老化数据guilai。
passwd: 操作成功
[root@hostnamectl ~]# grep guilai /etc/shadow
guilai:$6$tzRXztt8$V/dBaNOSefO.NwdL1.Rwqg2CnhSsrTlL.PlmJ2F/mY3CimCxzDeJ2m2qiWEfMbFyb4uPdSFr0aOZ3iJBV/h5H.:18158:10:1000:7:::
  • -w warndays 提前多少天开始警告
[root@hostnamectl ~]# passwd -w 970 guilai
调整用户密码老化数据guilai。
passwd: 操作成功
[root@hostnamectl ~]# grep guilai /etc/shadow
guilai:$6$tzRXztt8$V/dBaNOSefO.NwdL1.Rwqg2CnhSsrTlL.PlmJ2F/mY3CimCxzDeJ2m2qiWEfMbFyb4uPdSFr0aOZ3iJBV/h5H.:18158:10:1000:970:::
  • -i inactivedays 非活动期限,密码过期后到禁用前的这段时间(修改密码缓冲时间)
[root@hostnamectl ~]# passwd -i 30 guilai
调整用户密码老化数据guilai。
passwd: 操作成功

改变用户密码过期信息命令chage

  • chage [options] USERNAME
  • -l:列出用户以及密码的有效期
[root@hostnamectl ~]# passwd -i 30 guilai
调整用户密码老化数据guilai。
passwd: 操作成功
[root@hostnamectl ~]# chage -l guilai
最近一次密码修改时间					:9月 19, 2019
密码过期时间					:6月 15, 2022
密码失效时间					:7月 15, 2022
帐户过期时间						:从不
两次改变密码之间相距的最小天数		:10
两次改变密码之间相距的最大天数		:1000
在密码过期之前警告的天数	:970
  • -d:指定密码最后修改日期 (chage -d 30 表示在改变用户密码30天后密码自动失效或 YYYY-MM-DD 后失效)
[root@hostnamectl ~]# chage -d 2019-09-20 guilai
[root@hostnamectl ~]# chage -l guilai
最近一次密码修改时间					:9月 20, 2019 // 最近一次修改密码时间
密码过期时间					:6月 16, 2022
密码失效时间					:7月 16, 2022
帐户过期时间						:从不
两次改变密码之间相距的最小天数		:10
两次改变密码之间相距的最大天数		:1000
在密码过期之前警告的天数	:970

用户第一次登陆就要改密码

[root@hostnamectl ~]# chage -d 0 guilai
[root@hostnamectl ~]# chage -l guilai
最近一次密码修改时间					:密码必须更改   
密码过期时间					:密码必须更改
密码失效时间					:密码必须更改
帐户过期时间						:从不
两次改变密码之间相距的最小天数		:10
两次改变密码之间相距的最大天数		:1000
在密码过期之前警告的天数	:970
  • -E:过期时间
[root@hostnamectl ~]# chage -E 2019-09-30 guilai
[root@hostnamectl ~]# chage -l guilai
最近一次密码修改时间					:9月 20, 2019
密码过期时间					:6月 16, 2022
密码失效时间					:7月 16, 2022
帐户过期时间						:9月 30, 2019  //过期时间
两次改变密码之间相距的最小天数		:10
两次改变密码之间相距的最大天数		:1000
在密码过期之前警告的天数	:970
  • -I:非活动时间
[root@hostnamectl ~]# chage -l guilai
最近一次密码修改时间					:9月 20, 2019
密码过期时间					:6月 16, 2022
密码失效时间					:7月 17, 2022      //密码失效时间
帐户过期时间						:9月 30, 2019
两次改变密码之间相距的最小天数		:10
两次改变密码之间相距的最大天数		:1000
在密码过期之前警告的天数	:970

  • -m:最短使用期限
[root@hostnamectl ~]# chage -m 7 guilai
[root@hostnamectl ~]# chage -l guilai
最近一次密码修改时间					:9月 20, 2019
密码过期时间					:6月 16, 2022
密码失效时间					:7月 17, 2022
帐户过期时间						:9月 30, 2019
两次改变密码之间相距的最小天数		:7             //最短使用期限 
两次改变密码之间相距的最大天数		:1000
在密码过期之前警告的天数	:970
  • -M:最长使用期限
[root@hostnamectl ~]# chage -M 100 guilai
[root@hostnamectl ~]# chage -l guilai
最近一次密码修改时间					:9月 20, 2019
密码过期时间					:12月 29, 2019
密码失效时间					:1月 29, 2020
帐户过期时间						:9月 30, 2019
两次改变密码之间相距的最小天数		:7
两次改变密码之间相距的最大天数		:100
在密码过期之前警告的天数	:970                   //最长使用期限
  • -W:警告时间
[root@hostnamectl ~]# chage -W 60 guilai
[root@hostnamectl ~]# chage -l guilai
最近一次密码修改时间					:9月 20, 2019
密码过期时间					:12月 29, 2019
密码失效时间					:1月 29, 2020
帐户过期时间						:9月 30, 2019
两次改变密码之间相距的最小天数		:7
两次改变密码之间相距的最大天数		:100
在密码过期之前警告的天数	:60                    //警告时间

密码生成工具openssl

  • openssl command [ command_opts ] [ command_args ]

  • dgst :提取特征码

[root@hostnamectl ~]# openssl dgst -md5 /etc/fstab 
MD5(/etc/fstab)= cfd02cb5d1c01774a7284abc7a887f24
  • passwd :生成密码,"asdfghjk"是添加的杂质
    • openssl passwd -1 -salt string
[root@hostnamectl ~]# openssl passwd -1 -salt asdfghjk
Password: 
$1$asdfghjk$k5FsdUb517DwcRnATU3hK.
  • rand:生成伪随机数
    -openssl rand -base64 NUM    //NUM表示随机数的长度
[root@hostnamectl ~]# openssl rand -base64 10
g2nSOFq1x35ABA==

给组设定密码命令gpasswd

  • gpasswd [option] GROUP
    • gpasswd
doom:x:1021:
[root@hostnamectl ~]# gpasswd doom
正在修改 doom 组的密码
新密码:
请重新输入新密码:
  • -a, --add USER   将用户添加至组
[root@hostnamectl ~]# gpasswd -a guilai doom
正在将用户“guilai”加入到“doom”组中
  • -d, --delete USER      将用户从组中删除
[root@hostnamectl ~]# gpasswd -d guilai doom
正在将用户“guilai”从“doom”组中删除
  • -r, --delete-password    删除组密码
[root@hostnamectl ~]# gpasswd -r doom

切换组命令newgrp

  • newgrp [-] [group]
[root@hostnamectl ~]# gpasswd doom
正在修改 doom 组的密码
新密码:
请重新输入新密码:
[guilai@hostnamectl ~]$ id
uid=1020(guilai) gid=1007(tianxaidiyi) 组=1007(tianxaidiyi),1008(swordsman) 环境=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
[root@hostnamectl ~]# su - guilai
上一次登录:四 9月 19 19:36:49 CST 2019pts/0 上
[guilai@hostnamectl ~]$ newgrp doom
密码:
uid=1020(guilai) gid=1021(doom) 组=1021(doom),1007(tianxaidiyi),1008(swordsman) 环境=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
[guilai@hostnamectl ~]$ 
posted @ 2019-09-19 19:43  买核弹个小菇凉  阅读(310)  评论(0编辑  收藏  举报