Я недавно создал нового пользователя. Я хочу позволить этому пользователю использовать только одну или две программы, но у меня есть много установленных приложений в масштабе всей системы. Существует ли простой способ исключить определенного пользователя из использования приложений (не переустанавливая все снова)?
Спасибо за Ваши ответы. Я уже достиг этого путем управления полномочиями файлов мусорного ведра программ. Я установил старый инструмент управления пользователями гнома, который позволяет управлять группами. Игры группы непроверенные для пользователя, которому не разрешают открыть определенные программы. Тогда измененная группа и полномочия файлов мусорного ведра:
sudo chgrp игры/path/to/game
sudo chmod 750/path/to/game
Теперь пользователь видит файлы на рабочем столе в Тире, но они не будут бежать за щелчком.
Поздравления
Ниже комбинации мер можно взять, для ограничения пользователей локально в использовании определенных приложений. Они не предназначены (ни соответствие) для необслуживаемого использования, в общественных пространствах, например, но действительно создают применимый ограниченный рабочий стол. Это - главным образом комбинация мер, которая делает более трудным обойти. Кроме того, если кому-то удастся запустить "запрещенное" приложение, то оно будет зарегистрировано.
Ответ немного обширен. Установка не, и Вам помогают два сценария.
Из чего существует установка
Как установить
Установка широкого выбора программного обеспечения, недоступного от интерфейса.
/usr/share/applications
Выберите все (файлы на рабочем столе) приложения, Вы хотите, чтобы пользователь был исключен из (не выбирайте всех их без взгляда, некоторые из них необходимы для установки рабочего стола),no_openapp.py
. python3 no_openapp.py
.Сценарий сделал несколько вещей:
1] Создайте черный список команд (для более позднего использования, посмотрите далее ниже), 2] Редактирование файлы на рабочем столе для показа сообщения вместо того, чтобы запустить приложение. Если Вы перемещаете файлы на рабочем столе в ~/.local/share/applications
, на следующем входе в систему приложения не будут работать от Единицы или Тире.
#!/usr/bin/python3
import os
import getpass
import subprocess
desktopfile_dir = os.getcwd()
file_list = os.listdir(os.getcwd())
edit_subjects = [desktopfile_dir+"/"+item for item in file_list]
def create_blacklist():
command_list = []
for item in edit_subjects:
with open(item) as blacklist_source:
searchlines = blacklist_source.readlines()
try:
native_command = [
line for line in searchlines if line.startswith("Exec=")
][0].replace("Exec=", "").replace("\n", "")
cleaned_command = native_command.split(" ")[0]
command_list.append(cleaned_command)
except IndexError:
pass
with open(desktopfile_dir+"/blacklist.txt", "wt") as created_blacklist:
created_blacklist.write(str(command_list))
def make_unavailable():
for item in edit_subjects:
try:
with open(item, "r") as make_unav:
lines = make_unav.readlines()
line_range = range(0, len(lines))
for index in line_range:
if lines[index].startswith("Exec="):
lines[index] = 'Exec=zenity --info --text="You are not allowed to use this application"\n'
else:
pass
with open(item, "wt") as make_unav:
for line in lines:
make_unav.write(line)
except (IsADirectoryError, IndexError, PermissionError):
pass
create_blacklist()
make_unavailable()
Ограничьте использование терминала
если пользователь знаком с сочетанием клавиш ctrlaltt, измените комбинацию по умолчанию:
Система> Предпочтения> Горячие клавиши> сочетания клавиш (вкладка).
В случае, если Вы имеете обход wizzkid Ваши меры, ловите его
processes.py
.откройте окно терминала, введите crontab -e
. добавьте следующую строку к crontab файлу:
* * * * * cd /path/to/script; python3 processes.py
Черный список является списком имен процесса. Сценарий проверяет каждую минуту, работает ли одно из помещенных в черный список приложений и ведет учет в файле журнала (в том же каталоге как, где сценарий расположен). Названием файла журнала является log.txt. Дополнительно, можно заставить сценарий уничтожить запрещенное приложение (не значение по умолчанию). Чтобы заставить его уничтожить приложение (приложения), измените строку kill_apps = "no"
в kill_apps = "yes"
(в главном разделе sript).
#!/usr/bin/python3
import os
import datetime
import subprocess
import getpass
curr_dir = os.getcwd()
curruser = getpass.getuser()
# should forbidden applications be killed?
kill_apps = "yes"
def produce_commands_ofapp():
with open(curr_dir+"/blacklist.txt", "r") as blacklist:
blacklist = eval(blacklist.read())
return blacklist
def createlist_runningprocs():
processesb = subprocess.Popen(["ps", "-u", curruser], stdout=subprocess.PIPE)
process_listb = (processesb.communicate()[0].decode("utf-8")).split("\n")
return process_listb
def runsornot():
check_blacklist = produce_commands_ofapp()
runningprocs_list = createlist_runningprocs()
found_matches = [item for item in check_blacklist
if item[:15] in str(runningprocs_list)]
if len(found_matches) != 0:
with open(curr_dir+"/log.txt", "a+") as logfile:
logfile.write(str(found_matches)+" "+str(datetime.datetime.now())+"\n")
else:
pass
if kill_apps == "yes":
for application in found_matches:
kill_forbidden(application)
else:
pass
def kill_forbidden(app_command):
# get the pid length of system
get_size = subprocess.Popen(
["cat", "/proc/sys/kernel/pid_max"],
stdout=subprocess.PIPE
)
size = len((get_size.communicate()[0].decode("utf-8")).replace("\n", ""))
# get the appropriate pid line & pid
process_list = createlist_runningprocs()
appr_pid = [
line for line in process_list if \
app_command[:15] in line][0][:size+1].replace(" ", "")
# kill the found process
subprocess.Popen(["kill", "-9", appr_pid])
runsornot()
Как сказано, установка может быть обойдена. Однако комбинация мер и то, что необходимо знать, каковы они, делают это разумной защитой в случае среднего числа usere со средним знанием о том, как управлять системой.
Это очень, очень трудно. Я никогда не видел установки, которая близко подходит к выполнению этого и большинство раз, когда люди хотят это, я был в состоянии предоставить намного лучшие решения, потому что не было действительно никакой точки в ограничении пользователя для начала с вЂ, “В они просто не знали то, что другие опции Ubuntu имеет.
Однако Вы могли бы быть в состоянии сделать это путем выполнения всего сеанса пользователя в lxc выполнении контейнера Xspice, которые просто не имеют никаких других приложений установленными. Это будет вполне проект, но если и когда это будет работать, это должна, вероятно, быть лучшая изоляция, которую Вы могли получить. Эта идея основана на сообщении в блоге Serge Hallyn, недавно найденным на Планете Ubuntu, и Вы, конечно, захотите считать его: http://s3hh.wordpress.com/2014/04/18/xspice-in-containers/
Это сложно, на основе новых технологий, которые еще даже не выпущены, я не знаю никого, кто на самом деле попробовал его за эти виды целей †“, но в теории, это должно работать.:)
я, конечно, рекомендовал бы исследовать другие способы выполнить истинную цель, которая, скорее всего, на самом деле не предотвращает использование приложений, но чего-то еще.