Linux入门真经-020密码的设置与用户切换

Linux入门真经-020密码的设置与用户切换

本节介绍关于密码设置的相关内容以及如何进行用户切换。

 

1、passwd:设置用户密码

 

密码是用户进入系统的钥匙,passwd命令可以帮助我们修改、管理用户密码。

我们创建一个test用户来实践passwd的相关用法

 

[[email protected]~]# 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可以用于修改自己的密码:

 

[[email protected] ~]# passwd

Changing password for user root.

New password:

Retype new password:

passwd: all authentication tokens updatedsuccessfully.

[[email protected] ~]#

 

--stdin:非交互式修改密码。(仅限root使用)

echo "密码字符串" | passwd --stdin USERNAME

使用--stdin可以非交互式地修改密码(无需确认或任何系统提示),如:

 

[[email protected]~]# echo "PASSWORD" | passwd --stdin root

Changingpassword for user root.

passwd: allauthentication tokens updated successfully.

 

刚开始通过useradd创建用户时,默认没有密码,此时你到/etc/shadow中去看一眼会发现:用户密码位显示比较特殊,是!!。这个时候可以通过root用户去赋予用户密码,普通用户是没法对自己的密码进行初次赋值的。

注意:root有权对任何账户进行密码修改、管理。而普通用户只能修改自己的密码字符串。

 

[[email protected] ~]# passwd test

Changing password for user test.

New password:

Retype new password:

passwd: all authentication tokens updatedsuccessfully.

 

普通用户可以直接输入passwd来修改密码

先清空test用户的密码串

 

[[email protected] ~]# passwd -d test

Removing password for user test.

passwd: Success

 

通过su命令登录test用户(su命令本文会讲解),并修改密码:

 

[[email protected] ~]# su - test

Last login: Fri Aug 10 13:00:07 EDT 2018 onpts/0

[[email protected] ~]$ passwd

Changing password for user test.

New password:

Retype new password:

passwd: all authentication tokens updatedsuccessfully.

[[email protected] ~]$

 

注意:由于我们已经通过root给该用户赋过一次密码了,因此后续可以由用户自行设置修改。创建用户后第一次赋值密码需要用root用户。

 

2、id:显示当前用户ID

 

         难道每次确认自己的UID及相关信息都要到/etc/passwd去查看么?其实是不用的,id命令可以帮你显示与自己相关的用户信息

         id [OPTION]... [USER]

                   -u:仅显示有效的UID;

                  -g: 仅显示用户的基本组ID;

                   -G:仅显示用户所属的所有组的ID;

                   -n:显示名字而非ID;

 

3​su:切换用户

 

通过su命令去切换用户有两种类型:

登录式切换:会通过读取目标用户的配置文件来重新初始化

         su - USERNAME

         su -l USERNAME

非登录式切换:不会读取目标用户的配置文件进行初始化

         su USERNAME

 注意:管理员可无密码切换至其它任何用户;

    ​-c 'COMMAND':可以指定用户的身份运行此处指定的命令;有时候我们需要切换用户来执行某命令,但是就执行一条,可以使用这个选项来避免反复切换用户。

举例:

 

[[email protected] ~]# 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

 

[[email protected] ~]# su - test

Last login: Fri Aug 10 15:03:06 EDT 2018 onpts/0

[[email protected] ~]$ 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

 

[[email protected] ~]$ su root

Password:

[[email protected] 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 - 用得更多些。

 

关注本公众号获取每日更新

Linux入门真经-020密码的设置与用户切换