2013-08-09 2 views
0

Когда я делаю sudo su - john Я становлюсь пользователем johnбез с просьбой ввести пароль.
Но когда я это сделаю: sudo su - john /usr/share/script_to_run.pl Меня попросили ввести пароль. То же, что и для sudo -u john /usr/share/script_to_run.plConfused on sudo vs su и работает скрипты

Почему? Что я здесь делаю неправильно?

+0

Проверьте содержимое файла/etc/sudoers; есть, вероятно, запись, читающая что-то вроде: 'user NOPASSWD: su - john', что означает, что вы можете выдать команду, но не можете использовать параметры. Это больше вопрос суперпользователя, хотя – Petesh

ответ

1

Теперь, прежде всего, - означает, что вы хотите использовать оболочку для входа. Первое утверждение означает, что вы хотите, чтобы корень (следовательно, sudo) хотел, чтобы он отображался, когда вы вошли в систему как john. Где-то он настроен на то, что пользователь, с которым вы в настоящий момент зарегистрирован, имеет права делать sudo без использования пароля.

Что происходит в первую очередь в том, что вы выполняете одну команду su - john (что означает «войти меня в качестве john), и вы делаете это как корень (так как вы положили sudo первый). Ваш текущий пользователь имеет Sudo-без пароля -rights и root имеют право стать любым пользователем.

Вторая попытка неправильная. Вы не можете использовать su для выполнения команды таким образом, и если вы хотите, чтобы su выполнял одну команду, я вижу нет причины сделать это оболочкой для входа.

В третьем варианте вы (как в настоящее время вошедший пользователь) хотите «стать» john для одной команды, вам понадобится пароль john. (Когда вы сделаете это, как root, однако, вам не нужен пароль.)

Чтобы заставить его работать, вероятно, можно попробовать

sudo su --command="/usr/share/script_to_run.pl" john 

или, возможно, даже более экзотические глядя

sudo sudo -u john /usr/share/script_to_run.pl 
+0

Обе эти опции запрашивают у меня пароль – Cratylus

+0

Интересно. Какой пользователь вы вошли в систему как? В какой ОС вы работаете? – Bex

+0

Я зарегистрирован как пользователь 'george'.OS is centos – Cratylus

0

«sudo» был разработан, чтобы предоставить всю функциональность «su», но не требует от них использования пароля другого пользователя. Ответы, которые вам нужны, находятся в файле/etc/sudoers, редактируемом командой «sudo visudo». здесь вы обнаружите, что вы можете сделать ваш пользователь не требует пароля:

cratylus ALL=(ALL)  NOPASSWD: ALL 

оттуда подавать запросы с

sudo -u cratylus the statement 

примечание: не процитировать заявление - вы сделать это только для «су -c ".