Strona 1 z 2

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

: 26 marca 2009, 12:25
autor: hasanek
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.:
  • uż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ń.
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.

: 26 marca 2009, 15:17
autor: noworol
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

Kod: Zaznacz cały

man passwd
Z lektury ,,man passwd'', dowiadujemy się, że komenda

Kod: Zaznacz cały

passwd -l użytkownik
blokuje dostęp do konta użytkownika, a

Kod: Zaznacz cały

passwd -u użytkownik
ten dostęp przywraca. W terminalu, z uprawnieniami roota.

Sprawdzamy czy cron jest zainstalowany:

Kod: Zaznacz cały

dpkg -l | grep cron
Sprawdzamy czy jest uruchomiony:

Kod: Zaznacz cały

ps -C cron
Jeśli wszystko jest dobrze, przystępujemy do edycji:

Kod: Zaznacz cały

nano /etc/cron.d/crontab
W tym przypadku wpisujemy:

Kod: Zaznacz cały

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.

: 26 marca 2009, 18:25
autor: giaur
@noworol

Jestes pewien tego co mowisz? Bo ja twierdze ze nic z tego nie wyjdzie. Juz predzej anacron by cos pomogl.

: 27 marca 2009, 20:12
autor: hasanek
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.

: 27 marca 2009, 20:45
autor: maciejr2
Dodać na końcu polecenia:

Kod: Zaznacz cały

&> /dev/null

: 27 marca 2009, 20:49
autor: lessmian2
Chyba bardziej gdzieś na początku pliku:

Kod: Zaznacz cały

MAILTO=""
:-)

: 27 marca 2009, 23:12
autor: noworol
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:

Kod: Zaznacz cały

aptitude install fcron
Stworzenie fcrontab:

Kod: Zaznacz cały

touch /etc/fcrontab
fcrontab -n /etc/fcrontab -u root
Edycja fcrontab:

Kod: Zaznacz cały

fcrontab -e
Zawartość fcrontab:

Kod: Zaznacz cały

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

: 28 marca 2009, 14:07
autor: Ister
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):

Kod: Zaznacz cały

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?

: 28 marca 2009, 15:37
autor: lessmian2
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?

: 28 marca 2009, 18:00
autor: Ister
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