本节介绍关于密码设置的相关内容以及如何进行用户切换。
1、passwd:设置用户密码
密码是用户进入系统的钥匙,passwd命令可以帮助我们修改、管理用户密码。
我们创建一个test用户来实践passwd的相关用法
[root@localhost~]# useradd test
普通用户和root用户对于passwd有着不同的用法(权限):
root用户可以更改其他任意账号的密码以及相关的密码属性:
passwd [options] USERNAME:修改指定用户的密码,但仅root有此权限;
options包括:
-l,-u:锁定和解锁用户;
-d:清除用户密码串;
-e DATE: 过期期限,日期;
-i DAYS:非活动期限;
-n DAYS:密码的最短使用期限;
-x DAYS:密码的最长使用期限;
-w DAYS:警告期限;
注:这些选项只有root有权使用
直接使用passwd可以用于修改自己的密码:
[root@localhost ~]# passwd
Changing password for user root.
New password:
Retype new password:
passwd: all authentication tokens updatedsuccessfully.
[root@localhost ~]#
--stdin:非交互式修改密码。(仅限root使用)
echo "密码字符串" | passwd --stdin USERNAME
使用--stdin可以非交互式地修改密码(无需确认或任何系统提示),如:
[root@localhost~]# echo "PASSWORD" | passwd --stdin root
Changingpassword for user root.
passwd: allauthentication tokens updated successfully.
刚开始通过useradd创建用户时,默认没有密码,此时你到/etc/shadow中去看一眼会发现:用户密码位显示比较特殊,是!!。这个时候可以通过root用户去赋予用户密码,普通用户是没法对自己的密码进行初次赋值的。
注意:root有权对任何账户进行密码修改、管理。而普通用户只能修改自己的密码字符串。
[root@localhost ~]# passwd test
Changing password for user test.
New password:
Retype new password:
passwd: all authentication tokens updatedsuccessfully.
普通用户可以直接输入passwd来修改密码
先清空test用户的密码串
[root@localhost ~]# passwd -d test
Removing password for user test.
passwd: Success
通过su命令登录test用户(su命令本文会讲解),并修改密码:
[root@localhost ~]# su - test
Last login: Fri Aug 10 13:00:07 EDT 2018 onpts/0
[test@localhost ~]$ passwd
Changing password for user test.
New password:
Retype new password:
passwd: all authentication tokens updatedsuccessfully.
[test@localhost ~]$
注意:由于我们已经通过root给该用户赋过一次密码了,因此后续可以由用户自行设置修改。创建用户后第一次赋值密码需要用root用户。
2、id:显示当前用户ID
难道每次确认自己的UID及相关信息都要到/etc/passwd去查看么?其实是不用的,id命令可以帮你显示与自己相关的用户信息
id [OPTION]... [USER]
-u:仅显示有效的UID;
-g: 仅显示用户的基本组ID;
-G:仅显示用户所属的所有组的ID;
-n:显示名字而非ID;
3su:切换用户
通过su命令去切换用户有两种类型:
登录式切换:会通过读取目标用户的配置文件来重新初始化
su - USERNAME
su -l USERNAME
非登录式切换:不会读取目标用户的配置文件进行初始化
su USERNAME
注意:管理员可无密码切换至其它任何用户;
-c 'COMMAND':可以指定用户的身份运行此处指定的命令;有时候我们需要切换用户来执行某命令,但是就执行一条,可以使用这个选项来避免反复切换用户。
举例:
[root@localhost ~]# echo -e "$PATH\n$HOME\n$PWD\n$SPOLL"
/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
/root
/root
[root@localhost ~]# su - test
Last login: Fri Aug 10 15:03:06 EDT 2018 onpts/0
[test@localhost ~]$ echo -e"$PATH\n$HOME\n$PWD\n$SPOLL"
/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/test/.local/bin:/home/test/bin
/home/test
/home/test
[test@localhost ~]$ su root
Password:
[root@localhost test]# echo -e"$PATH\n$HOME\n$PWD\n$SPOLL"
/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/test/.local/bin:/home/test/bin
/root
/home/test
看出什么来了吗?没错,使用非交互式登录时,很多环境变量都不会变,如PATH、默认工作目录、邮箱等都不会变,但是用户的身份、家目录切过来了。这会导致你使用某些命令时,不得不使用绝对路径,所以在日常工作中,su - 用得更多些。