Допустим есть пользователь без пароля и без командной оболочки (т.е. /bin/false в качестве шелла), и есть у енго домашни каталог. Как от его имени запустить какой-нибудь скрипт?
[zakon@gunnm XServer]$ man su | grep -A 1 -- -[c,]
-, -l, --login
make the shell a login shell
--
-c, --commmand=COMMAND
pass a single COMMAND to the shell with -c
А шел у нас /bin/false, ну и как вы ему передадите "COMMAND"?
sudo предназначен для предоставления пользователям контролируемой возможности запуска программ, требующих специальных привелегий. А из под рута - пофиг, но я su очень редко использую, в основном всё-таки sudo.