Linux系统用户与用户组管理(下)

嵌入式技术

1335人已加入

描述

5.3 用户密码管理

密码对于一个用户来说是非常关键的,而密码管理也是系统管理员的一项非常重要的任务。

5.3.1 命令passwd

账户创建后,默认是没有设置密码的,只有设置好密码后,才可以登录系统。为了安全,在为用户创建密码时,请尽量设置复杂一些。阿铭建议你按照如下规则设置密码:

长度大于10个字符;

密码中包含大小写字母、数字以及特殊字符*、&、%等;

不规则性(不要出现happy、love、linux、7758520、111111等单词或者数字);

密码中不要带有自己的名字、电话、生日以及公司名字等。

为用户设置密码时,可以使用命令passwd,其格式为passwd [username]。该命令后面若不加用户名字,则是为自己设定密码,示例命令如下:

 

# passwd
更改用户root的密码 。
新的密码:
重新输入新的密码:
passwd:所有的身份验证令牌已经成功更新。

 

如果你登录的是root账户,后面可以跟普通账户的名字,意思是修改指定账户的密码,示例命令如下:

 

# passwd user11
更改用户 user11 的密码 。
新的密码:
重新输入新的密码:
passwd:所有的身份验证令牌已经成功更新。

 

需要注意的是,只有root才可以修改其他账户的密码,普通账户只能修改自己的密码。

5.3.2 命令mkpasswd

命令mkpasswd用于生成密码。我们安装的Linux默认是没有这个命令的,需要安装一个expect软件包,安装命令如下:

 

# yum install -y expect
# mkpasswd
vYIg|y43q

 

有时,我们需要生成指定长度的密码,用mkpasswd命令也可以满足。比如,生成12位长度的密码,示例命令如下:

 

# mkpasswd -l 12
4Kj3a$Voygxc

 

当然,我们还可以指定密码中有几个特殊字符或几个数字,示例命令如下:

 

# mkpasswd -l 12 -s 0 -d 3
e29kxw4aDZrt

 

上例中,-s指定特殊字符的个数,-d指定数字的个数。用这个随机字符串作为密码再好不过了,只不过它不方便记忆。大家是否还记得第1章阿铭介绍的KeePass工具?大家把密码记录在这里,还是很方便的。

5.4 用户身份切换

Linux系统中,有些事情只有root用户才能做,普通用户是不能做的,这时就需要临时切换到root身份了。下面阿铭带你做一个小试验,创建test账户,并修改其密码,这样我们就可以使用test账户登录Linux了。具体操作方法如下:

 

# useradd test
# passwd test
更改用户 test 的密码 。
新的密码:
重新输入新的密码:
passwd:所有的身份验证令牌已经成功更新。

 

然后用test账户登录Linux,示例命令如下:

 

login as: test
test@192.168.188.128's password:
$ whoami
test

 

登录后,使用whoami命令查看,发现当前用户是test。普通用户和root用户的shell提示符号有些区别,root账户是#,普通用户是$。

5.4.1 命令su

命令su的格式为su [-] username,后面可以跟-,也可以不跟。普通用户的su命令不加username时,就是切换到root用户。当然,root用户同样可以使用su命令切换到普通用户。该命令加上-后,会初始化当前用户的各种环境变量(关于环境变量这部分内容,阿铭放在第11章中讲解)。下面阿铭做个简单的试验来说明加与不加-的区别,示例命令如下:

 

$ su -
密码:
# pwd
/root
如果不加-切换到root账户时,当前目录没有变化;而加上-切换到root账户时,当前目录为root账户的家目录。这跟直接登录root账户是一样的。当由root切换到普通用户时,是不需要输入密码的。在root下切换到普通用户示例命令如下:
# su - test
上一次登录:四 1月  2 0709 EST 2020从 192.168.72.1pts/2 上
$ whoami
test

 

5.4.2 命令sudo

用su可以切换用户身份,而且每个普通用户都能切换到root身份。如果某个用户不小心泄漏了root的密码,那岂不是系统非常不安全?没错,为了改进这个问题,Linux系统工程师设计了sudo这个命令。使用sudo命令执行一个只有root才能执行的命令是可以办到的,但是需要输入密码。这个密码并不是root的密码,而是用户自己的密码。默认情况下,只有root用户能使用sudo命令,普通用户想要使用sudo,是需要root预先设定的。我们可以使用visudo命令编辑相关的配置文件/etc/sudoers。如果没有visudo这个命令,请使用命令yum install -y sudo安装。

默认root支持sudo,是因为这个文件中有一行root ALL=(ALL) ALL。在该行下面加入test ALL=(ALL) ALL,就可以让test用户拥有sudo的特权。从左到右,第一段test这里为一个用户,指定让哪个用户有sudo特权;第二段ALL=(ALL)比较难理解,左边的ALL指的是所有的主机,右边的ALL指的是获取哪个用户的身份,第二段几乎都不用配置;第三段设定可以使用sudo的命令有哪些。

使用visudo命令编辑/etc/sudoers配置文件(必须要使用root用户),它的使用方法和前面阿铭介绍的vi命令一样,即输入i进入编辑模式,编辑完成后,按Esc键,再输入:wq完成保存。具体操作方法如下所示:

 

## Allow root to run any commands anywhere
root ALL=(ALL)       ALL
test ALL=(ALL)       ALL

 

此时可以验证一下test账户的权限了,方法如下(如下操作是在root账号下进行的):

 

# su test
$ ls //当前目录是在/root下
ls: 无法打开目录'.': 权限不够
$ sudo ls
我们信任您已经从系统管理员那里了解了日常注意事项。
总结起来无外乎这三点:
 #1) 尊重别人的隐私。
 #2) 输入前要先考虑(后果和风险)。
 #3) 权力越大,责任越大。
[sudo] test 的密码:
123 456  anaconda-ks.cfg

 

由于切换到test账户后当前目录还是/root,test账户没有任何权限,所以使用命令ls查看时,提示权限不够。然而使用命令sudo ls输入test账户自身的密码后,就有权限了。初次使用sudo命令时,会出现上面的一大段提示,当再次使用sudo命令时则不再提示。

如果每增加一个用户就设置一行,这样太麻烦了,所以可以这样设置:把# %wheel ALL=(ALL) ALL前面的#去掉,让这一行生效。它的意思是,wheel这个组的所有用户都拥有了sudo的权利。接下来,只要把需要设置sudo权限的所有用户加入到wheel这个组中即可。如下所示:

 

## Allows people in group wheel to run all commands
%wheel  ALL=(ALL)       ALL

 

配置文件/etc/sudoers包含了许多配置项,可以使用命令mansudoers来获得帮助信息。下面阿铭介绍一个很实用的案例,我们的需求是把Linux服务器设置成这个样子:只允许使用普通账户登录,而普通账户登录后,可以不输入密码就能用sudo切换到root账户。阿铭的配置方法是,输入如下命令:

 

# visudo

 

然后在文件的最后加入如下3行:

 

User_Alias USER_SU = test, test1, aming
Cmnd_Alias SU = /usr/bin/su
USER_SU ALL=(ALL) NOPASSWD: SU

 

第一行设定了一个user别名,其实这个USER_SU相当于是test、test1和aming三个账户;第二行设定了一个命令别名,SU相当于/usr/bin/su;第三行我们刚刚介绍过。保存配置文件后,使用test、test1、aming这3个账户登录Linux。执行命令sudosu -切换到root账户,获取root账户的所有权利,如下所示:

 

# su - test
$ sudo su -
# whoami
root

 

不允许root直接登录,这个问题如何解决呢?其实方法很简单,即设置一个复杂得连自己都记不住的密码。不过这样也会有一个问题,就是普通用户可以使用su命令切换到root,然后他再修改简单的密码就能直接登录root了。其实阿铭还有一个更好的办法。

5.4.3 不允许root远程登录Linux

/etc/ssh/sshd_config为sshd服务的配置文件,默认允许root账户通过ssh远程登录Linux。要想不允许root用户远程登录Linux,具体操作方法为:修改配置文件/etc/ssh/sshd_config,在文件中查找PermitRootLoginyes并修改为PermitRootLogin no。保存配置文件后,需要重启sshd服务,如下所示:

 

# systemctl restart sshd.service

 

需要注意的是,阿铭提供的这个方法只适用于通过ssh远程登录Linux的情况。

  审核编辑:汤梓红

 

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分