Как ограничить пользователя определенной средой рабочего стола?

У меня более-менее стандартная установка Ubuntu Precise 12.04, и я вполне доволен выполнением повседневных задач в среде рабочего стола Unity.

Однако, когда дело доходит до игры, я чувствую себя намного более комфортно с LXDE (фон: в текущем состоянии Unity архивирует гораздо более низкие частоты кадров, чем, например, Unity 2D или LXDE - это известная ошибка и над которой работают). ]

Для этого я создал профиль пользователя геймера и теперь хочу ограничить его использованием только рабочей среды LXDE.

Чтобы уточнить это далее: когда меня просят войти в систему после загрузки, я хочу, чтобы только LXDE отображался как опция для профиля пользователя геймера на экране входа в систему, в то время как в моем стандартном профиле пользователя должна быть возможность выбрать, какой рабочий стол среда для использования.

Заранее благодарим за любые идеи, которые могут быть полезны!

8
задан 13 November 2015 в 08:08

3 ответа

в Debian Squeeze и Wheezy вы также можете добавить .xsessionrc с одной строкой

export STARTUP = XXX

(где XXX - это ваш принудительный сценарий сеанса, см. Exec-Line выше) в домашнем каталоге пользователя принудительно установить определенный тип сеанса независимо от того, что выбрал пользователь.

Также должен работать на Ubuntu.

(Загляните в /etc/X11/Xsession.d/40x11-common_xsessionrc и 50x11-common_determine-startup, чтобы увидеть, почему это работает)

0
ответ дан 13 November 2015 в 08:08

Хорошо, из моего понимания LightDM (менеджера входа в систему), кажется, не поддерживается ограничение рабочих столов для конкретного пользователя . Это сделка «все или ничего». По умолчанию, когда пользователь выбирает среду рабочего стола, это становится его средой рабочего стола по умолчанию. Когда они войдут в следующий раз, если они не выберут другой, они войдут в систему по умолчанию.

Однако вы можете сделать так, чтобы пользователь не мог изменить это. Этот пользователь по-прежнему сможет выбирать другую среду рабочего стола, но если он это сделает, он не изменит их по умолчанию. Я считаю, что это самый безопасный способ сделать это, если вы не беспокоитесь, что человек это изменит. Все, что вам нужно сделать, это отредактировать их .dmrc файл (расположенный в их домашнем каталоге, т.е. / home / user). Здесь хранится их сессия по умолчанию. Измените переменную Session в этом файле на любую, какую вы хотите, то есть ubuntu - это Unity DE по умолчанию, ubuntu-2d - Unity 2D, а LXDE - LXDE. Чтобы это не изменилось, если они войдут в систему с другим DE, мы можем просто сделать его неизменным (неизменяемым):

sudo chattr +i /home/user/.dmrc

Теперь никто не сможет изменить этот файл (root и другие). программы включены), если вы не уберете неизменный флаг:

sudo chattr -i /home/user/.dmrc

Если вы абсолютно НЕ хотите, чтобы этот пользователь когда-либо входил в систему с другим DE, я действительно нашел хакерский способ (то есть, сделать это самостоятельно риск) для достижения этой цели. Мне было немного скучно, и это казалось забавной попыткой. Все различные DE, которые LightDM может видеть, хранятся в /usr/share/xsessions как файлы .desktop. К вашему сведению, вы можете удалить любой из них, который вы не хотите показывать на экране входа в систему (но это удалит его для ВСЕХ пользователей). Если вы откроете любой из них, они довольно просты. Это основные файлы запуска на рабочем столе, как и все ярлыки на рабочем столе. Каждый из них содержит строку Exec, которая выполняется, когда вы выбираете свой DE на экране входа в систему (то есть какой DE запускается). Мы собираемся воспользоваться этим и проверить, какой пользователь входит в систему. Если пользователь является нашим ограниченным пользователем, мы заставим его использовать определенную DE.

Во-первых, для каждого файла .desktop в /usr/share/xsessions/ вам нужно будет создать скрипт в /usr/local/bin. Для моего примера я покажу, как это сделать для ubuntu.desktop, который является Unity DE, и с использованием LXDE в качестве DE, который мы заставляем использовать нашего ограниченного пользователя (disableduser). Глядя на LXDE.desktop, мы видим, что команда Exec - это /usr/bin/startlxde, а команда TryExec отсутствует. Когда вы открываете ubuntu.desktop, мы видим, что команда Exec - это gnome-session --session=ubuntu, а команда TryExec - unity. Команда TryExec как раз и звучит. После выполнения команды Exec он попытается выполнить команду TryExec, но в случае неудачи он не будет аварийно завершен.

Теперь, взяв те команды, которые мы получили из файлов .desktop, мы можем создавать наши скрипты. Мы поместим их в /usr/share/bin. Нам нужно будет сделать два, один для Exec и один для TryExec. Мы сделаем что-то вроде этого:

ubuntude.sh

#!/bin/bash

if [ `/usr/bin/whoami` = "restricteduser" ] ; then
   /usr/bin/startlxde
else
   gnome-session --session=ubuntu
fi

ubuntudetry.sh

#!/bin/bash

if [ `/usr/bin/whoami` != "restricteduser" ] ; then
   unity
fi

Мы просто проверяем, является ли вход в систему нашим ограниченным пользователь, и запуск соответствующего DE. Теперь нам нужно убедиться, что они исполняемые:

sudo chmod +x /usr/local/bin/ubuntude.sh
sudo chmod +x /usr/local/bin/ubuntudetry.sh

Теперь нам нужно изменить наш ubuntu.desktop так, чтобы он вызывал наши скрипты вместо реальных DE. Закомментируйте строки Exec и TryExec в файле и замените их следующим:

Exec=/usr/local/bin/ubuntude.sh
TryExec=/usr/local/bin/ubuntudetry.sh

Просто повторите процедуру для любых других DE, которые у вас могут быть. Если для DE нет TryExec, то для него также нет необходимости создавать сценарий detry.sh, так как LXDE не использует TryExec. Очевидно, это немного странно, и вы должны убедиться, что вы сделали резервные копии любых файлов перед их редактированием, но это сработает, если вам абсолютно необходимо убедиться, что пользователь входит в систему с правильным DE.

0
ответ дан 13 November 2015 в 08:08

Ответ от reverendj1 не работал на меня. Причина могла состоять в том, что значение, которое Вы указываете в Должностном лице =, не выполняется непосредственно, но передается/etc/X11/Xsession как аргумент. (источник: https://askubuntu.com/a/857420/873016)

Другое решение проблемы:
1. Скопируйте все/usr/share/xsessions/.desktop файлы
2. Удалите все/usr/share/xsessions/.desktop
файлы
3. Создайте только/usr/share/xsessions/default.desktop с

[Desktop Entry]
Name=Default
Comment=This session is the default session. It will look up the user specific desktop session in ~/.xsession.
Exec=default

"значение по умолчанию" является ключевым словом для Xsession и будет искать определенную сессию в каталоге пользователя.
4. Теперь создайте/home/{имя пользователя}/.xsession файл для каждого имени пользователя. Для "подобного киоску" приложения это должно быть похожим на это:

#!/bin/bash

cd /home/{yourUsername}/ && ./startApplication.py
logout

Если, например, другой пользователь должен быть позволен запустить полноценную среду рабочего стола, она могла бы быть похожей на это:

#!/bin/bash

exec icewm-session
  1. Удостоверьтесь, что ~/.xsession файл является исполняемым файлом
sudo chmod +x ~/.xsession

Протестированный на человечности 16.04 с lightdm

0
ответ дан 21 October 2019 в 14:56

Другие вопросы по тегам:

Похожие вопросы: