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 ~]$

原文地址:https://www.cnblogs.com/s-sx/p/11939935.html