su | su - | sudo | |||
登陆用户类型 | shell类型 | 密码方式 | shell类型 | 密码方式 | 登陆密码以及设置 |
普通用户切换管理员 | no-login shell(无法使用说有变量) | 输入管理员密码 | login shell(可以使用管理员的所有变量) | 输入管理员密码 | 普通用户登陆需要使用普通用户密码,需要设置用户有sudo权限(etc/sudoers) |
管理员切换普通用户 | no-login shell | 无需普通用户密码直接登陆 | login shell | 无需普通用户密码直接登陆 | / |
普通用户若需要利用sudo命令获取管理员权限,需要管理员在/etc/sudoers下新增可获取sudo的代码行,若未配置利用sudo切换则无法使用,如下图:
利用visudo命令
1)第一个字段crissun指定的是用户:可以是用户名,也可以是别名。每个用户设置一行,多个用户设置多行,也可以将多个用户设置成一个别名后再进行设置。
2)第二个字段ALL指定的是用户所在的主机:可以是ip,也可以是主机名,表示这个sudo设置后的文件即/etc/sudoers只在这个主机上生效,ALL表示在所有主机上都生效,建议限定需要提权的主机限制的一般都是本机,也就是限制使用这个文件的主机;如果指定为"192.168.1.88"表示这个文件只有在这台主机上生效,如果拷贝到别的机子上是不起作用的!一般都指定为"ALL"表示所有的主机,不管文件拷到那里都可以用。
3)第三个字段(ALL)括号里指定的也是用户:指定以什么用户身份执行sudo,即使用sudo后可以享有所有账号下的权限。如果要排除个别用户,可以在括号内设置,比如ALL=(ALL,!root,!ops)。也可以设置别名
4)第四个字段ALL指定的是执行的命令:即使用sudo后可以执行所有的命令。也可以设置别名。NOPASSWD: ALL表示使用sudo的不需要输入密码。
如:
crissun ALL=(ALL:ALL) ALL
含义:crissun为用户名,即需要提权获取管理员的用户名,可以利用访问任何机器名以任何用户名和群组执行任何命令
常见的限制方式:
1 crissun CrisSun=(root:root) /bin/chmod /bin/chown 用户crissun指定机器名以root用户root群组指定可执行修改权限和修改群组
2 crissun ALL=(ALL) NOPASSWD: ALL 用户crissun可以在任何机器上以任何用户通过无密码的方式执行任何命令
3 %admin ALL=(All) ALL
常见的登陆方式总结:
提权/登陆方式 | 特性 | 优势 | 劣势 |
su | 普通账户登陆管理员需要输入管理员密码管理员切换普通账号登陆不需要密码 | 操作简单 | no login shell 无法使用全部的变量 、管理员密码泄露风险 |
su - | 普通账户登陆管理员需要输入管理员密码 管理员切换普通账号登陆不需要密码 | login shell 无法使用全部的变量 | 管理员密码泄露风险, |
sudo su | 普通账户登陆管理员需要输入普通用户的密码 | 使用普通用户权限登陆,规避账号风险 且在默认五分钟内反复登陆无需密码 | 不携带管理员的环境变量 |
sudo su - | 普通账户登陆管理员需要输入普通用户的密码 | 使用普通用户权限登陆,规避账号风险 且在默认五分钟内反复登陆无需密码 | 携带管理员的环境变量 |