mirror of
https://github.com/koalaman/shellcheck.git
synced 2025-10-03 19:29:44 +08:00
Created SC2117 (markdown)
25
SC2117.md
Normal file
25
SC2117.md
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
## To run commands as another user, use su -c or sudo.
|
||||||
|
|
||||||
|
### Problematic code:
|
||||||
|
|
||||||
|
whoami
|
||||||
|
su
|
||||||
|
whoami
|
||||||
|
|
||||||
|
### Correct code:
|
||||||
|
|
||||||
|
whoami
|
||||||
|
sudo whoami
|
||||||
|
|
||||||
|
### Rationale:
|
||||||
|
|
||||||
|
It's commonly believed that `su` makes a session run as another user. In reality, it starts an entirely new shell, independent of the one currently running your script.
|
||||||
|
|
||||||
|
`su; whoami` will start a root shell and wait for it to exit before running `whoami`. It will not start a root shell and then proceed to run `whoami` in it.
|
||||||
|
|
||||||
|
To run commands as another user, use `sudo some command` or `su -c 'some command'`. `sudo` is preferred when available, as it doesn't require additional quoting and can be configured to run passwordless if desired.
|
||||||
|
|
||||||
|
|
||||||
|
### Contraindications
|
||||||
|
|
||||||
|
If you're aware of the above and want to e.g. start an interactive shell for a user, feel free to ignore this message.
|
Reference in New Issue
Block a user