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

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# mkpasswdvyig|y43q  
有时,我们需要生成指定长度的密码,用mkpasswd命令也可以满足。比如,生成12位长度的密码,示例命令如下:
# mkpasswd -l 124kj3a$voygxc  
当然,我们还可以指定密码中有几个特殊字符或几个数字,示例命令如下:
# mkpasswd -l 12 -s 0 -d 3e29kxw4adzrt  
上例中,-s指定特殊字符的个数,-d指定数字的个数。用这个随机字符串作为密码再好不过了,只不过它不方便记忆。大家是否还记得第1章阿铭介绍的keepass工具?大家把密码记录在这里,还是很方便的。
5.4 用户身份切换
linux系统中,有些事情只有root用户才能做,普通用户是不能做的,这时就需要临时切换到root身份了。下面阿铭带你做一个小试验,创建test账户,并修改其密码,这样我们就可以使用test账户登录linux了。具体操作方法如下:
# useradd test# passwd test更改用户 test 的密码 。新的密码:重新输入新的密码:passwd:所有的身份验证令牌已经成功更新。  
然后用test账户登录linux,示例命令如下:
login as: testtest@192.168.188.128's password:$ whoamitest  
登录后,使用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 上$ whoamitest  
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 anywhereroot all=(all) alltest 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, amingcmnd_alias su = /usr/bin/suuser_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 -# whoamiroot  
不允许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的情况。


品英Pickering发布新款基于PXI/PXIe的微波开关产品
瑞萨电子推出适用于ADAS和自动驾驶的集成软件开发环境
AMD:高端处理器最高温度为90度是正常的
济南邮储银行采用B.E.G. KNX智能照明系统实现大楼照明系统智能控制
使用ESP8266驱动DHT11温湿度传感器
Linux系统用户与用户组管理(下)
触摸屏的应用与工作原理
电动汽车开久了电池还耐用吗
拜登政府被曝要求沙特撤资硅谷AI芯片企业,美监管机构坚称“维护国家安全”
AMD谋划崛起,服务器打先锋
华为P10发来坏消息,竟再次被自家荣耀V9秒杀!
小米6黑科技三项:骁龙835、取消3.5mm耳机孔、IP67防水
如何使深度学习系统在超级计算机上测试运行?
剩余电流监测仪在施工场地的应用
大联大携手展讯打造新一代2.5G手机平台解决方案
集成数字下变频器功能的高速ADC的奇怪行为
采样保持输出噪声有两个关键分量!
人工智能指出有天体撞地球?
AWTK 串口屏开发(5) - MCU端 SDK 用法
天马支持真我10 Pro+全球首发 2160Hz超高频PWM调光联合定制