|
[+] Określony czas dostępu do komputera przez użytkownika
hasanek - 26-03-2009 12:25
Witam.
Ostatnio nurtuje mnie pewien problem. Otóż na co dzień używam Debiana SIDa z KDE 3.5. Aktualizacje robię w miarę możliwości. Oczywiście jako menedżer logowania wykorzystuję KDM. Na moim komputerze jest kilkoro użytkowników i w związku z tym mam pytanie. Czy istnieje sposób na ograniczenie dostępu do komputera w określonych godzinach dla konkretnego użytkownika, np.:lużytkownik1 może się zalogować tylko w godzinach 8-14 użytkownik2 tylko w godzinach 15-19 użytkownik3 w godzinach 11-20 użytkownik4 nie ma żadnych ograniczeń.l
Chciałbym pozbyć się ciągłych kłótni o komputer, a nie stać mnie w tej chwili na kupno następnego ;-)
Pozdrawiam i liczę na Waszą pomoc.
noworol - 26-03-2009 15:17
Można łatwo coś takiego zrobić używając crona i komendy passwd. Określeni użytkownicy będą mogli zalogować się tylko w podanych godzinach. Najpierw lektura: klik1 klik2
man passwd
Z lektury ,,man passwd'', dowiadujemy się, że komenda
passwd -l użytkownik
blokuje dostęp do konta użytkownika, a
passwd -u użytkownik
ten dostęp przywraca. W terminalu, z uprawnieniami roota.
Sprawdzamy czy cron jest zainstalowany:
dpkg -l | grep cron
Sprawdzamy czy jest uruchomiony:
ps -C cron
Jeśli wszystko jest dobrze, przystępujemy do edycji:
nano /etc/cron.d/crontab
W tym przypadku wpisujemy:
0-59 8-13 * * * root passwd -u użytkownik1 0-59 14-23,0-7 * * * root passwd -l użytkownik1 0-59 15-18 * * * root passwd -u użytkownik2 0-59 19-23,0-14 * * * root passwd -l użytkownik2 0-59 11-19 * * * root passwd -u użytkownik3 0-59 20-23,0-10 * * * root passwd -l użytkownik3
Zapisujemy: ctrl+o enter ctrl+x.
giaur - 26-03-2009 18:25
@noworol
Jestes pewien tego co mowisz? Bo ja twierdze ze nic z tego nie wyjdzie. Juz predzej anacron by cos pomogl.
hasanek - 27-03-2009 20:12
Witam.
Dzięki za rozwiązanie, wygląda na to że działa tak jak powinno, tylko zaobserwowałem jedną uciążliwość. Mianowicie te wpisy crontab są wykonywane co minutę, a co za tym idzie do użytkownika root co minutę jest wysyłany przez system e-mail z wykonania polecenia, więc skrzynkę mam zasypaną niepotrzebnymi informacjami. Czy można jakoś wyłączyć wysyłanie powiadomień e-mail po poprawnym wykonaniu polecenia?
Pozdrawiam.
maciejr2 - 27-03-2009 20:45
Dodać na końcu polecenia:
&> /dev/null
lessmian2 - 27-03-2009 20:49
Chyba bardziej gdzieś na początku pliku: MAILTO=""
:-)
noworol - 27-03-2009 23:12
Rozwiązanie z cronem niezbyt eleganckie, w tym wypadku słusznie można użyć czegoś bardziej odpowiedniego, np. tak jak Giaur sugeruje -> anacrona. Jest też fcron i działa na podobnej zasadzie jak anacron. Nie miałem wiele styczności z anacronem, a też składnia fcrona wydaje mi się bardziej zrozumiała, dlatego krótki opis jak zrobić to w fcronie, jako root:
Instalacja: aptitude install fcron
Stworzenie fcrontab: touch /etc/fcrontab fcrontab -n /etc/fcrontab -u root
Edycja fcrontab: fcrontab -e
Zawartość fcrontab: SHELL=/bin/bash
!mail(false)
%hours 0-59 8-13 * * * passwd -u użytkownik1 %hours 0-59 14-23,0-7 * * * passwd -l użytkownik1 %hours 0-59 15-18 * * * passwd -u użytkownik2 %hours 0-59 19-23,0-14 * * * passwd -l użytkownik2 %hours 0-59 11-19 * * * passwd -u użytkownik3 %hours 0-59 20-23,0-10 * * * passwd -l użytkownik3
Polecenia wykonają się po starcie systemu, raz w określonych godzinach i nie będzie maili. Dodatkowo, tu znajdziesz dokumentację fcron'a: klik
Ister - 28-03-2009 14:07
Wytłumaczcie mi jedną rzecz - dlaczego każecie cronowi wykonywać te komendyu przez cały czas co minutę? Przecież wystarczyłoby zmienić raz status na początku i raz na końcu wyznaczonego okresu.
W przypadku crona wyglądałoby to tak (w innych się nie wypowiem, ale pewnie jakoś podobnie):
0 8 * * * root passwd -u użytkownik1 0 14 * * * root passwd -l użytkownik1 0 15 * * * root passwd -u użytkownik2 0 19,0 * * * root passwd -l użytkownik2 0 11 * * * root passwd -u użytkownik3 0 20 * * * root passwd -l użytkownik3
Pytanie jeszcze, czy nie należałoby wylogować aktualnie zalogowanego użytkownika z zakończeniem wyznaczonego dla niego czasu?
lessmian2 - 28-03-2009 15:37
Ister zauważ że jeśli komputer zostanie włączony np. o 14:15, a w cronie wpis blokujący dostęp dla użytkownika1 ma się wykonać o 14:00 to to nie zadziała. Tak samo sprawa ma się z odblokowaniem konta. To już chyba lepiej wykonywać to co minutę. A może by tak dopisać do .bash_profile każdego użytkownika i prostą regułkę sprawdzającą godzinę i ew. wylogowującą użytkownika w określonych godzinach?
Ister - 28-03-2009 18:00
Zdecydowanie jestem zwolennikiem nie obciążania komputera tam gdzie nie potrzeba. To już raczej napisać skrypt sprawdzający przy starcie godzinę i ustawiający odpowiednie uprawnienia.
Albo metoda podana przez Ciebie z .bash_profile
lessmian2 - 28-03-2009 19:01
Sprawdź sobie rozwiązanie z .bash_profile. Zastosuj testowemu użytkownikowi taki kod:
HNOW=`date +%H` STARTH=17 ENDH=19 if (($HNOW > $STARTH)); then if (($HNOW < $ENDH)); then logout fi fi
Użytkownik próbujący się logować między godzinami podanymi w STARTH i ENDH zostanie automatycznie wylogowany.
AdeBe - 28-03-2009 23:03
A ja bym to zrobił jeszcze inaczej. Po pierwsze, zastosowałbym wersję zadań dla crona podaną przez kolegę Ister, ORAZ dodał do tego skrypt odpalany przy starcie systemu i na podstawie godziny ustalający dostęp dla użytkowników.
hasanek - 28-03-2009 23:49
Dziękuję jeszcze raz wszystkim za udzielenie pomocy. W dzień testowałem różne rozwiązania i w końcu doszedłem do wniosku, że jedyną skuteczną metodą jest połączenie zadań crona i skrypt uruchamiany przy starcie systemu. Widzę, że nie tylko ja wpadłem na takie rozwiązanie (także użytkownik AdeBe). Same regułki crona nie wystarczą, ponieważ przy uruchomianiu systemu zdarza się, iż nie zdążą się one wykonać (o pełnej minucie), a użytkownik w tym czasie się zaloguje.
Dziękuję raz jeszcze.
Pozdrawiam.
carbas - 30-03-2009 01:22
Ale kombinujecie?
Nie prościej posłużyć się PAM? Konkretniej: pam_time? Jest taki pliczek: /etc/security/time.conf Więcej informacji tutaj: http://www.kernel.org/pub/linux/libs...-pam_time.html.
Ps. Tak w ogóle to witam na forum.
zanotowane.pldoc.pisz.plpdf.pisz.plminister.pev.pl
|