[+] Okre

Ogólne pytania dotyczące systemu
hasanek
Posty: 31
Rejestracja: 24 maja 2008, 18:54

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

Post 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.
noworol
Posty: 6
Rejestracja: 27 lutego 2009, 20:36

Post 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.
giaur
Member
Posty: 1915
Rejestracja: 25 maja 2007, 22:16

Post autor: giaur »

@noworol

Jestes pewien tego co mowisz? Bo ja twierdze ze nic z tego nie wyjdzie. Juz predzej anacron by cos pomogl.
hasanek
Posty: 31
Rejestracja: 24 maja 2008, 18:54

Post 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.
maciejr2
Posty: 6
Rejestracja: 11 marca 2009, 20:25

Post autor: maciejr2 »

Dodać na końcu polecenia:

Kod: Zaznacz cały

&> /dev/null
Awatar użytkownika
lessmian2
Member
Posty: 1088
Rejestracja: 30 kwietnia 2008, 19:38
Lokalizacja: Kraków

Post autor: lessmian2 »

Chyba bardziej gdzieś na początku pliku:

Kod: Zaznacz cały

MAILTO=""
:-)
noworol
Posty: 6
Rejestracja: 27 lutego 2009, 20:36

Post 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
Ister
Junior Member
Posty: 566
Rejestracja: 05 marca 2009, 12:42

Post 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?
Awatar użytkownika
lessmian2
Member
Posty: 1088
Rejestracja: 30 kwietnia 2008, 19:38
Lokalizacja: Kraków

Post 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?
Ister
Junior Member
Posty: 566
Rejestracja: 05 marca 2009, 12:42

Post 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
ODPOWIEDZ