Создание сценария оболочки во время работы с sudo - PullRequest
0 голосов
/ 07 января 2011

Я хотел бы написать сценарий оболочки, который устанавливает ртутный репозиторий и позволяет всем пользователям в группе «разработчики» выполнять этот сценарий.

Этот сценарий принадлежит пользователю «hg»,и отлично работает, когда побежал.Проблема возникает, когда я пытаюсь запустить его с другим пользователем, используя sudo, выполнение останавливается с ошибкой «отказано в разрешении», когда он пытается найти другой файл.

Файл сценария, о котором идет речь:

create_repo.sh

#!/bin/bash

source colors.sh

REPOROOT="/srv/repository/mercurial/"
... rest of the script ....

Разрешения create_repo.sh и colors.sh:

-rwxr--r-- 1 hg hg  551 2011-01-07 10:20 colors.sh
-rwxr--r-- 1 hg hg 1137 2011-01-07 11:08 create_repo.sh

Настройка Sudoers:

%developer ALL = (hg) NOPASSWD: /home/hg/scripts/create_repo.sh

What I 'm пытается запустить:

user@nebu:~$ id
uid=1000(user) gid=1000(user) groups=4(adm),20(dialout),24(cdrom),46(plugdev),105(lpadmin),113(sambashare),116(admin),1000(user),1001(developer)

user@nebu:~$ sudo -l
Matching Defaults entries for user on this host:
    env_reset

User user may run the following commands on this host:
    (ALL) ALL
    (hg) NOPASSWD: /home/hg/scripts/create_repo.sh

user@nebu:~$ sudo -u hg /home/hg/scripts/create_repo.sh
/home/hg/scripts/create_repo.sh: line 3: colors.sh: Permission denied

Таким образом, сценарий выполняется, но останавливается, когда он пытается включить другой сценарий.

Я также пытался использовать:

user @ nebu: ~ $ sudo -u hg / bin / bash /home/hg/scripts/create_repo.sh

Что дает тот же результат.

Что такоеправильный способ включить другой сценарий оболочки, если сценарий может быть запущен с другим пользователем, через sudo?

1 Ответ

1 голос
/ 07 января 2011

Вероятно, что сценарий пытается source файл colors.sh в текущем каталоге и завершается неудачно, потому что у него нет разрешения на чтение вашего текущего каталога из-за sudo.

Попробуйте использовать source /home/hg/scripts/colors.sh.

...