超凡脱俗的 sudo
Linux sudo
命令以系统管理者的身份执行指令,也就是说,经由 sudo
所执行的指令就好像是 root 亲自执行。
如果希望可以执行这个命令,需要管理员在文件 /etc/sudoers 中增加权限即可。
官方的定义为:
execute a command as another user
语法
1 | $ sudo [ option ] command |
参数说明:
-l
或--list
:显示出自己(执行 sudo 的使用者)的权限-k
将会强迫使用者在下一次执行sudo
时问密码(不论有没有超过 N 分钟)-b
将要执行的指令放在后台执行-p prompt
可以更改问密码的提示语,其中 %u 会代换为使用者的帐号名称, %h 会显示主机名称-u username/uid
不加此参数,代表要以 root 的身份执行指令,而加了此参数,可以以 username 的身份执行指令(uid 为该 username 的使用者号码)-s
执行环境变数中的 SHELL 所指定的 shell ,或是 /etc/passwd 里所指定的 shell-H
将环境变数中的 HOME (家目录)指定为要变更身份的使用者家目录(如不加-u
参数就是系统管理者 root )command
要以系统管理者身份(或以-u
更改为其他人)执行的指令
没有sudo权限的用户
如果没有sudo
权限,在执行命令的时候还有下面👇的输出:
1 | $ sudo ls |
指定用户执行命令
这个的应用场景为,其他用户在登录,而你具有sudo权限,测试可以通过指定用户名来操作。
1 | $ sudo -u username ls -l |
列出目前sudo的权限
如果不清楚,可以执行那些命令,可以通过参数-l来查看,主要看在sudoer里面的修改。
1 | $ sudo -l |
以root权限执行上一条命令
使用sudo快速统计家目录的使用情况
1 | $ sudo sh -c "cd /home ; du -s * | sort -rn " |