Немного предыстории: у меня есть машина с установленной SLES 11. Я запускаю сценарий bash, одна из строк которого /bin/su $USER -c SOME_CMD
.
К сожалению, SOME_CMD
что происходит после -c
продолжает терпеть неудачу, даже если USER=root
или любого другого пользователя. Однако если /bin/su $USER -c
часть опущена, тогда все идет гладко. Более того, я запускал сценарий на RHEL5, и он работал нормально.
В любом случае, у меня вопрос, почему это происходит? Если это проблемы с разрешениями, то почему, когда я запускаю это как root с /bin/su
а без я получаю разные результаты?
P.S. извиняюсь, если кто-то еще спрашивал об этом раньше, я много гуглил и не получил ничего удовлетворительного.
РЕДАКТИРОВАТЬ Ладно, разобрался, надеюсь. Вместо бега /bin/su
я использовал /user/bin/sudo -u $MY_USER_1 MY_ENV_VAR="/home/user1" SOME_CMD
. Я не понимаю, почему я должен использовать sudo
, хотя. Я привык запускать команду от имени другого пользователя, используя su
и не беспокоясь о проблемах с разрешениями, но я думаю, что на SLES 11
/SuSE
.
В любом случае, спасибо всем, кто хотел или помог мне.
Это потому, что правильный синтаксис команды
/bin/su -c SOME_CMD USER
Видеть man su
.
Вы не должны ничего назначать переменной $USER
, BTW, потому что это системная переменная, которая содержит имя текущего пользователя, вошедшего в систему.