su用于临时切换身份到另一个指定的用户,未指定用户名默认为root。使用su切换用户身份后,默认情况下不改变当前工作目录,但会改变“HOME”、“SHELL”、“USER”、“LOGNAME”等shell的环境变量。
su [选项] [参数]
-c [command],--command=[command]:执行完指定命令后,立即恢复原来的用户身份;
--session-command=[COMMAND]:将一个命令传递到shell中,但不创建新会话;
-,-l,--login:切换用户身份时启动一个新的登陆shell。此选项可同时改变工作目录和HOME、SHELL、USER、LOGNAME等环境变量,也包括环境变量PATH;
-f,--fast:不必读启动文件(如 csh.cshrc 等),仅用于csh或tcsh两种Shell;
-m,--preserve-environment:保留原用户的shell环境变量;
-p:同-m;
-s [shell],--shell=[shell]:指定使用的shell;
--help:显示帮助信息;
--version:显示版本信息;
sudo可以用指定的用户身份执行指定的指令,而无需输入指定用户的密码,只需要输入当前用户的密码。未指定用户名默认为root。
sudo [选项] [参数]
sudo常见用法,以指定用户身份执行命令:
sudo –u [username] [command]
-A:通常sudo需要密码,它目前终端读取。使用-A选项,表明使用辅助程序(可能是图形化界面)读取用户的密码并将密码输出到标准输出。如果设置了环境变量SUDO_ASKPASS,它会指定辅助程序的路径,否则,由配置文件sudoers的askpass选项来指定;
-b(background):把sudo指令所要运行的指令放到后台运行;
-H(Home):设置用户的主目录
-l:显示通过sudo允许当前用户执行的指令和无法执行的指令
-L:显示sudo命令的配置选项;
-s [command]:执行环境变量SHELL所指定的shell,或是/etc/passwd里所指定的shell。如果后跟[command],则将指定的命令传递给shell执行;
-u [username]:指定执行命令时使用的用户身份,默认为root;
-h:显示帮助信息;
-V:显示版本信息;
-v:延长密码有效期限5分钟;
-k:结束密码的有效期限,也就是下次再执行sudo时便需要输入密码;
-p:改变询问密码的提示符号;
注意: sudo运行时要参照配置文件”/etc/sudousers”配置。在文件中设置用户能够执行的命令。
(1)二者功能不同
su用来长时间切换用户,常见用法是su [username]
,未指定username默认切换至root。
sudo允许被授权的用户以其他用户或者管理员身份来执行命令,可以使用-u命令选项来指明需要使用的用户身份,默认是root。sudo使一般用户不需要知道超级用户的密码即可获得权限。首先超级用户将普通用户的名字、可以执行的特定命令、按照哪种用户或用户组的身份执行等信息,登记在特殊的文件中(通常是/etc/sudoers),即完成对该用户的授权(此时该用户称为“sudoer”)[1]^{[1]}。若其未经授权的用户企图使用sudo,则会发出警告的邮件给管理员。用户使用sudo时,必须先输入当前用户密码,如果当前用户是root或者当前用户与目标用户一致,无需输入密码,之后的一段时间内(默认为5分钟,可在/etc/sudoers自定义),使用sudo不需要再次输入密码。
[1]sudo.百度百科