当前位置: 首页 > news >正文

Day13-Linux系统用户管理知识精讲2

Day13-Linux系统用户管理知识精讲2

  • 1. passwd 给用户设置密码
  • 2. chpasswd 批量设置密码
  • 3. chage 查看和更改密码属性 更改用户密码过期信息
  • 4. 用户组相关的命令了解

1. passwd 给用户设置密码

用户自己给自己设置密码直接passwd

root用户给普通用户设置密码passwd 用户名。

–stdin 从标准输入获取信息

[root@oldboy ~]# echo 123456|passwd --stdin oldboy
更改用户 oldboy 的密码 。
passwd:所有的身份验证令牌已经成功更新。

2. chpasswd 批量设置密码

bash脚本

for n in {01..10}
douseradd oldboy$n
done

把用户和密码用冒号分割,然后放入文件里。

[root@oldboy ~]# vim user.list
oldboy01:01
oldboy02:02
oldboy03:03
oldboy04:04
oldboy05:05

批量设置密码命令:

chpasswd <user.list #不好用。

cat user.list|chpasswd #好用

su - oldboy02,然后在切入到其他用户测试。

扩展技术:后期细讲,此处可忽略

批量【生成】用户名和密码文件列表;

[root@oldboy ~]# seq -w 10|sed -rn 's#(.*)#oldboy\1:\1#gp' >user.list
[root@oldboy ~]# cat user.list
oldboy01:01
oldboy02:02
oldboy03:03
oldboy04:04
oldboy05:05
oldboy06:06
oldboy07:07
oldboy08:08
oldboy09:09
oldboy10:10

批量【设置】用户和密码列表;

[root@oldboy ~]# seq -w 10|sed -rn 's#(.*)#useradd oldboy\1;echo \1|passwd --stdin oldboy\1#gp'
useradd oldboy01;echo 01|passwd --stdin oldboy01
useradd oldboy02;echo 02|passwd --stdin oldboy02
useradd oldboy03;echo 03|passwd --stdin oldboy03
useradd oldboy04;echo 04|passwd --stdin oldboy04
useradd oldboy05;echo 05|passwd --stdin oldboy05
useradd oldboy06;echo 06|passwd --stdin oldboy06
useradd oldboy07;echo 07|passwd --stdin oldboy07
useradd oldboy08;echo 08|passwd --stdin oldboy08
useradd oldboy09;echo 09|passwd --stdin oldboy09
useradd oldboy10;echo 10|passwd --stdin oldboy10
[root@oldboy ~]# seq -w 10|sed -rn 's#(.*)#useradd oldboy\1;echo \1|passwd --stdin oldboy\1#gp'|bash

通过nodepad++批量生成用户名,

按住ALT,然后将光标第1行拉倒第10行,然后输入oldboy,

然后按住alt+c,设置生成数字序列

oldboy1
oldboy2
oldboy3
oldboy4
oldboy5
oldboy6
oldboy7
oldboy8
oldboy9

3. chage 查看和更改密码属性 更改用户密码过期信息

-l 查看用户和更改密码属性

[root@oldboy ~]# chage -l oldboy
最近一次密码修改时间			:6月 30, 2030
密码过期时间					:从不
密码失效时间					:从不
帐户过期时间					:从不
两次改变密码之间相距的最小天数	:0
两次改变密码之间相距的最大天数	:99999
在密码过期之前警告的天数	    :7

-e “” 设定账户过期时间。

useradd -e “2040/5/20” oldboy11

[root@oldboy ~]# useradd -e "2040/5/20" oldboy11
useradd:警告:此主目录已经存在。
不从 skel 目录里向其中复制任何文件。
正在创建信箱文件: 文件已存在
[root@oldboy ~]# chage -l oldboy11
最近一次密码修改时间					:6月 30, 2030
密码过期时间					   :从不
密码失效时间					   :从不
帐户过期时间						:5月 20, 2040  =========================账户过期时间
两次改变密码之间相距的最小天数		:0
两次改变密码之间相距的最大天数		:99999
在密码过期之前警告的天数	:7

chage -E “2041/6/30” oldboy11

[root@oldboy ~]# chage -E "2041/6/30" oldboy11
[root@oldboy ~]# chage -l oldboy11
最近一次密码修改时间					:6月 30, 2030
密码过期时间					:从不
密码失效时间					:从不
帐户过期时间						:6月 30, 2041
两次改变密码之间相距的最小天数		:0
两次改变密码之间相距的最大天数		:99999
在密码过期之前警告的天数	:7

useradd -e和chage -E是一样的。

范例:要求oldgirl用户7天内不能更改密码,60天以后必须修改密码,过期前10天通知用户,过期后30天后禁止用户登录。
修改的文件/etc/shadow
查看 chage -l 用户名
设置方法:2个:

passwd -n 7 -x 60 -w 10 -i 30 oldboy  #<==参数含义详见前文表格。
chage  -m8  -M61  -W11  -I31 oldboy #<==使用chage按题意要求授权。
[root@oldboy ~]# chage -l oldboy
最近一次密码修改时间					:6月 30, 2030
密码过期时间					:从不
密码失效时间					:从不
帐户过期时间						:从不
两次改变密码之间相距的最小天数		:0
两次改变密码之间相距的最大天数		:99999
在密码过期之前警告的天数	:7

练习修改密码属性(了解)

[root@oldboy ~]# grep -w oldboy /etc/shadow
oldboy:$6$V07NxoML$u.O04z4BaVQqosvEDjZfrQPvla19tEKLdoYxqjWpbgng8XQgtdjBS0xUMjtjN2zWBE8XiW5X6820iKPyDBJI00:22095:0:99999:7:::
[root@oldboy ~]# passwd -n 7 -x 60 -w 10 -i 30 oldboy
调整用户密码老化数据oldboy。
passwd: 操作成功
[root@oldboy ~]# grep -w oldboy /etc/shadow
oldboy:$6$V07NxoML$u.O04z4BaVQqosvEDjZfrQPvla19tEKLdoYxqjWpbgng8XQgtdjBS0xUMjtjN2zWBE8XiW5X6820iKPyDBJI00:22095:7:60:10:30::
[root@oldboy ~]# chage -l oldboy
最近一次密码修改时间					:6月 30, 2030
密码过期时间					:8月 29, 2030
密码失效时间					:9月 28, 2030
帐户过期时间						:从不
两次改变密码之间相距的最小天数		:7
两次改变密码之间相距的最大天数		:60
在密码过期之前警告的天数	:10
[root@oldboy ~]# 

4. 用户组相关的命令了解

groupadd 添加用户组

groupdel 删除用户组

练习:

[root@oldboy ~]# groupadd sa
[root@oldboy ~]# tail -n 1 /etc/group /etc/gshadow
==> /etc/group <==
sa:x:5018:==> /etc/gshadow <==
sa:!::
[root@oldboy ~]# groupdel sa
[root@oldboy ~]# grep -w sa /etc/group /etc/gshadow

切换用户以及提权管理命令:

su

sudo

su 切换用户角色,从A用户切换到B用户。

su - oldboy # -表示携带用的环境变量切换

显示:root环境变量

[root@oldboy ~]# env|grep root
USER=root
MAIL=/var/spool/mail/root
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
PWD=/root
HOME=/root
LOGNAME=root

练习查看加不加-的区别:

[root@oldboy ~]# su oldboy
[oldboy@oldboy root]$ env|grep oldboy
HOSTNAME=oldboy
USER=oldboy
HOME=/home/oldboy
LOGNAME=oldboy
[oldboy@oldboy root]$ pwd #还是root家目录,这就是没有加-的问题。
/root
[oldboy@oldboy root]$ env|grep root
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
MAIL=/var/spool/mail/root
PWD=/root
[oldboy@oldboy root]$ exit
[root@oldboy ~]# su - oldboy
上一次登录:一 71 00:11:41 CST 2030pts/1 上
[oldboy@oldboy ~]$ env|grep root
[oldboy@oldboy ~]$ env|grep oldboy
HOSTNAME=oldboy
USER=oldboy
MAIL=/var/spool/mail/oldboy
PATH=/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/oldboy/.local/bin:/home/oldboy/bin
PWD=/home/oldboy
HOME=/home/oldboy
LOGNAME=oldboy

第二个参数:

-c 以oldboy用户身份执行命令,然后退回当下用户

[root@oldboy ~]# su - oldboy -c pwd
/home/oldboy

用普通用户登录管理,su - root切换到root管理,拥有了所有权限。

普通用户必须要知道root密码,登录到root,他就可以改了密码,让你登录不上。

适合运维部门人少的时候。

弊端:

1)切换到root

2)拥有所有权限

更规范的管理方法:

不切换到root,在操作命令同时,拥有root权限,一旦操作完成,权限就消失。而且不需要root密码

sudo

sudo配置文件是/etc/sudoers

通过visudo管理sudo配置文件/etc/sudoers

[root@oldboy ~]# ls /etc/sudoers -l
-r--r-----. 1 root root 4328 1128 2019 /etc/sudoers

root ALL =(ALL) ALL

用户 主机 切换的角色 执行命令

设置oldboy用户在所有主机上,可以切换到所有角色,执行所有命令。

oldboy ALL =(ALL) ALL

oldboy就相当于root,不是root。

测试1:

[oldboy@oldboy ~]$ useradd bingbing
useradd: Permission denied.
useradd:无法锁定 /etc/passwd,请稍后再试。
[oldboy@oldboy ~]$ sudo useradd bingbing我们信任您已经从系统管理员那里了解了日常注意事项。
总结起来无外乎这三点:#1) 尊重别人的隐私。
#2) 输入前要先考虑(后果和风险)。
#3) 权力越大,责任越大。[sudo] oldboy 的密码:
[oldboy@oldboy ~]$ tail -1 /etc/passwd
bingbing:x:5018:5018::/home/bingbing:/bin/bash
[oldboy@oldboy ~]$ sudo su - root
上一次登录:日 630 22:28:53 CST 203010.0.0.1pts/1 上
[root@oldboy ~]# whoami
root

生产管理方法;给用户设置具体的命令。

oldboy  ALL =(ALL)            /usr/sbin/useradd,/usr/sbin/userdel     ##执行命令 越小越具体越好。

#设置粒度,最小是一个命令,允许他执行这个命令时拥有root权限。

[oldboy@oldboy ~]$ rm -fr /root
rm: 无法删除"/root": 权限不够
[oldboy@oldboy ~]$ sudo rm -fr /root
对不起,用户 oldboy 无权以 root 的身份在 oldboy 上执行 /bin/rm -fr /root。
[oldboy@oldboy ~]$ rm -fr /root
rm: 无法删除"/root": 权限不够
[oldboy@oldboy ~]$ sudo userdel bingbing
[oldboy@oldboy ~]$ grep bing /etc/passwd
[oldboy@oldboy ~]$ sudo useradd bingbing
useradd:警告:此主目录已经存在。
不从 skel 目录里向其中复制任何文件。
正在创建信箱文件: 文件已存在
[oldboy@oldboy ~]$ grep bing /etc/passwd
bingbing:x:5018:5018::/home/bingbing:/bin/bash
[oldboy@oldboy ~]$ ls /root
ls: 无法打开目录/root: 权限不够
[oldboy@oldboy ~]$ sudo ls /root
对不起,用户 oldboy 无权以 root 的身份在 oldboy 上执行 /bin/ls /root。
[oldboy@oldboy ~]$ 

sudo优点
1)不是root用户,还是自己。

2)指定命令拥有root权限,可以完成管理员分配的任务。

3)不需要root密码。

查看用户信息命令

	idwhoamiwhow

查看用户日志

last
lastlog
/var/log/secure 远程登录安全日志

更改文件属性:

更改用户所属用户和组:chown #change owner

更改用户组:chgrp #change group

chown 用户.用户组 文件 #.可以用;替代 更改用户和组

chown 用户 文件 #更改用户

chown .用户组 文件 #更改用户组,等价:chagrp 用户组 文件

前提:用户和组必须要存在。

练习:

[root@oldboy ~]# touch test.txt
[root@oldboy ~]# ls -l test.txt
-rw-r--r--. 1 root root 184 71 01:51 test.txt
[root@oldboy ~]# chown oldboy.oldboy test.txt #更改用户和组为oldboy
[root@oldboy ~]# ls -l test.txt
-rw-r--r--. 1 oldboy oldboy 184 71 01:51 test.txt
[root@oldboy ~]# chown root test.txt #更改用户为root
[root@oldboy ~]# ls -l test.txt
-rw-r--r--. 1 root oldboy 184 71 01:51 test.txt
[root@oldboy ~]# chown .root test.txt
[root@oldboy ~]# ls -l test.txt
-rw-r--r--. 1 root root 184 71 01:51 test.txt
[root@oldboy ~]# chgrp oldboy test.txt
[root@oldboy ~]# ls -l test.txt
-rw-r--r--. 1 root oldboy 184 71 01:51 test.txt

-R参数 递归更改

练习:

[root@oldboy ~]# mkdir abc
[root@oldboy ~]# touch abc/{1..3}
[root@oldboy ~]# ls -ld ab
abc/    ab.txt  
[root@oldboy ~]# ls -ld abc
drwxr-xr-x. 2 root root 33 71 01:54 abc
[root@oldboy ~]# ls -l abc
总用量 0
-rw-r--r--. 1 root root 0 71 01:54 1
-rw-r--r--. 1 root root 0 71 01:54 2
-rw-r--r--. 1 root root 0 71 01:54 3
[root@oldboy ~]# chown -R oldboy abc/
[root@oldboy ~]# ls -l abc
总用量 0
-rw-r--r--. 1 oldboy root 0 71 01:54 1
-rw-r--r--. 1 oldboy root 0 71 01:54 2
-rw-r--r--. 1 oldboy root 0 71 01:54 3

相关文章:

  • Java架构师之路六、高并发与性能优化:高并发编程、性能调优、线程池、NIO、Netty、高性能数据库等。
  • Movelt使用笔记-Movelt Setup Assistant
  • C# OpenCvSharp Tracker 目标追踪
  • ✅技术社区项目—JWT身份验证
  • ​LeetCode解法汇总2583. 二叉树中的第 K 大层和
  • 【黑马程序员】2、TypeScript介绍_黑马程序员前端TypeScript教程,TypeScript零基础入门到实战全套教程
  • 【论文精读】ConvNeXt
  • 2.26作业
  • Kafka3.x进阶
  • 百亿大佬南存辉瞄准光伏板块,正泰电器分拆正泰安能上市
  • Android的LiveData
  • 机器学习理论知识学习
  • 化学分子Mol2文件格式与使用注意事项
  • vue-element-admin如何绕开系统的请求的路由,使用静态路由
  • 【GameFramework框架内置模块】4、内置模块之调试器(Debugger)
  • 10个最佳ES6特性 ES7与ES8的特性
  • codis proxy处理流程
  • golang 发送GET和POST示例
  • JavaScript异步流程控制的前世今生
  • Java超时控制的实现
  • Java多线程(4):使用线程池执行定时任务
  • Js基础知识(一) - 变量
  • Octave 入门
  • Python socket服务器端、客户端传送信息
  • thinkphp5.1 easywechat4 微信第三方开放平台
  • Vim Clutch | 面向脚踏板编程……
  • windows下如何用phpstorm同步测试服务器
  • 解决iview多表头动态更改列元素发生的错误
  • 使用Tinker来调试Laravel应用程序的数据以及使用Tinker一些总结
  • 我的业余项目总结
  • 学习笔记TF060:图像语音结合,看图说话
  • ​Kaggle X光肺炎检测比赛第二名方案解析 | CVPR 2020 Workshop
  • (Python) SOAP Web Service (HTTP POST)
  • (SpringBoot)第七章:SpringBoot日志文件
  • (二)构建dubbo分布式平台-平台功能导图
  • (一)Java算法:二分查找
  • (转)http协议
  • (转载)VS2010/MFC编程入门之三十四(菜单:VS2010菜单资源详解)
  • .Mobi域名介绍
  • .naturalWidth 和naturalHeight属性,
  • .NET CF命令行调试器MDbg入门(三) 进程控制
  • .NET Core SkiaSharp 替代 System.Drawing.Common 的一些用法
  • .NET(C#、VB)APP开发——Smobiler平台控件介绍:Bluetooth组件
  • .NET/C# 检测电脑上安装的 .NET Framework 的版本
  • .NET企业级应用架构设计系列之应用服务器
  • .one4-V-XXXXXXXX勒索病毒数据怎么处理|数据解密恢复
  • @EnableAsync和@Async开始异步任务支持
  • @开发者,一文搞懂什么是 C# 计时器!
  • [20170713] 无法访问SQL Server
  • [2019.3.20]BZOJ4573 [Zjoi2016]大森林
  • [Angular] 笔记 8:list/detail 页面以及@Input
  • [ASP.NET MVC]如何定制Numeric属性/字段验证消息
  • [BZOJ 1032][JSOI2007]祖码Zuma(区间Dp)
  • [daily][archlinux][game] 几个linux下还不错的游戏
  • [FFmpeg学习]从视频中获取图片