一、su命令:用于登录指定用户
1)su - 用户名
su - root #root是用户名
2)su - 指定用户名
超级管理员(root)登录其他用户通常不需要输入密码。其他用户登录其他用户需要输入密码。
#:井号指超级管理员用户,即root
$:美元符号指普通用户,即其他用户
二、sudo命令
英文全称Super User Do,干超级用户才能干的事,sudo最常用的功能就是使普通用户可以执行需要管理员权限的命令。
1)为什么会有sudo?(基础了解)
1、赋予普通用户一部分高权限命令,例如关机、重启、重启重要服务等等,帮助管理员管理系统。
2、允许系统管理员让普通用户执行一些或者全部的root命令的一个工具,如halt,reboot,su等等。这样不仅减少了root用户的登录 和管理时间,同样也提高了安全性。
3、在sudo于1980年前后被写出之前,一般用户管理系统的方式是利用su切换为超级用户。但是使用su的缺点之一在于必须要先告知超级用户的密码。
4、sudo使一般用户不需要知道超级用户的密码即可获得权限。首先超级用户将普通用户的名字、可以执行的特定命令、按照哪种用户或用户组的身份执行等信息,登记在特殊的文件中(通常是/etc/sudoers),即完成对该用户的授权(此时该用户称为“sudoer”);在一般用户需要取得特殊权限时,其可在命令前加上“sudo”,此时sudo将会询问该用户自己的密码(以确认终端机前的是该用户本人),回答后系统即会将该命令的进程以超级用户的权限运行。之后的一段时间内(默认为5分钟,可在/etc/sudoers自定义),使用sudo不需要再次输入密码。
2)sudo的配置文件:/etc/sudoers
1、格式: 谁可以使用 允许使用的主机=(以谁的身份)可执行命令列表
2、进入配置文件的两种方法
执行命令:visudo
vim /etc/sudoers
3、用户帐号,也就是我们想要配置的让哪个系统帐号可以使用sudo命令
稍后要为哪位用户进行命令授权。
4、允许用户从哪些地方连接到这台主机,linux作为服务器,管理员是有可能从别的主机远程连接过来的
可以填写ALL表示不限制来源的主机,亦可填写如192.168.10.0/24这样的网段限制来源地址,使得只有从允许网段登录时才能使用sudo命令。
5、允许切换的身份
可以填写ALL表示系统最高权限,也可以是另外一位用户的名字。
6、允许执行的命令
可以填写ALL表示不限制命令,亦可填写如/usr/bin/cat这样的文件名称来限制命令列表,多个命令文件之间用逗号(,)间隔。
3)案例
【1】、为runoob用户配置sudo,使其可以拥有全部权限
未配置前,runoob无法使用sudo,或者是poweroff、shutdown等命令:如下
在配置文件中加入配置,并强制保存:如下
切换到runoob用户,尝试能否是否sudo命令可以正常使用,可以正常使用,也可以reboot如下:
【2】、也可以单独针对特定的用户、命令来写配置
配置runoob用户,在sudo执行cat命令时,使用root用户的身份执行,等于有了root的权限如下:
先执行 cat /etc/shadow,查看能否执行成功,执行失败,权限不足。如下:
使用sudo cat测试,执行成功。如下:
4)当第一次执行 sudo 命令时,它会提示输入密码,默认情况下密码被缓存 5分钟。但是,我们可以避免这个操作,并使用 NOPASSWD 关键字禁用密码认证
在配置文件中进行配置,在第四列ALL,可以运行的命令前面加入NOPASSWD。如下:
对比:sudo提高权限的对比
加入前,可以看到需要输入密码。如下:
加入后,测试时,不在弹出需要输入密码界面。如下: