Linux用户身份切换命令之su,su -,sudo

关于Linux用户身份切换:

Su:是最简单的身份切换命令,它可以进行任何身份的切换。
关于su与su 之间的区别:二者的区别是配置文件读取方式。
1、 su:以non-login shell的方式读取配置文件
Linux用户身份切换命令之su,su -,sudo
此时,虽然我们已经切换到了root用户,但其实环境变量还是togie用户的,这种情况下,有些命令我们就必须使用绝对路径来进行执行,否则依然权限不足。
2、 su –:以login-shell的方式读取配置文件。
Linux用户身份切换命令之su,su -,sudo
我们此时可以看到环境变量的相关全部切换为root用户。

3、 关于su命令输入的密码:为想切换的用户的密码。例如切换root用户,则输入root用户密码。

Sudo:是用该命令的用户可以以root身份执行某个命令,命令执行完之后就立即回退到原用户身份。
1、 首先尝试以sshd的身份创建一个文件。
Linux用户身份切换命令之su,su -,sudo
-u参数是想以那个用户身份执行命令。
2、 Sudo的执行流程:
      a) 当用户执行sudo命令时,系统于/etc/sudoers文件查找该用户是否拥有执行sudo的权限
      b) 若用户具有可执行sudo命令的权限之后,便让用户输入自己的密码来确认
      c) 若密码输入成功,便开始进行sudo后续接的命令
      d) 若想切换的身份于执行者身份相同,不需要输入密码
      e) 其中一个很关键的地方在于sudo命令的配置文件/etc/sudoers
3、 /etc/sudoers配置文件解析:
a) 文件格式:
Linux用户身份切换命令之su,su -,sudo

b) 其中两条配置:
      i. Root ALL=(ALL:ALL) ALL
      ii. %sudo ALL=(ALL:ALL) ALL
c) 四个参数从左到右的意思:
      i. Root:系统的哪个账户可以使用sudo命令。像第一天配置表示root用户可以使用,第二条表示sudo用户组的所有用户可以使用。
       ii. 登录者的来源主机名:这个账号由哪台主机连接到本Linux主机,意思是这个账户可能由哪一台网络主机连接过来,这个设置值可以指定客户端主机,参数ALL表示全部主机。
       iii. 可切换的身份:这个账号可以切换成什么身份来执行后续的命令。ALL表示切换成任意身份。
        iv. 可执行的命令:切换到身份之后可以执行哪些命令,用绝对路径书写。
d) 第二条配置的含义:
       所有sudo用户组的成员,可以从任意主机登录,使用sudo命令切换到任意身份执行任意命令。
4、 利用存在漏洞的sudo文件配置提权:
首先我们使用低权限用户togie登录ssh:
Linux用户身份切换命令之su,su -,sudo
发现用户属于togie组,sudo组等等
Linux用户身份切换命令之su,su -,sudo

查看用户是否可以执行sudo命令,如果可以,查看可以执行哪些命令。然后发现sudo命令可以切换到任意身份,执行任何命令,那么进行sudo提权到root用户。
Linux用户身份切换命令之su,su -,sudo
5、更多详细内容建议参考:《鸟哥的Linux私房菜》