ďťż
 
 
   [+] Określony czas dostępu do komputera przez użytkownika
 
 

Tematy

 
    
 

 

 

 

[+] 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.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • minister.pev.pl

  •  

     


     

     
    Copyright 2003. MĂłj serwis