用户和组管理,例子共享单车抱回家总


用户和组管理


目录
  • 用户和组管理
    • 何为用户何为组?
      • 用户和组概念
      • 用户分类
      • Linux安全上下文
      • Linux用户组类别
    • Linux用户和组相关的配置文件
      • 各配置文件说明
      • 密码复杂性
    • 用户和组相关的管理命令
      • 用户管理
        • 用户创建命令useradd
        • 用户删除命令userdel
        • 查看用户帐号的信息命令id
        • usermod 修改用户帐号属性的命令
        • 切换用户命令su
      • 密码管理
        • 密码管理命令passwd
        • 密码生成工具openssl
      • 组管理
        • 创建组命令groupadd
        • 删除组命令groupdel

何为用户何为组?

用户和组概念

例子
进火车站刷脸
上下班刷指纹
天地会接头暗号

用户存在的目的是为了实现资源的分派。

例子
共享单车抱回家
总经理行使权利

Authentication:认证
Authorization:授权
Accouting:审计

用户分类

Linux用户分为管理员和普通用户两种:

用户类别 用户ID
管理员 0
普通用户 1-65535

其中普通用户又分为系统用户和登录用户两种:

用户类别 用户ID
系统用户 1-999(为守护类进程获取系统资源而完成权限指派的用户)
登录用户 1000-60000(为了完成交互式登录使用的用户)

Linux安全上下文

  1. 运行中的程序:进程(process)
    1.2 以进程发起者的身份运行
    1.2.1 root:cat
    1.2.2 tom:cat
    1.3 进程所能够访问的所有资源的权限取决于进程的发起者的身份
  2. Linux通过安全上下文的概念完成用户权限的指派。
    2.2 先判断用户是否是某文件的属主
    2.3 再判断用户是否属于某个组
    2.4 最后定其为其他用户

Linux用户组类别

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

Linux用户和组相关的配置文件

各配置文件说明

配置文件 作用
/etc/passwd 用户及其属性信息(名称、uid、基本组id等等)
/etc/group 组及其属性信息
/etc/shadow 用户密码及其相关属性
/etc/gshadow 组密码及其相关属性。在用户执行基本组切换时使用
配置文件 /etc/passwd /etc/group
第一字段 用户名 组名
第二字段 密码占位符 组密码
第三字段 UID GID
第四字段 GID 以当前组为附加组的用户列表(分隔符为逗号)
第五字段 用户的描述信息
第六字段 用户家目录
第七字段 用户的登录shell
配置文件 /etc/shadow
第一字段 登录名
第二字段 加密后的密码
第三字段 最近一次更改密码的日期
第四字段 密码的最小使用期限
第五字段 密码的最大使用期限
第六字段 密码警告时间段
第七字段 密码禁用期
第八字段 帐号的过期日期
第九字段 保留字段

密码复杂性

  1. 密码复杂性策略:
    1.2 使用数字、大写字母、小写字母及特殊字符中至少3种
    1.3 足够长
    1.4 使用随机密码,不要使用有意义的单词或数字
    1.5 定期更换,不要使用最近曾经使用过的密码

用户和组相关的管理命令

用户管理

用户创建命令useradd

-u UID
useradd命令用来建立用户账号和创建用户的起始目录,使用权限是终极用户。-g:指定用户所属的起始群组。-G:指定用户所属的附加群组。

[root@lnh ~]# id root
uid=0(root) gid=0(root) groups=0(root)
//查看root用户信息
[root@lnh ~]# useradd xbz
[root@lnh ~]# id xbz 
uid=1000(xbz) gid=1000(xbz) groups=1000(xbz)
//查看用户id, 组id ,所属组
[root@lnh ~]# useradd -u 2000 xbz1
[root@lnh ~]# id xbz1
uid=2000(xbz1) gid=2000(xbz1) groups=2000(xbz1)
//定义用户id,一般组id也会和其一样

-g GID

[root@lnh ~]# useradd -g 2000 xbz1
[root@lnh ~]# id xbz1
uid=1001(xbz1) gid=2000(xbz1) groups=2000(xbz1)
//定义gid组id

-G groupname(组名)

[root@lnh ~]# useradd -G xbz1  xbz2
[root@lnh ~]# id xbz2
uid=1002(xbz2) gid=1002(xbz2) groups=1002(xbz2),2000(xbz1)
//给xbz2添加xbz1附属组

-c "COMMENT"

[root@lnh ~]# useradd -c xbz1 xbz3
[root@lnh ~]# id xbz3
uid=1003(xbz3) gid=1003(xbz3) groups=1003(xbz3)
[root@lnh ~]# useradd -c xx hh
[root@lnh ~]# tail -5  /etc/passwd
xbz:x:1000:1000::/home/xbz:/bin/bash
xbz1:x:1001:2000::/home/xbz1:/bin/bash
xbz2:x:1002:1002::/home/xbz2:/bin/bash
xbz3:x:1003:1003:xbz1:/home/xbz3:/bin/bash
hh:x:1004:1004:xx:/home/hh:/bin/bash
//注释信息

-d

[root@lnh ~]# useradd -d /home/xbz5 xbz5
[root@lnh ~]# cd ~xbz5/
[root@lnh xbz5]# pwd
/home/xbz5
//指定用户的家目录。此目录必须不能事先存在, 否则将不会从/home/xbz5中复制环境设置文件

-s,-M,-r

[root@lnh ~]# useradd -rMs /sbin/nologin tsb
[root@lnh ~]# ll /home/
total 0
drwx------. 2 hh  hh  62 Jul  3 18:24 hh
drwx------. 2 xbz xbz 62 Jul  3 17:44 xbz
//-r添加一个系统用户,-M创建用户时不创建家目录,-s登录shell不允许登录这个用户

用户删除命令userdel

[root@lnh ~]# userdel aaa
[root@lnh ~]# ls /home/
aaa  bbb
[root@lnh ~]# userdel -r bbb
[root@lnh ~]# ls /home/
aaa
//直接用userdel删除,其是默认不删除家目录,-r删除是连着家目录一起删除

查看用户帐号的信息命令id

id,-u,-g,-G

[root@lnh ~]# id xbz
uid=1000(xbz) gid=1000(xbz) groups=1000(xbz)
//查看用户信息
[root@lnh ~]# id -u xbz
1000
//用户id
[root@lnh ~]# id -g xbz
1000
//组id
[root@lnh ~]# id -G xbz
1000
//附属组

usermod 修改用户帐号属性的命令

-u UID ,-g GID,-ag

[root@lnh ~]# id tsb
uid=995(tsb) gid=992(tsb) groups=992(tsb)
[root@lnh ~]# usermod -u 111 tsb
//-u 修改用户id,不能和其他用户相同
[root@lnh ~]# usermod -g 993 tsb
[root@lnh ~]# id tsb
uid=111(tsb) gid=993(rngd) groups=993(rngd)
//修改组id,组必须事先存在
[root@lnh ~]# usermod -G xxxb tsb
[root@lnh ~]# id tsb
uid=111(tsb) gid=993(rngd) groups=993(rngd),1112(xxxb)
[root@lnh ~]# usermod -G xbz tsb
[root@lnh ~]# id tsb
uid=111(tsb) gid=993(rngd) groups=993(rngd),1000(xbz)
[root@lnh ~]# usermod -aG xxxb tsb
[root@lnh ~]# id tsb
uid=111(tsb) gid=993(rngd) groups=993(rngd),1000(xbz),1112(xxxb)
//-G修改附加组,没有加-a会覆盖前面的附加组

-md

[root@lnh ~]# ll /home/
total 0
drwx------. 2 1007 1007 62 Jul  3 18:53 aaa
drwx------. 2 xxxb xxxb 62 Jul  3 19:04 xxxb
[root@lnh ~]# usermod -md /opt/shan xxxb
[root@lnh ~]# ll /home/
total 0
drwx------. 2 1007 1007 62 Jul  3 18:53 aaa
[root@lnh ~]# ll /opt/
total 0
drwx------. 2 xxxb xxxb 62 Jul  3 19:04 shan
-rw-r--r--. 1 root root  0 Jul  3 07:55 xbz
//改变用户家目录的同时把原来家目录的文件移动到新的家目录中

-e -f

[root@lnh ~]# usermod -e 2022-7-7 xxxb
[root@lnh ~]# usermod -f 2 xxxb
[root@lnh ~]# cat /etc/shadow |grep xxxb 
xxxb:!!:19176:0:99999:7:2:19180:
//-e YYYY-MM-DD 指明用户帐号过期日期
//-f  设置过期的延缓期限

-L -U

[root@lnh ~]# passwd xxxb
Changing password for user xxxb.
New password: 
BAD PASSWORD: The password is a palindrome
Retype new password: 
passwd: all authentication tokens updated successfully.
[root@lnh ~]# usermod -L xxxb
[root@lnh ~]# cat /etc/shadow |grep xxxb 
xxxb:!$6$6RKtLUh/iJRAf5aq$J7MIzJ2sY2VrS5FmeNvrampnjO2S1HyRQKVJz2wYrRI0Qq35CrE/QyxjE6K8mhEV15JqmFOem9ICO0FbeEP6M/:19176:0:99999:7:2:19180:
[root@lnh ~]# usermod -U xxxb 
[root@lnh ~]# cat /etc/shadow |grep xxxb 
xxxb:$6$6RKtLUh/iJRAf5aq$J7MIzJ2sY2VrS5FmeNvrampnjO2S1HyRQKVJz2wYrRI0Qq35CrE/QyxjE6K8mhEV15JqmFOem9ICO0FbeEP6M/:19176:0:99999:7:2:19180:
//-L锁定帐号,被锁定的帐号在/etc/shadow文件中密码前面会有一个!感叹号
//-U 解锁帐号

-s shell

[root@lnh ~]# usermod -s /sbin/nologin xxxb
[root@lnh ~]# cat /etc/passwd |grep xxxb
xxxb:x:1122:1112::/opt/shan:/sbin/nologin
-s//禁止其登录shell进入xxxb

切换用户命令su

切换用户的方式 特点
su USERNAME 非登录式切换,即不会读取目标用户的配置文件
su - USERNAME 登录式切换,即会读取目标用户的配置文件。完全切换
su - 不指定用户时默认切换至root用户
root su至其他用户不需要密码,非root用户su至其他用户时需要输入目标用户的密码
[root@lnh ~]# su tushanbu
[tushanbu@lnh root]$ su -
Password: 
Last login: Sun Jul  3 19:56:01 CST 2022 from 192.168.222.1 on pts/0
[root@lnh ~]# su - tushanbu 
Last login: Sun Jul  3 19:57:00 CST 2022 on pts/0
[tushanbu@lnh ~]$ su -
Password: 
Last login: Sun Jul  3 19:57:31 CST 2022 on pts/0
//在root用户下可以直接su tushanbu进入,su -是不指定用户默认切换到root用户,su - tushanbu是登录的方式进行切换
[root@lnh ~]# su - tushanbu -c "mkdir xxx"
[root@lnh ~]# ls /home/tushanbu/
xxx
//不进入用户进行创建

bash的配置文件:

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

非登录式shell如何读取配置文件?
~/.bashrc --> /etc/bashrc --> /etc/profile.d/*.sh

密码管理

密码管理命令passwd

passwd , --stdin

[root@lnh ~]# passwd tushanbu 
Changing password for user tushanbu.
New password: 
BAD PASSWORD: The password is a palindrome
Retype new password: 
passwd: all authentication tokens updated successfully.
//在root下可以直接进行设置密码
[root@lnh ~]# echo 1 |passwd --stdin tushanbu
Changing password for user tushanbu.
passwd: all authentication tokens updated successfully.
//标准输入获取用户密码

-l ,-u ,-d

[root@lnh ~]# passwd -l tushanbu 
Locking password for user tushanbu.
passwd: Success
//锁定用户
[root@lnh ~]# passwd -u tushanbu 
Unlocking password for user tushanbu.
passwd: Success
//解锁用户
[root@lnh ~]# passwd -d tushanbu 
Removing password for user tushanbu.
passwd: Success
//删除用户密码

-n ,-x,-w,-i

[root@lnh ~]# passwd -n 20 tushanbu 
Adjusting aging data for user tushanbu.
passwd: Success
//-n mindays最短使用天数20天
[root@lnh ~]# passwd -x 200 tushanbu 
Adjusting aging data for user tushanbu.
passwd: Success
//-x maxdays最长使用天数200天
[root@lnh ~]# passwd -w 10 tushanbu 
Adjusting aging data for user tushanbu.
passwd: Success
//-w warndays提前10天前发出过期警告
[root@lnh ~]# passwd -i 10 tushanbu 
Adjusting aging data for user tushanbu.
passwd: Success
//-i inactivedays可以延期10天
[root@lnh ~]# cat /etc/passwd |grep tushanbu
tushanbu:x:1123:1123::/home/tushanbu:/bin/bash

密码生成工具openssl

//语法:openssl command [ command_opts ] [ command_args ]
command //包含标准命令、消息摘要命令、加密命令
version //查看程序版本号
dgst //提取特征码
passwd //生成密码
rand //生成伪随机数

[root@lnh ~]# openssl dgst -md5 /etc/fstab
MD5(/etc/fstab)= 431fca5169ffb3a30eb83c94a11dc2f6
//提取特征码
[root@lnh ~]# openssl passwd -1 -salt hellotom
Password: 
$1$hellotom$o9rUZ07NstylvbqW9RrdV/
//生成密码 openssl passwd -1 -salt string  string一般为8位
[root@lnh ~]# openssl rand -base64 20
aDsYyelB9h6ksGSke6A3bN4OzfI=
//生成随机数 openssl rand -base64 NUM,NUM表示随机数的长度
[root@lnh ~]# tr -dc A-Za-z0-9_ < /dev/urandom | head -c 30 |xargs
VnRr0QqXyGGS5SHuv1Rl1KK3TYPbcb
//生成30位的密码

组管理

创建组命令groupadd

-g GID ,-r

[root@lnh ~]# groupadd bnx
//创建组
[root@lnh ~]# groupadd   -g 1222 xnx
//指定组id
[root@lnh ~]# groupadd -r xbn
//-r 创建一个系统组
[root@lnh ~]# cat /etc/passwd |grep xnx
[root@lnh ~]# cat /etc/passwd |grep xbn
[root@lnh ~]# cat /etc/group |grep xbn
xbn:x:991:
[root@lnh ~]# cat /etc/group |grep xnx
xnx:x:1222:
[root@lnh ~]# cat /etc/group |grep bnx
bnx:x:2001:

删除组命令groupdel

[root@lnh ~]# groupdel bnx
[root@lnh ~]# groupdel xbn
[root@lnh ~]# groupdel xnx
[root@lnh ~]# cat /etc/group |grep bnx
[root@lnh ~]# cat /etc/group |grep xbn
[root@lnh ~]# cat /etc/group |grep xnx

相关内容