Я хотел бы написать сценарий оболочки, который устанавливает ртутный репозиторий и позволяет всем пользователям в группе «разработчики» выполнять этот сценарий.
Этот сценарий принадлежит пользователю «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?