Mam skrypt uruchamiany przez użytkownika innego niż root, który pod pewnymi warunkami powinien zrestartować apache httpd.
Jaki byłby dla mnie najprostszy sposób, aby pozwolić użytkownikowi to zrobić?
Używam Ubuntu Server 8.04 LTS.
źródło
Mam skrypt uruchamiany przez użytkownika innego niż root, który pod pewnymi warunkami powinien zrestartować apache httpd.
Jaki byłby dla mnie najprostszy sposób, aby pozwolić użytkownikowi to zrobić?
Używam Ubuntu Server 8.04 LTS.
Krótka odpowiedź:
Za pomocą visudo
dodaj następujący plik do pliku sudoers, zastępując nazwę użytkownika prawidłową nazwą użytkownika:
username ALL = /etc/init.d/apache2
Jeśli nie chcesz wpisywać hasła, wykonaj następujące czynności:
username ALL = NOPASSWD: /etc/init.d/apache2
Następnie użytkownik „nazwa użytkownika” może wykonać sudo /etc/init.d/apache2 start
(lub zatrzymać, uruchomić ponownie itp.)
Długa odpowiedź: Prawdopodobnie będziesz chciał skonfigurować osobnego użytkownika, jeśli jeszcze tego nie zrobiłeś, a następnie skonfiguruj plik / etc / sudoers, aby umożliwić użytkownikowi lub grupie wykonanie żądanego polecenia.
Na przykład, aby zezwolić użytkownikowi „ben” na wykonywanie wszystkich poleceń jako root z prośbą o podanie hasła, wykonaj następujące czynności:
ben ALL= ALL
Aby zezwolić „ben” na wykonanie tylko jednego polecenia (jak powiedzmy, rm
), wykonaj następujące czynności:
ben ALL= /bin/rm
Jeśli uruchamiasz skrypt jako użytkownik i nie chcesz pytać o hasło, możesz użyć opcji „NOPASSWD” w następujący sposób:
ben ALL=NOPASSWD: /bin/commandname options
Możesz zrobić to samo dla grup, poprzedzając nazwy grup znakiem procentowym, na przykład:
%supportstaff ALL= NOPASSWD: /bin/commandname
username
można ograniczyć do podzbioru parametrów? Powiedz,start
restart
ale niestop
?visudo
komenda robi kontrole bezpieczeństwa na Twoich zmian, więc nie złamaćsudo
/su
polecenie przez przypadek: unix.stackexchange.com/a/27595/61349Krótka odpowiedź: sudo.
Połączenie wyglądałoby podobnie do następującego:
sudo /etc/init.d/apache2 restart
Najłatwiej jest użyć
visudo
do skonfigurowania pliku / etc / sudoers. Zobaczman sudoers
iman visudo
szczegóły.źródło
Można to również osiągnąć, pisząc opakowanie na apache2ctl, przypisując własność grupy grupie administracyjnej i ustawiając bit suid. Jest to mniej ogólne rozwiązanie niż visudo, ale pozwala na niestandardowe ograniczenia możliwości użytkownika i sprawdzania błędów.
Napisałem to narzędzie na własne potrzeby i udostępniłem je na github: https://github.com/josiahjohnston/ltd_apache2ctl
źródło