Linux10--权限管理之:用户分类、用户及用户组、用户相关文件、手动创建用户

1 用户分类

### 1 用户分类
# 1.超级用户:拥有系统的完全控制权
    超级管理员,最高权限,有着极强的破坏能力

# 2.系统用户:不代表人,而代表系统的组成部分
    默认情况下不能登录系统,是系统正常运行必不可少的部分
    存在的目的主要是方便管理系统,用来运行系统级别的应用程序

# 3.普通用户:是使用系统的真实用户人群
    一般是由具备系统管理员root的权限的运维人员添加的,用来登录操作系统
    
# 强调:
对于linux系统,用户的角色是通过UID和GID识别的
    
    
### 2 CentOS7系统约定uid的范围:
 超级用户(root) uid/gid: 0
 
 系统用户:uid: 1~200    用来运行系统自带进程   操作系统级别  # 默认已创建
 系统用户:uid: 201~999  用来运行安装的程序    用户级别      # 此类用户无需登录系统
 
 普通用户:uid: 1000~6000
 
 
### 3 实际生产环境中的用户: 普通用户   若权限不够 用sudo分配
1.在生产环境中,一般会禁止root帐号通过SSH远程连接服务器
  当然也会更改默认的SSH端口,以加强系统安全
  
2.企业工作中:没有特殊需求,应该尽量不要登录root(uid为0)用户进行操作
  应该在普通用户下操作任务,然后用sudo管理普通用户的权限,可以细到每个命令权限分配

2 用户与用户组

### 1 用户及用户组概念
用户: 是操作系统提供的一种安全机制
     拥有相对应的权限,是权限的化身

用户组: 相当于具有某种相同特征的一系列用户的集合
    主组:
    附加组:
 
# 为何要有用户?
  1.通过用户,来划分权限,增强安全性
  
  2.每启动一个进程,都会与一个用户相关联
    linux的本质:进程启动就是操作相对应的系列文件
    文件的操作,又涉及到文件权限问题
    
    进程的操作 --关联--> 用户 --关联--> 权限(作用到文件身上)



### 2 用户 增删查改
# 1.查看用户
id         : 查看当前用户
id [用户名] : 查看指定用户的id

who        : 查看所有登录的用户
whoami     :查看当前用户的命令


# 2.创建用户   # 用户必须有一个主组
useradd [选项] [用户名称]   
  选项:
    -u: 指定uid  # 用户id   代表的是用户的唯一标号
    -g: 指定gid  # 用户组id  代表的用户组的唯一标号
                # 创建用户,若不指定用户组,会自动创建 与用户同名 的主组
    -G: 指定附加组id
    
    -r: 创建系统用户  # uid处于系统用户范围内(1~999)  默认没有家目录
    -s: 指定用户默认的解释器
    
    -d: 指定用户的家目录
    -M:不创建家目录
    
    –c:指定用户的备注信息
    -e:修改过期时间
    
  用户名命名规则:1.可以包含字母和数字 2.必须字母开头

# eg:创建用户
groupadd -g 666 shanhe
useradd -u 666 -g 666 test777


# 3.修改用户
usermod [选项] [用户名称]

  选项: 前面同useradd的基本相同
    -u: 指定要修改用户的UID
    -g: 指定要修改用户主组

    -a: 追加用户的附加组。仅与-G选项 一起使用
    -G: 指定要修改用户附加组,使用逗号隔开多个附加组, 覆盖原有的附加组

    -d: 指定要修改用户家目录

    -m: 将用户主目录的内容移动到新位置  # 若当前主目录不存在,则不会创建新的主目录
    -l: 指定要修改用户名
    
    -L: 指定要锁定的用户
    -U: 指定要解锁的用户


### 设置与修改 用户密码
passwd 用户名  # 为该用户设置密码
    
echo 密码 | passwd --stdin  用户名   # 非交互式


### 补充:生成密码
## 1 利用系统内置变量生成随机字符串
echo $RANDOM | md5sum | cut -c 1-6  # 打印随机数字 | 用md5加密 | 裁剪6个字符

## 2 openssl passwd 手动生成密码
openssl passwd -1 -salt '密码加盐'  # 盐不能有中文
  -1   : 表示采用的是MD5加密算法
  -salt: 指定salt值,不使用随机产生的salt

## 3 mkpasswd 命令 创建随机密码
yum install -y expect  # 安装

mkpasswd 
    -l   # 设置密码的长度
    -d   # 字符的最少个数
    -c   # 小写字母的最少个数
    -C   # 大写字母的最少个数
    -s   # 特殊符号的最少个数

eg: mkpasswd -l 24 -d 6 -c 6 -C 6 -s 6  



# 4.删除用户   删除用户,会默认删除通过useradd创建出来的主组
userdel  用户名  # 删除用户,但不删除用户家目录和mail
  -r  # 彻底删除
  
  
# 切换登录用户
su - 用户名   # 直接在bash命令行中 切换登录用户
  
  
  
### 3 用户组 增删查改
# 1.创建用户组
groupadd  [选项] 组名  # 默认自动创建gid
  选项:
    -g: 指定gid
    -r: 创建系统组 # gid在201~999

# 2.修改用户组
groupmod  [选项] 组名
  选项:
    -g: 修改gid
    -n: 修改组名

# 3.删除用户组   用户必须有一个主组  若组是一个用户的主组,则不能删除
groupdel  组名


# 4.组成员管理、设置组密码
gpasswd  [选项] 组名
  选项:
    -a: 给该组添加用户
      eg: gpasswd -a 用户名 组名
          usermod -a -G 组名 用户名
          
    -M: 指定 组的成员 会将之前组成员全都覆盖掉  # 可用于给该组添加多个用户
      eg: gpasswd -M 用户名,用户名,用户名 组名
      
    -A: 指定某个组成员为 组管理者   # 该成员就拥有 给该组添加/删除成员的权限
      eg: gpasswd -A 用户名 组名
      
    -d: 移除组的某个组成员
      eg: gpasswd -d 用户名 组名
      
      
eg: gpasswd 组名  # 设置组密码

# 组密码的作用
让一些非组成员的用户,通过命令“newgrp 组” 临时切换到组内
并输入密码的方式 获取用户组的权限和特性


# 5.临时切换到某个组内
newgrp 组名
  exit  # 退出组

3 用户相关文件

# 1 用户的相关信息文件
/etc/passwd  : 用户的特征信息   # 包含用户登录使用的解释器
/etc/shadow  : 用户的密码信息

/etc/group   : 用户组特征信息
/etc/gshadow : 用户组密码信息

/etc/skel/   : 用户家目录的模板文件夹   # 里面都是用户家目录 应该有的初始化配置文件
  .bash_logout
  .bash_profile
  .bashrc

/home/xxx    : 用户家目录
/var/spool/mail/xxx  : 用户邮箱文件



# 2 执行useradd test命令,涉及的文件:

# 用户信息的文件: /etc/passwd
  root:x:0:0:root:/root:/bin/bash
  用户名:密码占位符:UID:GID:描述信息:用户家目录:用户登录默认的解析器
  # 密码占位符,其实密码映射到/etc/shadow文件中
      若为空 表示没有密码
   
# 用户密码的文件: /etc/shadow 
  root:$6::0:99999:7:::
  用户名:密码:距离1970-1-1多少天:密码最少使用天数:密码最多使用天数:密码过期预警天数:密码宽限天数:密码失效剩余天数:保留列 未被使用
  # 密码为一长串的字符串
    若密码字符串为!!或空,表示没有密码
   
# 用户组的文件: /etc/group 
  root:x:0:
  组名称 :密码占位符 :组id :该用户组作为哪些用户的附加组 多个以逗号隔开 
     
# 用户组密码的文件: /etc/gshadow
  root:::
  组名称 :密码 :组管理者 :该用户组作为哪些用户的附加组 多个以逗号隔开 
    # 若密码字符串为! 表示没有密码

4 eg:手动创建用户

# 知识储备:
    chown是用来修改文件的用户及用户组
        chown test.test test

    chmod是用来修改文件权限
    
    
# 1.编写组密码文件
vim /etc/gshadow
  test:!::   # 添加 test组:组密码为空
  
# 2.编写用户组文件
vim /etc/group
  test:x:995:  # 添加
    
# 3.编写用户信息文件
vim /etc/passwd
    test:x:996:995:手动创建文件:/home/test:/bin/bash  # 添加
    
# 4.编写用户密码文件
vim /etc/shadow
  test:[用上面md5生成密码]::0:99999:7:::  # 添加
  # 备注:test用户密码也可使用root的密码,因为不知道加密方式,所以拷贝root密码

# 5.为test用户创建家目录
mkdir /home/test

# 6.用户家目录添加相关配置 及 修改权限
cd /home/
cp -ar /etc/skel/.[!.]* /home/test/  # 用户家目录相关的初始化文件 都在etc/skel/ 目录中

chmod 700 /home/test/        # 修改目录的权限
chown test.test /home/test/  # 修改目录的属主、属组

chown test.test /home/test/.[!.]*


# 7.为test用户创建邮箱文件
touch /var/spool/mail/test

chmod 660 /var/spool/mail/test
chown test.mail /var/spool/mail/test


# 8.测试
ssh test@192.168.15.101
posted @ 2022-04-07 00:29  Edmond辉仔  阅读(110)  评论(0)    收藏  举报