Nowe posty

Autor Wątek: Program z prawami root  (Przeczytany 1002 razy)

Offline Zagiewa

  • Users
  • Stały bywalec
  • ***
  • Wiadomości: 127
    • Zobacz profil
Program z prawami root
« dnia: 2017-09-28, 22:12:58 »
Witam. Jak można stworzyć program/skrypt który wykona polecenia które wymagają bycia zalogowanym jako root kiedy ja pracuje na koncie zwykłego użytkownika?
Na pewno jest to możliwe tylko jak to mogę zrobić? Przykładowo potrzebuję aby wykonywało się co jakiś czas polecenie: "sync; echo 3 > /proc/sys/vm/drop_caches" - wymaga ono bycia zalogowanym jako root.
Skrypt ma być uruchamiany automatycznie w momencie uruchomienia komputera dlatego można by go było "wpisać" na stałe w pracę systemu jeśli mogę tak to nazwać :)

Offline 1709

  • Users
  • Guru
  • *****
  • Wiadomości: 1756
  • 1709
    • Zobacz profil
Odp: Program z prawami root
« Odpowiedź #1 dnia: 2017-09-29, 00:01:48 »
Cytuj
Skrypt ma być uruchamiany automatycznie w momencie uruchomienia komputera

1. Cron
https://pl.wikipedia.org/wiki/Crontab
W linku niżej takze wspomniano o crontab
Cytuj
zamiast deklarowania kiedy ma zostać uruchomione polecenie lub skrypt korzystamy z „@reboot”,
2. Systemd lub Init w zależności co posiada system
https://www.dobreprogramy.pl/mariushko/Poradnik-systemd-cz.-2,67878.html
https://webinsider.pl/linux-autostart/

Pochwal się swoją kartą graficzną w tym wątku-->
http://forum.linux.pl/index.php/topic,19841.msg121122.html#msg121122

Offline Zagiewa

  • Users
  • Stały bywalec
  • ***
  • Wiadomości: 127
    • Zobacz profil
Odp: Program z prawami root
« Odpowiedź #2 dnia: 2017-10-02, 21:11:27 »
Jak sprawić żeby program uruchamiał się automatycznie to akurat wiem, bardziej mi zależy aby polecenia które będzie on wywoływał wymagają bycia zalogowanym jako root i nie chcę aby pytał mnie za każdym razem o hasło aby polecenie się wykonało.
Musi być jakiś sposób na "zaznaczenie", że TE polecenia albo TEN plik zawierający polecenia mają prawo zostać wykonane z poziomu zwykłego użytkownika bez podawania hasła.
Użyłem nawet najgorszego rozwiązania z możliwych jak np:
echo HASLO | sudo -S swapoff -a && swapon -a
ale dostaje odpowiedz:
swapon: nie można otworzyć /dev/mapper/fedora-swap: Brak dostępu
Jakieś pomysły?
Jeszcze ślęczę przy pliku sudoers może tak się uda

Offline marcin'82

  • Users
  • Stały bywalec
  • ***
  • Wiadomości: 160
    • Zobacz profil
Odp: Program z prawami root
« Odpowiedź #3 dnia: 2017-10-02, 22:12:48 »
No to w końcu jako root czy zwykły użytkownik?

W tabeli crona użytkownika ROOT możesz umieścić takie cudactwo:
@reboot su UŻYTKOWNIK -c "moje polecenie"


« Ostatnia zmiana: 2017-10-03, 21:35:54 wysłana przez marcin'82 »
marcin82

Offline Zagiewa

  • Users
  • Stały bywalec
  • ***
  • Wiadomości: 127
    • Zobacz profil
Odp: Program z prawami root
« Odpowiedź #4 dnia: 2017-10-03, 12:20:02 »
Chcę jako zwykły użytkownik uruchamiać niektóre polecenia które wymagają podania hasła root ale bez ich podawania.
Z cronem jest jakiś problem na fedora. Plik cron.allow nie istnieje a po jego utworzeniu i dodania użytkownika polecenie crontab -l zwraca:
You (Zagiewa) are not allowed to use this program (crontab)
Nie znalazłem jeszcze sposobu na naprawienie tego

Offline marcin'82

  • Users
  • Stały bywalec
  • ***
  • Wiadomości: 160
    • Zobacz profil
Odp: Program z prawami root
« Odpowiedź #5 dnia: 2017-10-03, 21:41:25 »
marcin82

Offline Zagiewa

  • Users
  • Stały bywalec
  • ***
  • Wiadomości: 127
    • Zobacz profil
Odp: Program z prawami root
« Odpowiedź #6 dnia: 2017-10-04, 11:58:04 »
Właśnie już wcześniej podjąłem walkę z sudoers ale bez powodzenia. Za pomocą visudo dodałem takie linijki na samym końcu pliku:
Cmnd_Alias SWAPOFF=/sbin/swapoff -a
Cmnd_Alias SWAPON=/sbin/swapon -a
Zagiewa localhost=NOPASSWD:SWAPOFF
Zagiewa localhost=NOPASSWD:SWAPON
I po ponownym uruchomieniu komputera nie działa...

Offline Paweł Kraszewski

  • Administrator
  • Guru
  • *****
  • Wiadomości: 2267
  • Lenistwo jest matką potrzeby = babcią wynalazku
    • Zobacz profil
    • Linuxpedia.PL
Odp: Program z prawami root
« Odpowiedź #7 dnia: 2017-10-04, 14:14:43 »
Cmnd_Alias SWAPOFF=/sbin/swapoff -a
Cmnd_Alias SWAPON=/sbin/swapon -a
Zagiewa localhost=NOPASSWD:SWAPOFF
Zagiewa localhost=NOPASSWD:SWAPON

1. nazwa użytkownika nie może zawierać dużych liter (taka konwencja, niestosowanie się gryzie w tyłek w różnych niespodziewanych momentach: "It is usually recommended to only use usernames that begin with a lower case letter or an underscore, followed by lower case letters, digits, underscores, or dashes. They can end with a dollar sign.")

2. sudo nie wie co to localhost. Musisz użyć rzeczywistej nazwy kompa: "Note that sudo only inspects actual network interfaces; this means that IP address 127.0.0.1 (localhost) will never match.".

3. host w sudoers robi co innego niż myślisz - linijki aktywują się w zależność od tego NA JAKIM komputerze odpaliłeś sudo, nie SKĄD się połączyłeś (mam wrażenie, że chesz zablokować swapon/swapoff przy połączeniach zdalnych). Pole host inne niż ALL stosuje się, gdy wiele komputerów współdzieli ten sam plik sudoers (np przez NFS albo na sztywno osadzony w obrazie systemu), a chcemy włączyć/wyłączyć niektóre reguły na kiektórych komputerach.

Czyli wynikowa regułka będzie wyglądać tak:

zagiewa ALL=(ALL:ALL) NOPASSWD: /sbin/swapoff -a, /sbin/swapon -a

Po edycji sudoers nie trzeba ponownie uruchamiać komputera.
Paweł Kraszewski
~Gentoo/FreeBSD/OpenBSD/Specjalizowane customy
Jeżeli uważasz, że warto: 1AfKbLX6nZSqv5DNhXMNLivc9fXwaHMd4Z

Offline Zagiewa

  • Users
  • Stały bywalec
  • ***
  • Wiadomości: 127
    • Zobacz profil
Odp: Program z prawami root
« Odpowiedź #8 dnia: 2017-10-05, 00:04:02 »
1. Tego nie doczytałem dzięki, chociaż sugerowałem się, że skoro nazwa użytkownika jest Zagiewa a nie zagiewa to w pliku sudoers również powinienem użyć takiej samej nazwy.
2. Odnośnie localhost to u mnie wygląda to tak:
[Zagiewa@localhost ~]$ hostname
localhost.localdomain
Do tej pory skoro wpisy w sudoers nie przynosiły efektu myślałem, że komputer musi być ponownie uruchomiony, dobrze wiedzieć, że nie :)
Tak czy siak dalej nie działa. Usunąłem moje wpisy, wstawiłem twój ale nie działa:
[Zagiewa@localhost ~]$ swapoff -a
swapoff: Trzeba być superużytkownikiem.
A gdy wpiszę sudo swapoff -a prosi o hasło
3. Nic z tych rzeczy, pracuję tyko na tym komputerze i praca zdalna nie wchodzi w grę. Użycie localhost to przypadek a nie próba połączenia zdalnego :)
« Ostatnia zmiana: 2017-10-05, 00:07:59 wysłana przez Zagiewa Zagiewa »

Offline Paweł Kraszewski

  • Administrator
  • Guru
  • *****
  • Wiadomości: 2267
  • Lenistwo jest matką potrzeby = babcią wynalazku
    • Zobacz profil
    • Linuxpedia.PL
Odp: Program z prawami root
« Odpowiedź #9 dnia: 2017-10-05, 05:41:34 »
A teraz
sudo /sbin/swapoff -a
:)
Paweł Kraszewski
~Gentoo/FreeBSD/OpenBSD/Specjalizowane customy
Jeżeli uważasz, że warto: 1AfKbLX6nZSqv5DNhXMNLivc9fXwaHMd4Z

Offline Zagiewa

  • Users
  • Stały bywalec
  • ***
  • Wiadomości: 127
    • Zobacz profil
Odp: Program z prawami root
« Odpowiedź #10 dnia: 2017-10-05, 11:12:01 »
[Zagiewa@localhost ~]$ sudo /sbin/swapoff -a
[sudo] hasło użytkownika Zagiewa:

Offline Paweł Kraszewski

  • Administrator
  • Guru
  • *****
  • Wiadomości: 2267
  • Lenistwo jest matką potrzeby = babcią wynalazku
    • Zobacz profil
    • Linuxpedia.PL
Odp: Program z prawami root
« Odpowiedź #11 dnia: 2017-10-05, 11:53:07 »
sudo (jak cały UNIX) rozróżnia duże i małe litery.

1. W sudoers nazwa użytkownika musi być co do litery taka sama jak rzeczywista.
2. O tym użytkowniku z dużej litery chodziło mi, żeby poprawić login w /etc/passwd i /etc/shadow tak, żeby było z małej (edytując prze vipw). Na teraz można w sudoers dać z dużej (żeby zgadzało się z loginem), ale na przyszłość nie robić loginów niezgodnych ze schematem.

Przykład problemu z nieszablonowym loginem: systemy pocztowe nie rozróżniają dużych i małych liter. ZAGIEWA@... zagiewa@... czy Zagiewa@... to ten sam mail. Serwer pocztowy zamienia nazwę usera na same małe litery i tak szuka w systemie - a jak rzeczywisty user nie ma samych małych liter to go nie znajdzie i zwróci nadawcy błąd o nieistniejącym odbiorcy.
« Ostatnia zmiana: 2017-10-05, 11:58:17 wysłana przez Paweł Kraszewski »
Paweł Kraszewski
~Gentoo/FreeBSD/OpenBSD/Specjalizowane customy
Jeżeli uważasz, że warto: 1AfKbLX6nZSqv5DNhXMNLivc9fXwaHMd4Z

Offline Zagiewa

  • Users
  • Stały bywalec
  • ***
  • Wiadomości: 127
    • Zobacz profil
Odp: Program z prawami root
« Odpowiedź #12 dnia: 2017-10-05, 12:24:17 »
To źle zrozumiałem. Poprawiłem nazwę użytkownika w sudoers i już działa dzięki :)
Co do nazw użytkowników to zapamiętam na przyszłość ale póki co pozostawię bez zmian.
Żeby ułatwić sobie sprawę postanowiłem w sudoers dodać ścieżkę do skryptu w katalogu domowym żeby nie musieć deklarować nowych poleceń w sudoers. Teraz wystarczy że wrzucę do skryptu potrzebne polecenie i wykonam skrypt :)
Zagiewa ALL=(ALL:ALL) NOPASSWD: /home/Zagiewa/sudoers_test/test.sh
A w pliku test.sh
#!/bin/bash
/sbin/swapoff -a
/sbin/swapon -a
Dzięki wielkie za pomoc!