2015-12-24 3 views
3

У меня есть сценарий Python, который должен монтировать диски на сервере Ubuntu без привилегий root. Я сделал исполняемый скрипт (с #!/usr/bin/env python). Я также переименовал его в '.sh' (возможно, не важно) и chmod это исполняемый файл.Создание сценария Python с привилегиями root

Затем я вошел в следующую строку в мой файл sudoers:

ALL ALL = (ALL) NOPASSWD: /home/sazulay/.scripts/mount_disks.sh/ 

Если удалить последние «/» visudo претензий у меня есть ошибка синтаксиса.

Если бы я оставил его, как это и запустить следующую строку из моего пользователя:

sudo /home/sazulay/.scripts/mount_disks.sh 

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

Что я делаю неправильно?

+1

Несвязанный: расширение '.sh' для shell sripts, расширение' .py' для скриптов Python. Я предлагаю вам исправить это тоже. –

+0

Спасибо Микко! Я сделал это только потому, что думал, что это может повлиять на меня ... – ShaharA

+0

Вам не нужно какое-либо расширение вообще, вы не находитесь в древних системах DOS/Windows. –

ответ

3

В конце линии не должно быть косой черты. Ваш файл sudoers должен выглядеть следующим образом:

ALL ALL = (ALL) NOPASSWD: /home/sazulay/.scripts/mount_disks.sh 

Теперь, на вашу актуальную проблему!

Если я удаляю последний '/', visudo утверждает, что у меня синтаксическая ошибка.

Я подозреваю, что добавленная вами строка находится в конце файла. Теперь, традиционно, команды unix имеют проблему, если файл не заканчивается новой строкой \n. Большинство редакторов linux (которые я знаю) добавляют это. Возможно, что любой редактор, который вы используете, не поддерживает. Поэтому добавьте дополнительную строку в конец файла, чтобы ваша линия была не последней строкой. Так должно быть что-то вроде этого.

ALL ALL = (ALL) NOPASSWD: /home/sazulay/.scripts/mount_disks.sh 
<--- empty line --->