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"
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
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...
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.
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 :)
[Zagiewa@localhost ~]$ sudo /sbin/swapoff -a
[sudo] hasło użytkownika Zagiewa:
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!