Я бы хотел дать возможность пользователям самостоятельно устанавливать приложения без админских прав. Устанавливать приложения пользователи будут туда, куда у них хватит прав (в первом приближении в свою домашнюю директорию, см. ниже).
Если пользователь будет устанавливать приложения под своим собственным аккаунтом, то такие приложения будут повышенно вирусоуязвимы (вирус будет работать под этим же аккаунтом и сможет изменять права доступа к файлам и код выполняемых файлов).
Для того, чтобы такого не происходило, во втором приближении, я хочу сделать пользователю дополнительный аккаунт, чтобы права на приложения были не такие как права у пользователя. Т.е. хочу два разных вида рутов. Один рут - совсем рут, а второй рут - не совсем рут и слегка пользователь. А третий - совсем пользователь.
Обозначим аккаунты буквами А - администратор, У - учитель, С - студент.
Можно ли настроить пользователю sudo таким образом, чтобы ему давались права на этот второй аккаунт, а не на аккаунт администратора?
Есть пять областей:
а) то, что установлено рутом для себя, и доступно руту (rw)
б) то, что установлено рутом для учителя (или учителем для себя через sudo), и доступно руту (rw) и учителю (r)
в) то, что наредактировано учителем для себя, и доступно руту (rw) и учителю (rw)
г) то, что установлено учителем для учеников (или учениками для себя через sudo), и доступно руту (rw), учителю (rw) и ученикам (r)
д) то, что ученики делают сами (rw)
Учитель не может читать файлы, установленные рутом лично руту (область «а»). И ученик не сможет читать файлы, установленные себе учителем (область «в»).
Итого, у учеников доступ к области «д» на запись, и к области «г» на чтение.
Именно поэтому вирусы, запущенные под учеником не смогут запортить у учителя всё, и у рута тем более. Разумеется. при условии, что вирусы не знают пароля учителя.
Нужно настроить sudo так, чтобы ученик мог ставить софт в область «г», но не мог ставить софт в область «б». К руту с учителем это, кстати, тоже относится.
Какой символ в таком случае должен использоваться в качестве подсказки bash вместо ‘#’ и ‘$’ ? Кажется, можно сделать ‘#’, ‘¤’ и ‘₽’ (первый - сидеть за решеткой, если что-то испортит, второй - обозначает универсальность, а третий - это локализованная версия доллара).