Pokazywanie postów oznaczonych etykietą sudo. Pokaż wszystkie posty
Pokazywanie postów oznaczonych etykietą sudo. Pokaż wszystkie posty

środa, 12 sierpnia 2009

Sudo - jak umożliwić użytkownikowi przełączenie na konto root?

Na początku pozwolę sobie stwierdzić, że można to zrobić pewnie na milion sposobów - no może trochę przesadziłem - ale na pewno jest ich trochę - i w tym tkwi piękno linuxa.
Najpierw zastanówmy się o co chodzi w tym zadaniu tak naprawdę? Upraszczając - jeśli użytkownik może się przełączyć na konto roota to de facto nadajemy mu uprawnienia administracyjne. Jak to zrobić? Można np. stworzyć grupę i nadać członkom tej grupy uprawnienia do uruchamiania wszystkich poleceń systemowych. Często korzystam z gotowej "receptury" w /etc/sudoers:

#visudo
# Uncomment to allow people in group wheel to run all commands
%wheel ALL=(ALL) ALL

i już. Członkowie grupy wheel mają teraz uprawnienia administracyjne. Wystarczy dodać odpowiednie osoby do grupy wheel poprzez edycję /etc/groups lub wywołanie groupmod lub gpasswd lub ...

# gpasswd -a fares wheel
Adding user fares to group wheel


Teraz już z konta fares możemy przejśc na root:
fares@ny $ sudo su -



I to tyle. Czekam na wasze rozwiązania w komentarzach.

sobota, 11 lipca 2009

Konfiguracja powiadomień przy wykonaniu komendy sudo

Sudo jak już zapewne wiemy umożliwia nam rozszerzenie uprawnień użytkownika w systemie bez konieczności udostępniania hasła konta root.

Warto wiedzieć, że sudo ma możliwość informowania o aktywności użytkowników w systemie - wykonywanych poleceniach, próbach naruszania uprawnień, etc.

Domyślnie komenda sudo zapisuje informacje w logu systemowym - w zależności od dystrybucji i konfiguracji loggera systemowego, moe to być /var/log/auth.log (Debian i s-ka), /var/log/secure (Redhat & co). Można też skonfigurować polecenie sudo, tak żeby w momencie użycia tej komendy wysyłane było powiadomienie na wybraną skrzynkę pocztową.

Jak to zrobić?
Wyedytujmy /etc/sudoers:

vim /etc/sudoers


Teraz musimy ustawić konto, na które będą trafiały powiadomienia - dodajemy:

mailto "admin@mojafirma.pl"
mail_always on


Opcje są dość opisowe:
- mailto "admin@staff.example.com" - do kogo wysłać mail
- mail_always - wysyłaj zawsze gdy wykonywane jest sudo (domyślnie jest wyłączone)

Dodatkowo możemy ustawić na on/off:
- mail_badpass - wysyłaj powiadomienia gdy użytkownik poda niewłaściwe hasło (domyślnie wyłączone)
- mail_no_host - wysyłaj maila gdy użytkownik nie ma uprawnień do wykonania danej komendy na określonym hoście (domyślnie wyłączone)
mail_no_perms - wysyłaj maila gdy użytkownik nie ma uprawnień do wykonania danej komendy (domyślnie wyłączone)
- mail_no_user - wysyłaj maila gdy użytkownik nie jest zdefiniowany w pliku sudoers (domyślnie włączone)
Sudo Logfile

UWAGA! Należy pamiętać o odpowiednim skonfigurowaniu systemu pocztowego na hoście z którego zamierzamy wysyłać powiadomienia.

PS. Można wyłączyc logowanie z użyciem systemu logującego - musimy wtedy ustawić ścieżkę do logów. Robimy to tak:

Defaults !lecture,tty_tickets,!fqdn,!syslog
Defaults logfile=/var/log/sudo.log

sobota, 4 lipca 2009

Sudo - nadawanie specjalnych uprawnień

Ponieważ nie zamierzam przepisywać, podam link do dobrego przewodnika po komendzie sudo. O dziwo jest taki przewodnik zrobiony przez Gentoo. To kolejna zaleta tego projektu - świetna, dogłębna i spójna dokumentacja.

Po zaznajomieniu się z komendą czas na praktykę.
Ja w swoim zastosowaniu, w stawianym systemie chcę nadać możliwość instalowania pakietów za pomocą polecenia emerge jednemu użytkownikowi. Jak to zrobić?
Proponuję tak:

# visudo
-bash: visudo: command not found


O cholewcia - nie jest zainstalowane. Więc poszukajmy w portage'u:

emerge --search sudo


W czasie kiedy to polecenie się wykonuje dopiszę kolejną według mnie (niewielką) zaletę Gentoo -w porównianiu do dystrybucji debianowych jedną komendą zainstalujemy, wyszukamy pakiet - w Debianie są osobne i nieintuicyjne apt-get (instalacja) apt-cache search(bodajże - wyszukiwanie).
Dobra - mam już wyniki - a wśród nich:

Searching...
[ Results for search key : sudo ]
[ Applications found : 6 ]

* app-admin/sudo
Latest version available: 1.7.1-r1
Latest version installed: [ Not Installed ]
Size of files: 738 kB
Homepage: http://www.sudo.ws/
Description: Allows users or groups to run commands as other users
License: as-is BSD


Ponieważ emerge --search wyszukuje pakiet przeglądając na bieżąco wszystkie ebuildy w portage'u (/usr/portage - chyba wszystkie - tak mi się wydaje - a jeśli nie to metadata) nieraz możemy się poirytować czasem trwania wyszukiwania - jak to miało miejsce w moim wypadku. Proponuję używać komendy eix. hmm.. pryska zaleta jednej komendy do wyszukiwania i instalacji - no cóż - ale za to mamy szybko działającego eix'a - apt-chache strasznie muli mimo, że podobnie jak eix wyszukuje dane we własnej, zindeksowanej wcześniej bazie pakietów.
eix instaluję tak (warto zainstalować z bazą sqlite - odpowiednia flaga jest przy pakiecie):

# emerge -av eix


Zalecam używanie opcji --verbose --ask przy każdej instalacji - zawsze warto mieć wgląd w to co się będzie działo niż na ślepo instalować.

Zainstaluję w końcu sudo:

# emerge -av sudo
These are the packages that would be merged, in order:

Calculating dependencies... done!
[ebuild N ] app-admin/sudo-1.7.1-r1 USE="pam -ldap -offensive (-selinux) -skey" 739 kB

Total: 1 package (1 new), Size of downloads: 739 kB

Would you like to merge these packages? [Yes/No]


I już. Teraz nadaję uprawnienia użytkownikowi:

# visudo


Dodaję linię:
user localhost = /usr/bin/emerge

i już - użytkownik user może używać komendy emerge.