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