В моей системе Linux есть два пользователя, скажем, A и B. Мне нужно изолировать B таким образом, чтобы B не мог получить доступ к домашнему каталогу A, даже сам A. Как мне решить эту проблему?
решение1
Поместите домашний каталог A в каталог, для которого у B не установлен бит x (выполнение).
Пример: Пусть /home/prison/A
будет домашним каталогом A. Установите разрешения на prison
и
r-xr-x---
владелец:группа на root:prisoners
. Установите разрешения на /home/prison/A
обычный, т. е. A
является владельцем.
Естественно, A все еще может жестко связывать свои файлы с другими каталогами и делать их доступными таким образом. На самом деле нет способа защитить данные от пользователей с доступом на чтение и желанием их дублировать.
решение2
Ответ Титона— хороший способ решения этой проблемы.
Другое (более тяжелое и сложное) исправление — создание соответствующей политики, если вы используете SELinux или AppArmour. Вы можете применить это на системном уровне, и A не сможет обойти это на уровне файловой системы (с AppArmour) или даже путем копирования файлов (с SELinux).
Реализацию такой политики мы оставляем читателю в качестве самостоятельного упражнения.
решение3
Это похоже на работу для chroot, и у кого-то есть проект под названиемджейлкиткоторый, кажется, делает именно это. Ваш пробег может отличаться.
решение4
Если больше никому не нужен доступ к файлам в домашнем каталоге пользователя, вы можете сделать домашние каталоги исполняемыми/читаемыми/записываемыми.толькоэтим пользователем.
sudo chmod 700 /home/username
Другие пользователи не смогут видеть содержимое этого каталога, переходить в него и т. д.