7.7 chage:修改用户密码有效期

chage命令用于查看或修改用户密码的有效期,有些参数和passwd的功能相同。
 
-d    设置上一次密码更改的日期
-E    账号过期的日期。日期格式为YYYY-MM-DD
-I    设置密码过期多少天后禁用账户
-l    显示账号有效期的信息
-m    密码可更改的最小天数。默认为0,表示任何时候都可以更改密码
-M    密码保持有效的最大天数
-W    密码到期前,提前收到警告信息的天数
 
要求oldboy用户7天之内不能更改密码,60天以后必须修改密码,过期前10天通知oldboy用户,过期后30天后禁止用户登录。
 
[root@cs6 ~]# chage -m 7 -M 60 -W 10 -I 30 lewen
[root@cs6 ~]# chage -m7 -M60 -W10 -I30 lewen
[root@cs6 ~]# chage -l lewen
Last password change : May 11, 2019
Password expires : Jul 10, 2019
Password inactive : Aug 09, 2019
Account expires : never
Minimum number of days between password change : 7
Maximum number of days between password change : 60
Number of days of warning before password expires : 10

7.8 chpasswd:批量更新用户密码

    chpasswd命令用于从标准输入中读取一定格式的用户名、密码来批量更新用户的密码,其格式为“用户名:密码”。
 
-e    默认格式是明文密码,使用e参数则需要加密的密码

命令行批量修改密码

[root@cs6 ~]# chpasswd
root:123456
lewen:123456
[root@cs6 ~]# #<==在新的空行输入Ctrl+D结束输入。

生产案例

范例7-18:批量创建10个用户stu0l-stul0,并且设置8位随机密码,要求不能使用Shell的循环(例如:for、while等),只能用Linux命令及管道实现,此题前面也用passwd的方法实现过,本例将采用chpasswd方法来实现。
 
1)添加10个用户:
[root@cs6 ~]# echo stu{01..10}|xargs -n 1 useradd
[root@cs6 ~]# tail /etc/passwd
stu01:x:1001:1001::/home/stu01:/bin/bash
stu02:x:1002:1002::/home/stu02:/bin/bash
stu03:x:1003:1003::/home/stu03:/bin/bash
stu04:x:1004:1004::/home/stu04:/bin/bash
stu05:x:1005:1005::/home/stu05:/bin/bash
stu06:x:1006:1006::/home/stu06:/bin/bash
stu07:x:1007:1007::/home/stu07:/bin/bash
stu08:x:1008:1008::/home/stu08:/bin/bash
stu09:x:1009:1009::/home/stu09:/bin/bash
stu10:x:1010:1010::/home/stu10:/bin/bash
2)以“用户名:密码”的格式将新添加的用户写入pass.txt文件:
[root@cs6 ~]# echo stu{01..10}:$((RANDOM+10000000))|tr " " "\n" >pass.txt    #将空格变成换行符\n
[root@cs6 ~]# cat pass.txt
stu01:10027070
stu02:10027493
stu03:10013323
stu04:10023959
stu05:10001639
stu06:10003292
stu07:10018430
stu08:10012448
stu09:10022958
stu10:10011925
3)chpasswd将从文件pass.txt中读取相关的数据,为对应的用户设置冒号后面的密码:

[root@cs6 ~]# chpasswd <pass.txt
测试所设置密码的有效性:
[root@cs6 ~]# su - stu08
[stu08@cs6 ~]$ su - stu10
Password:
[stu10@cs6 ~]$ whoami
stu10

7.9 su:切换用户

su命令用于将当前用户切换到指定用户或者以指定用户的身份执行命令或程序。
 
若省略了命令后面的用户名,则默认切换为root用户。
从root用户切换到普通用户时,不需要任何密码;从普通用户切换到root用户时,需要输入root 密码。
 
-,-l,-login    切换用户的同时,将用户的家目录、系统环境等重新按切换后的用户初始化*
-c             向Shell传递单个命令
 
[lewen@cs6 ~]$ whoami
lewen [lewen@cs6 ~]$ su - root
Password:
[root@cs6 ~]# env |egrep "USER|MAIL|PWD|LOGNAME"
USER=root
MAIL=/var/spool/mail/root
PWD=/root
LOGNAME=root
 
从上面的范例可以得出如下结论:
“su 用户名”虽然能够切换到对应的用户,但是登录后的环境变量信息还是切换之前用户的环境变量信息。
“su - 用户名”不但能切换到相应的用户,还能将登录后的环境变量一并切换,这是标准规范的操作方法。
 
如何让系统在每一次开机时都能自动以普通用户启动指定的服务脚本?

[root@cs6 ~]# taiL -1 /ete/rc.local #<==在开机启动文件/etc/rc.local中写入启动命令。
su - lewen -c '/bin/sh /service/scripts/deploy.sh'
    通过普通用户运行服务是一个很好地提升系统安全性的办法,在生产环境中,大多数服务都可以通过普通用户来启动(不用特权端口),而不用root用户启动服务。这样就可以使系统的安全性又提高一个等级,同时管理时使用普通户管理就可以了,管理者不需要有root权限。
 
su命令总结
1)普通用户切换到root用户,可使用su- 或su - root,但必须输入root密码才能完成切换。
2)root用户切换到普通用户,可使用“su - 普通用户名”的写法。不需要输入任何密码就能完成切换。在CentOS5.X系统中,切换到普通用户后,再执行一些命令如ifconfig时,可能会遭遇环境变量PATH的路径问题,也会因此找不到某些系统命令(一般是/sbin,/usr/sbin等下面的命令),这时就需要使用全路径执行或者调整配置普通用户的PATH变量内容,CentOS6和CentOS7不存在这方面的问题。
3)如果仅希望在某用户下执行命令,而不用直接切换到该用户下来操作,可以使用su - 用户名 -c ”命令” 的方式。
 

7.7-9 chage、chpasswd、su的更多相关文章

  1. 第六天、用户、组、权限、grep

    第六天.用户.组.权限.grep 权限总结表 操作 源目录权限 文件权限 目标目录权限 rm删文件 wx - - mv改名 wx - - mv移动文件 wx r wx cp复制文件 x r wx &g ...

  2. Linux 用户篇——用户管理命令之id、whoami、su、chage

    一.浅谈id.whoami.su.chage 本篇是续写上一篇<Linux 用户篇——用户管理命令之useradd.passwd.userdel.usermod>. (1)id命令 命令格 ...

  3. Linux 下以其他用户身份运行程序—— su、sudo、runuser

      本文综合分析了Linux系统下,如何使用runuser命令.su命令和sudo命令以其他用户身份来运行程序,以及这三个命令的运行效率比较. 一.su 命令临时切换用户身份 SU:( Switch ...

  4. Linux常用命令4(grep、df、du、awk、su、ll)

    [grep命令] grep常用用法 [root@www ~]# grep [-acinv] [--color=auto] '搜寻字符串' filename选项与参数:-a :将 binary 文件以 ...

  5. linux初学terminal命令(1)ls、cd、su、man、pwd、useradd、passwd、cat、Ctrl+C、Ctrl+Z、Ctrl+L

    terminal命令(terminal终端对应windows 按下win(linux下叫Super键)+r,输入cmd(command,命令),召唤出来的Dos控制台) 1. ls(英文list):简 ...

  6. su、sudo、su - root的区别

    su和sudo的区别 共同点:都是root用户权限: 不同点:su只获得root权限,工作环境不变,还是在切换之前用户的工作环境:sudo是完全获得root的权限和root的工作环境. sudo:表示 ...

  7. linux命令格式及who、whoami、su和passwd命令

    linux命令格式及who.whoami.su和passwd命令 1. Linux命令的格式 Linux命令的语法格式: 命令 [选项] [参数] 命令格式中命令.选项.参数的具体含义: 命令:告诉L ...

  8. 算法:贪心、回溯(su)、分治、动态规划,思想简要

    贪心算法: 只做出当前看来最好的选择,而不从整体考虑最优,他所作出的是局部最优解.使用该算法的前提是必须具备无后效性,即某个状态以前的选择不会影响以后的状态的选择,只与当前状态有关. 回溯算法: 本质 ...

  9. Linux权限管理(用户、组、文件管理)

    一. Linux上的文件管理类命令都有哪些,其常用的使用方法及其相关示例演示. 1. 文件查看类命令cat,tac, head, tail, more, less, ls ,file: -ls : l ...

随机推荐

  1. Math类的random()方法

    Math类的random()方法 Math类的random()方法可以生成大于等于0.0.小于1.0的double型随机数. Math.random()方法语句基础上处理可获得多种类型.或任意范围的随 ...

  2. (十)Docker-V 详解

    1. 作用 挂载宿主机的一个目录. 2. 案例 譬如我要启动一个centos容器,宿主机的/test目录挂载到容器的/soft目录,可通过以下方式指定: # docker run -it -v /te ...

  3. 002-Java的标识符和关键字

    目录 一.标识符 1.什么是标识符 2.标识符的命名规则 3.标识符的命名规范 二.关键字 1.什么是关键字 2.Java中的关键字 一.标识符 1.什么是标识符   标识符就是程序员自己规定的代表一 ...

  4. Day13_67_interrupt() 方法

    interrupt() 方法 中断线程 * interrupt()方法的简单理解 - interrupt() 方法只是改变线程的阻塞状态而已,让一个正在阻塞状态的线程,恢复执行.但是它不会中断一个正在 ...

  5. 群晖 创建nfs 共享文件夹 k8s 使用

    1) 打开控制面板 2) 打开共享文件夹 3) 新增共享文件夹 4) 基本信息配置 2) 3) 4) 5) 点完确定,应该会退出,继续选中刚才创建的,点编辑 2) 3) 5)返回主页面,点击file ...

  6. 使用defineProperty实现自定义setter, 简化前端Angular的重构工作

    一.问题场景 Angular的双向绑定给我们开发提供了很大的遍历,将父scope的引用变量作为参数传递给子指令,这样就可以方便的在父作用域内进行业务操作,数据变更会自动传递到子指令.但是如果你基于一个 ...

  7. SpringCloud(五)GateWay网关

    Config 分布式配置中心 概述 微服务意味着要将单体应用中的业务拆分成个个子服务,每个服务的粒度相对较小因此系统中会出现大量的服务 由于每个服务都需要必要的配置信息才能运行,所以一套集中式的.动态 ...

  8. php 数学函数bc的使用(浮点数计算)

    简介: 对于任意精度的数学,PHP提供了支持用字符串表示的任意大小和精度的数字的二进制计算,最多为2147483647-1(或0x7FFFFFFF-1). bcadd - 2个任意精度数字的加法计算 ...

  9. hdu3665 水最短路

    题意 :        从起点0开始,到达最近的那个是海边的城镇的距离.. 思路:       水的最短路,随你怎么写,dij,floyd,spfa..都行,只要你喜欢..我写的spfa好久不写了,复 ...

  10. 安装mysql警告: Header V3 DSA/SHA1 Signature, key ID 5072e1f5: NOKEY

    CentOS安装rpm安装MySQL时爆出警告: warning: mysql-community-server-5.7.18-1.el6.x86_64.rpm: Header V3 DSA/SHA1 ...