Как стать автором
Обновить

Комментарии 25

Пробежал глазами и
Скрипт .guest.sh хотя и не виден в домашней папке (по крайней мере сразу), но виден в списке процессов, и этот процесс спокойно убивается гостем (если он знает как), что в принципе снимает ограничение на время сеанса.

а почему не сделать отдельного юзера и скрипт .guest.sh сделать от имени рута и тогда пользователь его не убьет. (тем более юзеры у вас уже есть, остается только сделать скрипт рутовским)
К сожалению не нашел способа, как прикрутить его иначе к гостевой сессии, которая тем и вкусна, что в ней уже весь необходимый функционал встроен.
Теоретически можно было бы попробовать через /etc/sudoers, но тогда пришлось бы дальше править /usr/sbin/guest-account на предмет запрещения генерации имени нового гостя (по дефолту он создается при каждом новом сеансе в виде guest-***** с такой же группой, а sudoers вроде бы не работает с маской?), а это как бы послабление в плане безопасности гостевых данных.
Или все-таки есть вариант, и я его просто не вижу?
Можно сделать root владельцем файла и поставить suid-бит.
Попробовал:
chown root:root /etc/guest-session/skel/.guest.sh
chmod 4755 /etc/guest-session/skel/.guest.sh


Скрипт в гостевой сессии стартует, уведомления показывает, но гость через терминал его все же без проблем убивает.
Не помогло в общем, хозяин у процесса тот же — гость…

Где-то слышал, что вроде бы SUID во многих дистрибутивах линукс ограничили и он теперь работет только с бинарниками.
Но как бы исходя из логики, имеет смысл запускать скрипт не с правами root, а от имени root — тогда только он его и убить сможет?
Как это сделать без sudo, пока ума не приложу.
А почему не разрешить sudo запускать только этот скрипт? У него же очень гибкая конфигурация, кому и что можно запускать.
Дело в том, что имя гостя и его группа генерируется для каждого нового сеанса заново, типа
guest-xyZ123:guest-xyZ123
guest-56bv23:guest-56bv23
...

Как привязать это к sudo? Не нашел, вроде ничего наподобие guest-* в sudoers не поддерживается…

Разве, как я упоминал, скрипт /usr/sbin/guest-account править, чтобы гостю каждый раз одно и то же имя давалось, но это еще одно послабление в защите:
если по какой-то причине домашний каталог с прошлой сессии не удалится, то следующий гость получит полный доступ к данным предыдущего :/
Можно добавлять всех таких пользователей в специальную группу. И разрешить этой группе запускать указанный скрипт.
Я вот подумал… Возможно, более правильно делать logoff через команду at, а не через sleep.
Хорошая идея!
Попробую, если получится — то не будет необходимости в висящем во время гостевой сессии процессе скрипта.
Чувствую, что будет продолжение темы…
Надеюсь, что для разных вариантов? Debian-based, Виртуальные машины, Сетевая загрузка, Windows 7… (просто даунгрейдиться смысла нет, а 8 большинству непривычна)… Сам всё на базе 7ки через песочницу организовал, но это всё же не то…
А почему такие условия 30 минут на сессию и 2 минуты паузы между сессиями?
Вероятно, чтобы один посетитель не занимал ноут на весь вечер.
Совершенно верно. Ну а о том, что пауза всего 2 минуты, нигде не написано, так что пусть пробуют залогинится сразу после принудительного логаута. И при каждой попытке время паузы считается заново…
теперь написано…
Что да, то да. Но если будет замечен прокол, есть средство, которым можно будет дополнить .guest.sh и которое все-таки может подпортить удовольствие хитрым:
tldp.org/LDP/abs/html/randomvar.html, см. начиная с «FLOOR=200»
В свое время мне посоветовали программу DeepFreeze.
Программа великолепная, превращает любой компьютер в аналог «игровой приставки», что бы не делали с компьютером после перезагрузки он в «исходном» состоянии. Используем ее как крайний способ для борьбы с продвинутыми или недоразвитыми пользователями…
Работает очень четко и без сбоев. Причем нагрузки на железо никакой, даже древние компики на складе под ее защитой.
Один минус она платная… 45$
Но по моему мнению она эти деньги отобьет сразу после установки, потому как системного администратора беспокоить прийдется разве что для обновления браузера на «замороженном» компьютере…
Да, интересная и недорогая штука. За наводку спасибо.
Но это все-таки более глобально (типа апаратнного Sheriff) — фильтрация изменений на уровне диска, а не на уровне пользователя, а это уже делает его средством для решения немного другого класса задач: например как вы упомянули для гарантии работоспособности рабочей станции скажем на складе (данные я так понимаю хранятся на сервере).

Из описания к программе не понял, позволяет ли она ограничить время сеанса и назначить паузу между логинами?
Да на сервере, в моем случае сетевой диск с 1с.
Фитчи:
1. Можно морозить только диск С:, тогда данные останутся на других дисках.
2. Можно делать интеграцию с антивирусом что бы сохранились обновления баз, по мне так полная заморозка — лучший антивирус =)
3. Точно можно запланировать перезагрузки станции по времени, какие точно настройки врать не буду. Да и что мешает сделать cmd файл в автозагрузке
Sleep 1800
Shutdown
Мне кажется «общественный» ноут все же должен быть на windows, пользователям будет привычнее, тем более что лицензионная система уже есть.

Думаю можно было решить вопрос через виртуализацию — например, поставив также линукс, но заблокировать на нем весь функционал кроме скрипта с возможностью запуска виртуальной машины с windows. Скриптом можно регулировать время работы, вести статистику, а также восстанавливать после каждой сессии файл дампа.
В дампе система может быть в состоянии ожидания, что сократит время загрузки. Ну а всякие уведомления можно выводить уже внутри windows.
Привычнее-то да, но безопаснее ли для гостя? В виндовс придется следить за актуальностью версий того же флэшплейера, адоби ридера и антивируса. То же самое касается вируальной машины.
Хотя как вариант — вполне возможно. Но тогда в плане привычности стоит задуматься и над MS Office, а какая нужна тогда лицензия от MS, если «хозяин» ноутбука дает его в пользование «всем, кто зайдет»?

Собственно говоря, исходя из бесплатности пользования и необходимого программного окружения, мне кажется что Firefox/Chrome, OpenOffice, SMplayer, Skype i Gimp(если понадобится, то верции 2.8 в однооконном режиме) с их крупными ярлыками на панели Unity должны вполне удовлетворить потребности рядового посетителя маленького кафе на 30 минут. Все равно большинство будет пользоваться в основном интернетом.
Есть такая штука для виндовс: Enhanced Write Filter

Соответсвенно для гостей все будет именно так как описано, правда нужно подумать над лимитированием сессии по времени, но я думаю, что политиками должно рулиться.
Классная штука. Это из XP Embedded?
Но у нее есть, также как и у DeepFreeze (см. комментарий claymen) по сравнению с гостевым сеансом убунту один существенный недостаток: для удаления данных гостевого сеанса нужна перезагрузка.
И главное чтоб гость ничего слишком объемного не открывал/закачивал, а то памяти может не хватить на временном диске в ОЗУ…

А в убунту из гостя достаточно сделать логаут + можно в случае надобности переключится на оставшуюся открытой сессию нормального пользователя, у которого все данные между логаутами/перезагрузками сохраняются.

Насчет локальных политик windows 7 — глянул сначала, но не нашел как можно добится такого как нужно (30min_2min_30min_2min...) и бросил это дело. Не зря видимо спецпроги для интернеткафе под виндовс пишут ;)

Точно также ходил-облизывался вокруг модуля pam_time в линукс, с ним можно было бы избавиться от (теоретической) проблемы хитрых юзеров убивающих управляющий скрипт, но он не позволяет указать длительность сеанса, а только временнЫе окна типа расписания.
Можно и из XP Embeded, но лучше Windows Embedded Standard 7 — Вы же наверное Windows 7 рассматривали?

Для удаления данных гостевого сеанса есть restore и SetLevel

Временным диском может быть не только диск в памяти, а и просто часть диска, отведенная специально под EWF (EWF Disk Mode).

А в Windows можно… на самом деле холивар это, у меня так называемый «бизнес-центр» для гостей на 4 компьютера с Windows 7 с настроеным EWF, не стал ставить Ubuntu по банальной причине — гости в подавляющем большинстве без виндовс потеряются и начнут просить помощи, а мне нужно что бы они сами были в состоянии разобраться. Я стараюсь думать не только о том, как ограничить, а еще о том, как сделать использование удобным для пользователя…

На счет времени — возможно ошибся, допускаю, что в политиках этого может и не быть, но ничто не мешает при старте компьютера запустить скрипт на VB от System (в политиках это секция startup), который будет завершать любой пользовательский сеанс через 30 минут. Впринципе все есть — время логина либо можно запоминать, либо брать из eventlog последний логин. На счет 2 минут между сеансами, теоретически можно в тот же скрипт засунуть автоматический логоф, если предыдущий логоф был сделан менее чем 2 минуты назад (опять же либо по evenlog'у, либо запоминать). В итоге просто 2 условия сразу проверять: если предыдущий логоф менее 2-х минут назад или более 30 минут назад, то логоф. Что-то даже самому интересно стало.
Со скриптом на VB должно действительно получится как в убунту, только в него надо встроить также удаление данных гостя при логаут, или принудительно при каждом логауте перезагружать компьютер чтоб все удалилось автоматически.

Посмотрю будут ли жаловаться на убунту посетители. Если им достаточно понятно и удобно будет, буду только рад.

А нет, то придется по Вашей методе Windows 7 настраивать, тогда к сожалению надо будет думать как за всем этим ухаживать (обновления, антивирус и т.п.), и что-то решать насчет мс-офиса (он как бы установлен, но лицензия-то однопользовательская — так что либо другую лицензию, либо опеноффис ставить + мс-оффис для гостей прятать/запрещать запуск).
Да, еще вот вопрос: а позволит ли такая система под Win переключаться на лету в нормального пользователя, с сохранением потом его данных? Если для удаления гостевых данных будет использоваться перезагрузка, то это будет несколько неудобно: бац, и грохнули сеанс хозяина ноутбука, а у него там важная страница открыта была :)
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории