Linux за българи: Форуми

Linux секция за начинаещи => Настройка на програми => Темата е започната от: cyrilo в May 04, 2005, 14:16



Титла: Изключване на потребител в определено време
Публикувано от: cyrilo в May 04, 2005, 14:16
Значи имах следният проблем. Децата се прибират и сядат да играят игри вместо да пишат домашни.
Реших го, всеки път паролата им е последователност от верните отговори на определен брой задачи. Решават ги и играят.
Сега обаче искам да не седят прекалено дълго пред компютъра. И бих искал да мога да им заключа акаунта след определено време работа и да ги изрита ОС-а.
Някакви идей как?


Титла: Изключване на потребител в определено време
Публикувано от: ivanatora в May 04, 2005, 20:24
Пробвай да напишеш някое скриптче :)
Съвсем на бързо ще ти нахвърлям някои идеи (за които сигурно си се сетил вече де  :p )
- ако времето е изтекло, да се изключи машината/заключи потребителя (xscreensaver -lock?) и да се запише някъде че сесията е била 'изтекла' (виж долното)
- ако машината се рестартира, да се провери дали предишната сесия е била 'изтекла' и ако е да я блокира отново
- да има възможност за отблокиране/отключване (в xscreensaver-a трябва да се въведе паролата на потребителя, приложимо е ако пускаш децата с твоя потребител, на когото не знаят паролата)
Разбира се, вероятно съществува много по-просто решение  :)


Титла: Изключване на потребител в определено време
Публикувано от: cyrilo в May 04, 2005, 22:31
Благодаря, мислех че има някакви по-така начини, мързеше ме.
Но кво да се прави.
Да видим дали няма по-просто решение, от някой киоск например.
Инак по това което написа
1.  Ако времето е изтекло трябва просто да направи logout.
2. Децата работят със собствен потребител. Урязан към какво ли не, включително и към сайтове които могат да посещават.
3. За рестартирането. Трябва да я изключат от контакта или копчето, те са изобретателни де. Но инак им трябва root парола.

Та все още чакам по-просто решение. Дано се размина без много писане, че цял ден писане и в къщи писане то не бива.
Тука е варианта под уиндоус. Айде да видим как да се направи под линукс.


Титла: Изключване на потребител в определено време
Публикувано от: George Andonov в May 05, 2005, 12:05
Една идея:

В profile-а на техния потребител старираш следния скрипт:
1. sleep $ВРЕМЕ
2. заключване на account-а на потребителя (usermod -е)
3. logout

За активиране да достъпа, е необходимо (като root) да премахнеш expire date на потребителя.

P.S. Предполагам, че скрипта трябва да има SetUserID bit (за да работи като root). Но ти го провери.


Титла: Изключване на потребител в определено време
Публикувано от: Hapkoc в May 05, 2005, 12:23
Друга идея - at в .profile/.bashrc/.bash_login/.bash_profile
В смисъл at е измислено с такава цел - изпълнение на scheduled (не мога да измисля подходяща българска дума :( ) команди.

$ man at

Поздрави

п.с. надявам се да споделиш решението, което си намерил :)
п.п.с. задачката е доста интересна
п.п.п.с. тая хава с паролата и въпросите дето си я измислил - може ли малко подробности, че и за нея ми стана интересно :)


Титла: Изключване на потребител в определено време
Публикувано от: rpetrov в May 05, 2005, 12:33
ако не си с redhat базирана дистрибуция, то пакета shadow трябва да съдържа logoutd - толкова за еквивалентността.


Титла: Изключване на потребител в определено време
Публикувано от: cyrilo в May 05, 2005, 23:11
Дистрото е Debian.
И на мен ми е трудно с българските думи аналози.

Така хавата с паролата е доста просто решение.
Значи като се приберат от училище имат задачи.
За сега е само математика. Решават задачите. Получават отговори. Числа обикновенно. Ако са дробни, до вторият знак след запетаята. Без калкулатор, да се учат да делят.
След това отговор след отговор лепят един след друг и се получава паролата им. За целта аз решавам задачите предварително, добре че са още малки 1 и 2-ри клас. Значи всеки си има отделен потребител и си влизат с него. За малкият едни игри, за големият други. Те и без друго се дърлят кой да играе така че не си подсказват и големият не решава задачите на малкият защото игрите на малкият не са интересни за големият.
Ще трябва да измисля нещо за четене на книги. Нещо с думи или букви от думи така че да трябва да четат и да им е като хакване. Сега с тия задачи е игра "да хакнем паролата". Забавно им е.
Като станат 7-8 клас ще трябва да се разчита на съзнание.


Титла: Изключване на потребител в определено време
Публикувано от: Agent_SMITH в May 05, 2005, 23:51
Супер тема! Поздравления. Много ще се радвам, ако откриете ергономично решение, което после да опишете в една кратка статия. Това са практични и полезни неща. Успех!


Титла: Изключване на потребител в определено време
Публикувано от: nqkoisi в May 06, 2005, 03:39
Малко грубиянско решение ама :)

#!/bin/sh

pkill -u username
passwd -l username

#end:)

та значи с pkill убиваш всички процеси на дадения потребител,
а с passwd -l му локваш акаунта (т.е. паролата му се заменя с стойност ,която няма криптирана еквивалентна или нещо подобно беше :))

passwd -u username

да му отключиш акаунта или да му върне старата парола.

Така ти остава само да добавиш в cron-a подходящите часове за стартиране и спиране.При рестарт акаунта остава заключен.


Титла: Изключване на потребител в определено време
Публикувано от: spawnman в May 06, 2005, 10:10
Чудя се дали някой продукт за управление на интернет кафета няма да свърши работата?


Титла: Изключване на потребител в определено време
Публикувано от: cyrilo в May 06, 2005, 10:18
Значи до тука стигнах до следното което си поиграх и написах:
Това се пуска с root след като се логне някой
Примерен код

#!/bin/sh

#wait 2 hours
sleep 2h
#Kill all user processes
pkill -u kris
#Lock the account
passwd -l kris


Значи според мен няма нужда от cron или at защото тука потребителят работи само определено време.
Значи в моемента нямам нужда но скрипта може да се разшири така че да е валиден за определени потребители, може да се опишат във файл.
Може да бъде добавена опиция в crontab за заключване на потребителя в определено време и отключване пак в определено време.

Благодаря за идейте. Доста ми помогнахте да си изградя някаква система.


Титла: Изключване на потребител в определено време
Публикувано от: nqkoisi в May 06, 2005, 10:39
Не съм те разбрал много добре , но това нещо което си направил е добре да го сложиш в :

/home/kris/.bash_profile

за да се изпълнява след влизането на потребителя.


Титла: Изключване на потребител в определено време
Публикувано от: cyrilo в May 06, 2005, 11:02
Значи това се изпълнява след влизането на потребителя и е точно в .bash_profile
Мислех че трябва да се изпълнява с root но работи и без root.

Благодаря много "Някой си"


Титла: Изключване на потребител в определено време
Публикувано от: cyrilo в May 06, 2005, 16:44
Хубаво го написах аз по-горният скрипт. Да но .bash_rc не се пуска от KDM затова трябваше да мисля нещо по-така.

Значи идеята ми е нещо да се пуска от cron.
Да пита who.
Да гледа след това в списък от потребители с времена дали някой не си е надвишил времето за престой. grep
И ако има такива пуска горният скрипт.

Някакви коментари?
От типа, къде е най-добре да опиша времената на потребителите съответно? /etc/passwd?


Титла: Изключване на потребител в определено време
Публикувано от: XaugyTuH в May 07, 2005, 01:38
Първо да кажа, че темата ме кефи, защото е важно да се грижим за децата си! Моята дъщеря още няма 2 години, но сигурно като утре ще дойде времето, когато ще се чудя как да я ограничавам на компютъра. Та сега по темата:
В Линукс нещата обикновено са организирани в текстови файлове. И моята идея е в един текстов файл да е записано на кой акаунт колко минути са му останали да използва. В cron-а пък е добавено на всяка минута да се изпълнява скрипт, който проверява кои потребители са лог-нати и им намалява времето с една единица. В момента в който цифрата стане нула достъпа се прекратява.
Надявам се да съм бил ясен. Успех.  :)


Титла: Изключване на потребител в определено време
Публикувано от: в May 07, 2005, 05:20
Не знам доколко съм прав и доколко съответства на системата, която изграждаш, но скрипта може да се пуска веднага след стартирането на Login Manager.
Не използвам KDM, но като пример:
в Дебиан GDM стартира след init 5 (има и поднива и те се описват с още един допълнителен номер) и в /etc/X11/Xsession.d/55gdm
Скрипта можеш да  го номерираш като 56 или 57 и ще стартира веднага след логването.
Не знам доколко правилно съм схванал правилата за init - и къде греша, но си мисля, че е подходящо като място където да сложиш този скрипт.


Титла: Изключване на потребител в определено време
Публикувано от: ivanatora в May 07, 2005, 23:36
Цитат (XaugyTuH @ Май 07 2005,01:38)
В cron-а пък е добавено на всяка минута да се изпълнява скрипт

Само да си питам, cron-а не се ли натоварва много в този случай? :)


Титла: Изключване на потребител в определено време
Публикувано от: XaugyTuH в May 07, 2005, 23:50
cron-a не може да се натовари, може да се натовари компютъра  :D . Обаче не мисля че подобен скрипт би натоварил дори и слаба машина. В сравнение с това което прави всяка минута самият kernel това е направо нищо.


Титла: Изключване на потребител в определено време
Публикувано от: voyager в May 08, 2005, 09:16
Цитат (cyrilo @ Май 06 2005,12:02)
Значи това се изпълнява след влизането на потребителя и е точно в .bash_profile
Мислех че трябва да се изпълнява с root но работи и без root.

Благодаря много "Някой си"

Ами... според мене има един маалък проблем със .bash_profile варианта. и той е някакси... трябва да му се сложи маска от сорта: r-wr--r-- и самия .bash_profile да се chown-е на примерно на root. Защото иначе... децата са много изобретателни :) и с нещо от  сорта на:
<code> mv .bash_profile .bash_profile.orig;killall -9 -1;</code>
седене колкото искат време при невъзможност за контрол (доколкото разбирам идеята е единствено със скрипт-а да се ограничават, не със някакви physical методи).. и по някое време правят
<code> mv .bash_profile.orig .bash_profile;logout;</code> за да "прикрият" действията си (god, bless the logs :) но и те могат да бъдат подправени).
пс: сега се сетих... може и самите процеси да почнат да киллват ако са им owner-и. това трябва да се вземе под внимание...


Титла: Изключване на потребител в определено време
Публикувано от: n_antonov в May 08, 2005, 11:21
Цитат (cyrilo @ Май 06 2005,02:11)
Дистрото е Debian.
И на мен ми е трудно с българските думи аналози.

След като ползваш Debian, най-чистият начин е да разучиш работата с два файла - /etc/security/access.conf и /etc/security/time.conf. Тяхната функция е точно такава.


Титла: Изключване на потребител в определено време
Публикувано от: todorb в May 08, 2005, 12:16
може би kde kiosk mode ще ти свърши работа. тази програмка улеснява конфигурацията: kiosk admin tool. не съм ползвал никога този режим, но изглежда, че доста неща могат да се ограничават.


Титла: Изключване на потребител в определено време
Публикувано от: cyrilo в May 08, 2005, 19:41
alabal - Използвам KDМ по-приятен ми е.

Цитат (n_antonov @ Май 08 2005,12:21)
/etc/security/time.conf. Тяхната функция е точно такава.

n_antonov Благодаря.
Това с /etc/security/time.conf приличаше точно на това което ми трябва. Обаче достъпа е регулиран не според времето на работа(вътре в системата) на потребителя, а за определен период от време.
На мен ми е необходимо да може потребителят след като влезне да работи само 2-3 часа и аре, вънка.

XaugyTuH според теб да сядам и да пиша скриптчето за crond?

todorb - киоска ги ограничава много, то идеята е не само да бичат игри а и да се учат.

voyager - ако успеят да хакнат времето, според мен си заслужава да им се даде да играят колко искат :-) поне мойте са малки.


Титла: Изключване на потребител в определено време
Публикувано от: spawnman в May 08, 2005, 19:57
Аз ползвам kdm и предложението на alabal тръгна още от сефтето, не виждам причина да не тръгне при теб. ???


Титла: Изключване на потребител в определено време
Публикувано от: n_antonov в May 08, 2005, 21:17
Все нещо ще измислиш, но според мен правилното решение не е техническо и затова не съм търсил на практика такива варианти. Моята дъщеря почти на 10 години и много обича компютъра, обича Линукс и ако не я подсетиш да стане, ще се самозабрави я в чат с приятели, рисуване или писане в блога си. Просто с приятелски разговори се убеждаваме, че висенето пред компютъра постоянно не е полезно и засега се разбираме. Но тя е момиче все пак. Ако си имате работа с момчета, нещата са по-сериозни;)


Титла: Изключване на потребител в определено време
Публикувано от: keremidko в May 09, 2005, 20:27
ми виж дали няма някоя програма като тая в комю клубове не поомня как се казваше нещо като qoiolaps ама за windows а за линукс даже незнам дали има


Титла: Изключване на потребител в определено време
Публикувано от: XaugyTuH в May 09, 2005, 21:57
Значи скриптчето дето си го написал ми се вижда малко съмнително. Например си му задал да се стартира при логване на потребител и да чака 2 часа.
Какво става ако след 1,5 часа компътъра се рестартира? Скрипта се стартира наново и започва да си чака наново? А какво става, ако децата усетят този пропуск в сигурността?  ;)
Скрипта задължително не трябва да се пуска като обикновен потребител, защото той ще си работи, но какво ще стане ако някой подшушне на твоето дете за команди като ps, kill, killall и т.н.? Току виж станало системен администратор!  :)
Аз продължавам да си поддържам идеята и ако беше седнал да пишеш до сега да е готово.
А иначе като се замисля, най-добре да направиш както казва керемидко. Намери някоя програма дето под уиндовс не се знае как се казва, а под Линукс не се знае дали има такава.  :D  :D  :D


Титла: Изключване на потребител в определено време
Публикувано от: cyrilo в May 09, 2005, 22:25
Хаидутино,
Значи аз го написах скриптчето.
Закачих го на cron работи с root за сега. Искам още малко да го изчистя и ще го пусна тука.
Инак добра идея че няма да регистрира рестартиране.
Ще сложа да пише във файл колко време на потребителя е му е останало и така рестартирането няма да е проблем.

n_antonov, пробвах с приказки, но ти каза момчетата не са като момичетата.
Аз имам с тях яко проблеми че приятелите им имат windows-и и игрите дет се говорят в училище не вървят тука. А аз не смятам че те са добри за деца, леле помня кога баща ми говореше така като висях пред комп-а.
Инак няма да им се разсърдя ако станат сисадмини ;-), но "по-добре доктори" както казва баба ми.