Usiłuję skonfigurować zadanie Upstart do uruchamiania przy uruchamianiu systemu, które może być również uruchomione / zatrzymane przez członków grupy innej niż sudo
. W poprzedniej wersji używałem update-rc.d
skryptów i zapisywałem /etc/init.d/
je, aby to działało, dodając %Group ALL = NOPASSWD: /etc/init.d/scriptname
do mojego pliku sudoers, ale nie mogę uzyskać odpowiednika działającego dla Upstart.
Próbowałem dodać %Group ALL = NOPASSWD: /sbin/initctl start jobname
do pliku sudoers, ale próba uruchomienia polecenia start jobname
powoduje błąd:
start: Rejected send message, 1 matched rules; type="method_call", sender=":1.21" (uid=1000 pid=5148 comm="start jobname " interface="com.ubuntu.Upstart0_6.Job" member="Start" error name="(unset)" requested_reply="0" destination="com.ubuntu.Upstart" (uid=0 pid=1 comm="/sbin/init")
O ile wiem, jest to skarga na to, że moje konto użytkownika nie ma uprawnień do wysyłania wiadomości „Start” w pliku konfiguracyjnym D-Bus dla Upstart. Nie byłem w stanie znaleźć żadnych informacji o tym, jak edytować ten plik, aby dać grupie pozwolenie na dostęp do określonej usługi - czy taka opcja istnieje? Czy istnieje sposób edycji pliku Sudoers, dzięki czemu mogę uruchomić zadanie bez edycji pliku konfiguracyjnego? Czy lepiej mi pozostać przy poprzedniej wersji?
Osobiście używam następującego wiersza w pliku /etc/sudoers.d/jobname_myuser:
zgodnie z opisem tutaj: /server//a/390723/68608
źródło
Taka opcja nie istnieje w sudo.
Różnica między skryptami Sysv a plikami konfiguracyjnymi Upstart polega na tym, że: Skrypty Sysv to skrypty, pliki wykonywalne same w sobie i możesz powiedzieć sudo, aby zezwoliło niektórym grupom na ich wykonanie. Z drugiej strony, pliki konfiguracyjne Upstart są jedynie plikami konfiguracyjnymi, a nie plikami wykonywalnymi, więc wykonanie
start
(dowiązanie symboliczneinitctl
) jest tym, na co pozwala sudo. Twój problem polega na tym, że zezwalanie ludziom na uruchamianieinitctl
cię pozwala ci nainitctl
wszystko.Rozwiązanie jest proste, jeśli dotyczy tylko jednego zadania. Stwórz skrypt, powiedz
/usr/bin/jobname.sh
za następnie
chmod 755 /usr/bin/jobname.sh
dodaj plik wykonywalny do pliku sudoers:W ten sposób każdy może zadzwonić
jobname.sh start
lubjobname.sh stop
kontrolować określone zadanie. Możesz dodać trochę sprawdzania, aby zezwolić tylkostart
istop
parametry itp.źródło
initctl
, ale że Upstart odrzuca wszelkie sygnały wysyłane przez użytkowników / grupy, którzy nie otrzymali wyraźnego wpisu Zezwól w Upstart.conf? I nie ma sposobu, aby zapewnić większą szczegółowość niż ustawienie „wszystkie zadania lub brak” w pliku konfiguracyjnym?com.ubuntu.Upstart0_6.<JOB>
część) w Upstart.conf. W zależności od potrzeb, może być prostsze wykonanie tego rodzaju skryptu zamiast pisania zasad dbus i restartowania dbus itp. Polityka Dbus jest oczywiście „właściwą” rzeczą, ale w zależności od przypadku prosty skrypt może przejść długa droga z mniejszymi problemami.com.ubuntu.Upstart0_6.jobname
jakosend_interface
wygenerowanego tego samego komunikatu o błędzie jak poprzednio. Jeśli zgaduję, że wyjście błędu zawiera informację o sygnale, wygląda na to, że interfejs lub miejsce docelowe nie odzwierciedlają usługi Upstart, do której odnosi się sygnał. Myślę, że informacje o usłudze to tylko argumenty w komunikacie wywołania metody D-Bus, i nie jestem pewien, czy mogę edytować zasady D-Bus dla Upstart, aby podejmować decyzje na podstawie wartości argumentów.sudo jobname.sh start
, aby Upstart widział żądanie jako pochodzące odroot
użytkownika. Staram się to zrobić jest to „właściwa” droga (przede wszystkim odejście od skryptów Sys-V), więc chciałbym, aby działało to poprzez politykę D-Bus lub inną opcję konfiguracji Upstart, ale jeśli nie mogę zacznij działać Akceptuję tę odpowiedź."$1"
. W twoim[ "$1" = "start" -o "$1" = "stop" ]
teście uważam, że jest to bezpieczne, ale nie cytowane$1
rozszerzenie skryptu, ponieważ root jest po prostu niezdrowym nawykiem (chyba że celowe dzielenie słów jest celowe) ...Jak wskazano powyżej, demon dbus ma plik konfiguracyjny, który specjalizuje się w konkretnej aplikacji.
Plik konfiguracyjny określa również limity zasobów, parametry bezpieczeństwa i tak dalej.
Aby uzyskać szczegółowe informacje, patrz dbus-daemon-1 (1) - strona podręcznika użytkownika systemu Linux
Aby umożliwić grupie uruchamianie / zatrzymywanie zadań Upstart, dodaj następujące zasady do /etc/dbus-1/system.d/Upstart.conf
Przed zmianą domyślnych zasad należy rozważyć wpływ takich zasad na bezpieczeństwo. Członkowie YourGroupName będą mogli rozpocząć / zatrzymać wszystkie zadania Upstart.
źródło
start: You do not have permission to modify job: jobname
gdy próbowałem uruchomić usługę.