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


    1. passwd 给用户设置密码

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

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

    –stdin 从标准输入获取信息

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

    2. chpasswd 批量设置密码

    bash脚本

    for n in {01..10}
    do
       useradd oldboy$n
    done
    
    • 1
    • 2
    • 3
    • 4

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

    [root@oldboy ~]# vim user.list
    oldboy01:01
    oldboy02:02
    oldboy03:03
    oldboy04:04
    oldboy05:05
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    批量设置密码命令:

    chpasswd

    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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

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

    [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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    通过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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    -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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    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按题意要求授权。
    
    • 1
    • 2
    [root@oldboy ~]# chage -l oldboy
    最近一次密码修改时间					:6月 30, 2030
    密码过期时间					:从不
    密码失效时间					:从不
    帐户过期时间						:从不
    两次改变密码之间相距的最小天数		:0
    两次改变密码之间相距的最大天数		:99999
    在密码过期之前警告的天数	:7
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

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

    [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 ~]# 
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16

    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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

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

    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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

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

    [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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24

    第二个参数:

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

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

    用普通用户登录管理,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
    
    • 1
    • 2

    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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19

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

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

    #设置粒度,最小是一个命令,允许他执行这个命令时拥有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 ~]$ 
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19

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

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

    3)不需要root密码。

    查看用户信息命令

    	id
    	whoami
    	who
    	w
    
    • 1
    • 2
    • 3
    • 4

    查看用户日志

    last
    lastlog
    /var/log/secure 远程登录安全日志
    
    • 1
    • 2
    • 3

    更改文件属性:

    更改用户所属用户和组: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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    -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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
  • 相关阅读:
    3D ToF赋能小米CyberDog 2提升视觉灵敏度
    oracle实验四(视图、索引和完整性)
    如何学习并上手SQL语言?
    【每日进步一点点】C语言刷题技巧及训练4
    【小尘送书-第六期】《巧用ChatGPT轻松玩转新媒体运营》AI赋能运营全流程,帮你弯道超车、轻松攀登运营之巅
    网络运维Day06
    创建型:工厂模式-工厂方法、抽象工厂
    DNS域名解析----分离解析、多域名解析、父域与子域
    ubuntu系统 kubeadm方式搭建k8s集群
    RocketMQ 系列(四) 消息存储
  • 原文地址:https://blog.csdn.net/dws123654/article/details/136224674