• Linux基础-用户密码管理,组命令管理,身份切换


    创建完账户后,默认是没有设置密码的,所以该账户是没有办法登录操作系统的.只有使用passwd为账户设置好密码后方可登录系统.
    使用passwd为用户创建密码时,为了安全起见,请尽量设置复杂一些.可以按照如下规则设置密码:

    1. 长度大于10位字符
    2. 密码中包含大小写字母,数字以及特殊符号"@","!","$","*"等
    3. 不规则性(不要出现自己名字,公司名字,自己电话,等等简单的密码)

    需要注意:
    1. 普通用户只能更改自己的密码
    2. 管理员root能更改任何人密码

    1. 使用passwd命令修改用户密码
      [root@localhost ~]# type passwd
      passwd 是 /usr/bin/passwd
      [root@localhost ~]# passwd --help
      用法: passwd [选项...] <帐号名称>
      -k, --keep-tokens 保持身份验证令牌不过期
      -d, --delete 删除已命名帐号的密码(只有根用户才能进行此操作)
      -l, --lock 锁定指名帐户的密码(仅限 root 用户)
      -u, --unlock 解锁指名账户的密码(仅限 root 用户)
      -e, --expire 终止指名帐户的密码(仅限 root 用户)
      -f, --force 强制执行操作
      -x, --maximum=DAYS 密码的最长有效时限(只有根用户才能进行此操作)
      -n, --minimum=DAYS 密码的最短有效时限(只有根用户才能进行此操作)
      -w, --warning=DAYS 在密码过期前多少天开始提醒用户(只有根用户才能进行此操作)
      -i, --inactive=DAYS 当密码过期后经过多少天该帐号会被禁用(只有根用户才能进行此操作)
      -S, --status 报告已命名帐号的密码状态(只有根用户才能进行此操作)
      --stdin 从标准输入读取令牌(只有根用户才能进行此操作)

    Help options:
    -?, --help Show this help message
    --usage Display brief usage message
    [root@localhost ~]#

    语法:
    passwd [username]

    1. 'passwd'后面不加username则是修改当前账户的密码
    2. 如果你登录的是root账户,后面可以指定要修改密码的账户
    3. 只有root账户才可以修改其他账户的密码,普通账户只能修改自己的密码,普通用户没有修改其他用户的权限

    //root用户登陆,修改root账户密码
    [root@oldboy ~]# passwd
    更改用户 root 的密码 。
    新的 密码:
    重新输入新的 密码:
    passwd: 所有的身份验证令牌已经成功更新。

    //root用户登陆,修改oldboy1账户密码
    [root@oldboy ~]# passwd oldboy
    更改用户 user11 的密码 。
    新的 密码:
    重新输入新的 密码:
    passwd: 所有的身份验证令牌已经成功更新。

    //普通用户修改root密码
    [oldstudent@oldboy ~]$ passwd root
    passwd: Only root can specify a user name.

    //无需用户交互修改密码, 将前者的输出结果, 成为后者的输入
    [root@oldboy ~]# echo "123" | passwd --stdin oldstudent
    Changing password for user oldstudent.
    passwd: all authentication tokens updated successfully.

    1. 随机密码生成工具几种方式:
    2. 系统内置变量生成随机密码
    3. mkpasswd密码生成工具

    [root@localhost ~]# echo $RANDOM | md5sum | cut -c 1-10
    1d5a32cc0d
    [root@localhost ~]#

    //-l密码长度默认7位, -d数字, -c小写字母,-C大写字母,-s特殊字符
    [root@oldboy ~]# yum install -y expect //需要安装扩展包
    [root@oldboy ~]# mkpasswd -l 15 -d 3 -C 5
    yB7LpqIM31>ktpB

    -l # (length of password, default = 7)
    指定密码的长度,默认是7位数
    -d # (min # of digits, default = 2)
    指定密码中数字最少位数,默认是2位
    -c # (min # of lowercase chars, default = 2)
    指定密码中小写字母最少位数,默认是2位
    -C # (min # of uppercase chars, default = 2)
    指定密码中大写字母最少位数,默认是2位
    -s # (min # of special chars, default = 1)
    指定密码中特殊字符最少位数,默认是1位

    推荐密码保存工具客户端,支持windows、MacOS、手机、以及浏览器插件
    Lastpass官方网站

    组账户信息保存在/etc/group和/etc/gshadow两个文件中

    1. /etc/group 组账户信息
      [root@localhost ~]# head -2 /etc/group
      root❌0:
      bin❌1:
      [root@localhost ~]#

    /etc/group由":"分割成4个字段,每隔字段的具体含义如下:
    字段名称 注释说明

    组账户名称 组的名称
    密码占位符 组的密码(存放在/etc/gshadow)
    组GID 组GID信息
    组成员 这里仅显示附加成员,基本成员不显示

    1. /etc/gshadow 组密码信息
      [root@localhost ~]# head -2 /etc/gshadow
      root:::
      bin:::
      [root@localhost ~]#

    /etc/gshadow由":"分割成4个字段,每个字段的具体含义如下:
    字段名称 注释说明

    组账户名称 组名称
    密码占位符 组密码
    组管理员 组管理员
    组成员 这里仅显示附加成员,基本成员不显示

    1. 使用groupadd命令新增组
      [root@localhost ~]# groupadd -h
      用法:groupadd [选项] 组

    选项:
    -f, --force 如果组已经存在则成功退出
    并且如果 GID 已经存在则取消 -g
    -g, --gid GID 为新组使用 GID
    -h, --help 显示此帮助信息并推出
    -K, --key KEY=VALUE 不使用 /etc/login.defs 中的默认值
    -o, --non-unique 允许创建有重复 GID 的组
    -p, --password PASSWORD 为新组使用此加密过的密码
    -r, --system 创建一个系统账户
    -R, --root CHROOT_DIR chroot 到的目录

    [root@localhost ~]#

    常用参数
    语法 : groupadd [-g GID] groupname

    //不指定gid默认从1000开始
    [root@localhost ~]# groupadd gtest
    [root@localhost ~]# tail -1 /etc/group
    gtest❌5010:

    //"-g"指定gid
    [root@localhost ~]# groupadd gtest1 -g 5021
    [root@localhost ~]# tail -1 /etc/group
    gtest1❌5021:
    [root@localhost ~]#

    //"-r"创建系统组,gid从201-999
    [root@localhost ~]# groupadd -r gsys
    [root@localhost ~]# tail -1 /etc/group
    gsys❌994:
    [root@localhost ~]#

    1. 使用groupmod命令修改组账户信息
      [root@localhost ~]# groupmod -h
      用法:groupmod [选项] 组

    选项:
    -g, --gid GID 将组 ID 改为 GID
    -h, --help 显示此帮助信息并推出
    -n, --new-name NEW_GROUP 改名为 NEW_GROUP
    -o, --non-unique 允许使用重复的 GID
    -p, --password PASSWORD 将密码更改为(加密过的) PASSWORD
    -R, --root CHROOT_DIR chroot 到的目录

    [root@localhost ~]#

    //"-g"修改组gid
    [root@localhost ~]# tail -1 /etc/group
    gsys❌994:
    [root@localhost ~]# groupmod -g 900 gsys
    [root@localhost ~]# tail -1 /etc/group
    gsys❌900:
    [root@localhost ~]#

    //"-n"修改组名称
    [root@localhost ~]# tail -1 /etc/group
    gsys❌900:
    [root@localhost ~]# groupmod -n gsystem gsys
    [root@localhost ~]# tail -1 /etc/group
    gsystem❌900:
    [root@localhost ~]#

    1. 使用groupdel删除组
      该命令没有特殊选项,如果一个用户有基本组和附加组,只能删除附加组,不能删除基本组
      //删除组
      [root@localhost ~]# tail -3 /etc/group
      gtest❌5010:
      gtest1❌5021:
      gsystem❌900:
      [root@localhost ~]# groupdel gsystem
      [root@localhost ~]# tail -3 /etc/group
      oldboy❌5003:test3
      gtest❌5010:
      gtest1❌5021:
      [root@localhost ~]#

    //删除用户附加组
    [root@localhost ~]# usermod -aG gtest test3
    [root@localhost ~]# tail -3 /etc/group
    oldboy❌5003:test3
    gtest❌5010:test3
    gtest1❌5021:
    [root@localhost ~]# tail -3 /etc/passwd
    mysql❌5002:5002::/home/mysql:/sbin/nologin
    dba❌996:1005::/home/dba:/sbin/nologin
    test3❌6000:1002::/home/test3:/sbin/nologin
    [root@localhost ~]# id test3
    uid=6000(test3) gid=1002(test2) 组=1002(test2),5003(oldboy),5010(gtest)
    [root@localhost ~]# groupdel gtest
    [root@localhost ~]# id test3
    uid=6000(test3) gid=1002(test2) 组=1002(test2),5003(oldboy)
    [root@localhost ~]#

    //无法删除用户基本组
    [root@localhost ~]# groupdel test2
    groupdel:不能移除用户“test2”的主组
    [root@localhost ~]# id test2
    uid=1002(test2) gid=1002(test2) 组=1002(test2)
    [root@localhost ~]#
    //只有删除用户或者用户变更基本组后,方可删除该组

    1. 使用gpasswd设置组密码
      [root@localhost ~]# groupadd dev_ops
      [root@localhost ~]# tail -3 /etc/group
      oldboy❌5003:test3
      gtest1❌5021:
      dev_ops❌5022:
      [root@localhost ~]# gpasswd dev_ops
      正在修改 dev_ops 组的密码
      新密码:
      请重新输入新密码:

    2. 使用newgrp命令切换基本组身份
      //检查账户信息
      [root@localhost ~]# id test2
      uid=1002(test2) gid=1002(test2) 组=1002(test2)

    //切换普通用户
    [root@localhost ~]# su - test2
    上一次登录:五 9月 12 00:00:40 CST 2014pts/1 上
    最后一次失败的登录:六 3月 16 00:00:08 CST 2019pts/1 上
    最有一次成功登录后有 4 次失败的登录尝试。

    //创建新文件,并验证权限
    [test2@localhost ~]$ touch group_test
    [test2@localhost ~]$ ll group_test
    -rw-rw-r-- 1 test2 test2 0 Mar 18 04:43 group_test

    //切换组信息
    [test2@localhost ~]$ newgrp dev_ops
    Password:
    [test2@localhost ~]$ id
    uid=1002(test2) gid=5022(dev_ops) groups=5022(dev_ops),1002(test2)

    //创建新文件,检查权限
    [test2@localhost ~]$ touch group_new
    [test2@localhost ~]$ ll group_*
    -rw-r--r-- 1 test2 dev_ops 0 Mar 18 04:46 group_new
    -rw-rw-r-- 1 test2 test2 0 Mar 18 04:43 group_test
    [test2@localhost ~]$

  • 相关阅读:
    RunLoop详解
    NSURLConnection基本用法(苹果原生)
    NSThread 基本使用
    NSOperation/NSOperationQueue详细使用介绍
    JSON解析
    XML解析
    GCD详细用法
    [Java]手动编译Java
    [Selenium] Grid 介绍
    [SoapUI] 循环遍历某个Test Case下的所有Test Step,将Cookie传递给这些Test Step
  • 原文地址:https://www.cnblogs.com/s-sx/p/11939935.html
Copyright © 2020-2023  润新知