定义上的区别:
su为switchuser,即切换用户的简写。su是最简单的身份切换名,用su我们能够进行不论什么用户的切换,一般都是su-username,然后输入password就OK了,可是root用su切换到其他身份的时候是不需要输入password的。
sudo是一种权限管理机制,依赖于/etc/sudoers,其定义了授权给哪个用户可以以管理员的身份能够执行什么样的管理命令。
格式上的区别:
su格式有两种:su -l USERNAME、su USERNAME。
sudo格式:sudo -u USERNAME COMMAND。
密码上的区别:
两个命令的最大区别是:sudo命令需要输入当前用户的密码,su命令需要输入root用户的密码。
日志记录上的区别:
尽管sudo命令以目标用户的身份执行命令,但是它们会使用sudoer所配置的用户名来记录是谁执行的命令。而su命令是无法直接跟踪记录用户切换到root用户之后执行了什么操作。
灵活性上的区别:
sudo命令比su命令灵活很多,甚至可以限制sudo用户可以访问哪些命令。换句话来讲,用户通过sudo命令只能访问他们工作需要的命令,而su命令让用户有权限做任何事情。
sudo切换到root用户,输入sudoer账户的密码,执行好命令自动回到当前管理员账户。su切换到root用户,输入root密码并非sudoer密码,执行完命令必需手动退出root用户
一个是切换到管理员用户,一个是使用管理员执行当前命令