在Linux世界中,sudo和su是两个强大的工具,但它们各自有着独特的功能和使用场景。让我们深入探讨它们的区别和技巧,以便更好地利用它们。
su命令是用户权限切换的工具,当你输入su 用户名时,它会要求你输入要切换用户的密码。这允许你暂时成为另一个用户,但sudo更为灵活,它允许普通用户以root权限运行命令,但不会自动切换用户。
sudo,顾名思义,是"superuser do"的缩写,它在权限执行层面提供了一种安全的途径。当使用sudo时,系统会首先读取/etc/sudoers文件,根据权限规则验证用户和命令,只有在通过验证后才会要求密码(除非已设置NOPASSWD标志)。
sudo的配置文件允许你精细控制哪些用户、组和命令能被授权执行。例如,你可以设置:
在vim编辑器中,如果需要root权限,可以使用:w !sudo tee %,这会保存文件并以sudo运行tee命令。
sudo的原理在于其二进制文件被设置了setuid位,意味着普通用户运行时会继承文件所有者(通常是root)的权限。通过ls -l /usr/bin/sudo可以看到权限设置。
sudo还提供了便捷的临时切换到root的方式,如sudo -i,但务必谨慎使用,因为这会跳过密码验证。
sudo支持命令历史记录,sudo !!可以重复执行上一条以sudo执行的命令,而sudo !n则用于重复执行上n个命令。即使忘记使用sudo,sudo !!也能帮助你补救。
sudo和su虽然都是关于权限的工具,但sudo更注重安全性和控制,而su则直接进行用户切换。理解并熟练掌握它们的使用技巧,能让你在Linux系统管理中如鱼得水。记住,权限的使用应当谨慎,遵循最小权限原则,以保护系统的安全。