LINUX用户管理

LINUX用户管理

用户的基本概述:
用户:能够正常登录操作系统

为什么需要用户?
1.系统的每一进程(运行的程序)都需要一个特定的用户运行
2root用户的操作权限过大,容易造成故障这时就需要新建普通用户管理服务器

用户分类:
UID 系统中约定的含义
0 超级管理员
1-200 系统账户,用来运行系统自带的进程默认已经创建
201-999 系统用户,用来运行用户安装的程序,所以此类用户无需登录系统
1000 普通用户,正常可以登录系统的用户权限比较小,能执行的任务有限

查看用户ID信息
使用id命令查询当前前登录用户的信息
在这里插入图片描述
在这里插入图片描述

用户相关配置文件

当我们创建一个新的用户,系统将用户的信息存放在/etc/passwd中,而密码单独存下
/etc/shadow 中也就是说这两个文件非常重要

passwd文件

在这里插入图片描述cat /etc/passwd | head -1 root:x:0:0:root:/root:/bin/bash
用户名称:root
密码占位符:x
UID:0
GID:0
注释信息:root
家目录:/root
登录的bash:/bin/bash

shadow文件
/etc/shadow 配置文件解释如下图,或者使用命令
在这里插入图片描述

添加用户

命令: useradd

必须在root账号下才能添加
-u 指定UID进行创建用户
-g 指定要创建的基本组
-G指定要添加的附加组
-d指定要创建的家目录
-s 指定要创建用户的bash shell
-c指定要创建用户的注释信息
-M不指定家目录
-r创建系统账户,默认无家目录

添加用户的例子:

[root@localhost ~]# useradd  -u 5001  -g  ops  -G  dev  -c  "whoami" -s /bin/bash  oldxie

##创建用户 uid 5001 基本组 ops 附加组 dev 注释信息 “whoami” bash shell 为 /bin/bash 名称 oldxie

例2:
创建一个mysql 用户
不需要家目录
该用户不需要登录系统

useradd   -r   mysql  -M   -s /sbin/nologin

##创建了一个没有家目录 /sbin/nologin 不需要登录系统的mysql账号

修改用户

命令:usermod
必须在root用户下才能使用

-u 指定修改用户的UID
-g指定修改用户的基本组
-G指定修改用户的附加组
-d 指定修改用户的家目录
-s指定修改bash shell
-c 指定要修改用户的注释信息
-l指定要修改用户的登录名
-L指定要锁定的用户
-U指定解锁的用户

修改用户的例子:
修改oldxie用户:
uid =5008
基本组为network 附加组为ops dev sa
注释信息为student 登录名称new_oldxie

在这里插入图片描述

 groupadd  network  -f
 usermod  oldxie  -c   "change" -g  network  -G  ops,dev  -l  new_oldxie
 id new_oldxie

例2:
修改new_oldxie
为new_oldxie配置密码
锁定该用户
解锁该用户然后再次测试远程连接登录

锁定用户
usermod -L new_oldxie
解锁用户
usermod -U new_oldxie

unlocking the user’s password would result in a passwordless account.
You should set a password with usermod -p to unlock this user’s password.
解锁用户将导致一个没有密码的用户
最好再重新设置密码

删除用户

命令:userdel
-r连同家目录一起删除
userdel 会删除用户但不会删除用户的家目录要想彻底删除就加-r
userdel -r new_oldxie

例子1:
批量删除此前创建过的所有无用的用户
使用awk 提取无用的用户名称
使用sed拼接删除用户的命令
调用userdel命令,连同加目录一起全部删除
提示:此处指的无用的用户为UID>1000的用户
首先需要整理出大于uid>1000的用户

在这里插入图片描述然后在添加userdel -r 再 bash

在这里插入图片描述
最后我们可以将这两条命令合并下

awk  -F ':'   '$3>1000{print $1}'  /etc/passwd | sed   -r  's#(.*)#userdel -r \1#g' | bash 

密码设置

普通用户只能变更自己的密码
root 可以变更所有用户的密码

密码变更方式分为一下两种:
交互式设定密码: passwd userID
在这里插入图片描述非交互式模式设定密码:

echo ‘199688’ | passwd --stdin AGAN
在这里插入图片描述扩展:
非交互式设定随机密码:
需要pack: expect
yum install -y expect

mkpasswd 扩展项:
-l # (密码的长度定义, 默认是 9)
-d # (数字个数, 默认是 2)
-c # (小写字符个数, 默认是 2)
-C # (大写字符个数, 默认是 2)
-s # (特殊字符个数, 默认是 1)
-v (详细。。。)
-p prog (程序设置密码, 默认是 passwd)

在这里插入图片描述

echo  $(mkpasswd -l 9  -d 2  -c 2  -s 1 -C 4 ) | tee  passwd.txt | passwd  --stdin  AGAN

扩展内容:
编辑一个脚本批量设置随机密码并且创建用户:
在这里插入图片描述1 #!/usr/bin/bash 2 for i in {1..100} 3 do 4 password=$(mkpasswd -l 9 -d 2 -c 2 -s 1 -C 4) 5 useradd $i 6 echo "$i is creat OK" 7 echo "$password" | passwd --stdin $i 8 echo "$i key is ctreat ok" 9 10 done

系统创建用户流程

用户在创建系统的时候会参考两个配置文件:
1 /etc/login.defs
2 /etc/default/useradd

login.defs 主要定义了创建用户时 UID划分规则,密码加密类型,是否创建家目录

添加个小知识:

grep   -E '^#|^'  /etc/default/useradd

效果和-v 的效果一样

 grep   -Ev '^#'  /etc/default/useradd

都能查看如下内容
GROUP=100
HOME=/home #把用户的家目录创建在/home 下
INACTIVE=-1 #是否启用账号过期提权 -1表示不启用
EXPIRE= #账号终止日期,不设置表示不启用
SHELL=/bin/bash #新用户默认所有的shell 的类型
SKEL=/etc/skel #配置新用户家目录的默认文件的存放位置
CREATE_MAIL_SPOOL=yes #创建mail文件

用户环境变量丢失案例

如上所描述,如果我们把家目录中的环境配置文件删除了,然后再登录系统会出现如下的问题:

在这里插入图片描述解决办法:

cp  -a /etc/skel/.bash*  ~

用户组基本概述

组是一种逻辑层面上的定义
逻辑上将多个用户归纳至一个组,当我们对组操作时其实就相当于对组中所有的用户进行操作

可以分为如下几类:
默认组:创建用户时不指定组则默认创建与用户同名的组
基本组:用户有且只能有一个基本组,创建时可通过-g指定(亲爹)

附加组:用户可以 有多个附加组,创建时通过-G指定(干爹)
相关配置文件:
组账户的信息保存在/etc/group和/etc/gshadow两个文件中,重点关注group

以第一行的组为例做如下解释(针对group配置文件)
在这里插入图片描述

gshadow 文件:
在这里插入图片描述

用户组相关命令

添加用户组:
groupadd
-f 如果租已经存在,会提示创建成功的状态
-g为新组设置GID,若GID已经存在会提示GID已经存在
-r创建一个系统组

添加例子
添加一个salary 的组
GID=1000
在这里插入图片描述
添加一个salary_2的组
添加为系统组
在这里插入图片描述

修改组

命令:groupmod
只能在root下使用

-f 如果组已经存在,会提成功创建的状态
-g 为新组设置GID 若GID已经存在会提示GID已经存在
-r 创建一个系统组
-n 改名为新的组

例子:
修改salary用户组为system
groupmod -n system salary

在这里插入图片描述例子2:
修改system用户组GID=5000

在这里插入图片描述

删除组

命令:groupdel
例子:删除salary_2系统用户组
groupdel salary_2

例2:
创建tom 用户,设置主组为system 然后测试删除system 组
在这里插入图片描述groupdel system groupdel: cannot remove the primary group of user 'tom'

注意:如果组中还存在用户则不能删除组

用户与用户组场景

创建dev 与ops 两个组;

groupadd  dev;groupadd  ops 

创建bob用户,设定基本组为dev 密码为123;

 useradd  bob  -g dev ; echo  "123" | passwd  --stdin  bob

创建alice用户,设定基本组ops 密码为123

useradd  alice -g ops  ; echo  '123'  | passwd  --stdin alice

创建/opt /resource文件,然后修改属组为 ops权限为664

touch  /opt/resource
chgrp   /opt/resource  ops
chmod   664  /opt/resource 

通过测试:
bob只能看看文件不能修改
alice 能执行读写操作

然后继续我们怎么实现也能使得bob也能读写操作?
思路 :我们可以再给alice 添加新的组也就是附加组就能实现要求

usermod  bob  -G   ops

在这里插入图片描述

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值