Как я могу запретить пользователям доступ к чему-либо, кроме их собственного домашнего каталога?
Например, у меня есть раздел NTFS, смонтированный в /media/ntfs
, поэтому, если пользователь входит в систему через ssh, он может получить доступ к этому разделу. Как я могу отключить пользователей cd
из их домашнего каталога?
В дополнение к ограничению доступа к другим каталогам, в частности домашним каталогам других пользователей, я также не хотел, чтобы пользователь ll /home
видел имена других пользователей в системе.
Чтобы предотвратить это, от имени пользователя root запустите chmod 701 /home
. Это, конечно, делает сам каталог /home
«доступным для чтения / записи / выполнения» для корневого каталога, но только «выполняет» для всех остальных. /home
по-прежнему доступен для cd
, но пользователи не могут читать его содержимое - домашние папки других пользователей и, следовательно, имена пользователей.
Мне нужно было предоставить доступ пользователю sam
только на /var/xyz
и заблокировать список содержимого других папок внутри /var/
Я использовал следующую последовательность команд:
setfacl -R -m user:sam:--- /var/
setfacl -m user:sam:rx /var/
setfacl -R -m user:sam:rwx /var/xyz/
[ 118] Таким образом, пользователь может видеть каталоги, перечисленные в /var/
, но не может видеть содержимое в подкаталогах, кроме /var/xyz
.
Сначала оцените ваше требование. Какую проблему вы пытаетесь решить? Почему вы хотите запретить пользователям выходить из своего домашнего каталога? Разве это не то, что вы не хотите, чтобы они рылись в определенных других каталогах - таких как домашние каталоги других пользователей?
Очень трудно предотвратить выход пользователей. их домашний каталог. Это тоже немного глупо (объяснение следует). Намного проще запретить пользователям входить в каталоги, которые вы не хотите, чтобы они входили.
Прежде всего, да, вы можете дать пользователям так называемую ограниченную оболочку , см. man rbash
. Это предотвратит их cd
-нахождение в другом месте, но только внутри этой оболочки. Если пользователь запускает vi
или nano
(или любую другую программу, способную открыть файл), он может снова открыть файлы в любом месте системы. На самом деле, ограниченная оболочка не предотвращает, например, cat /etc/passwd
. [Одна тысяча сто тридцать одна]
Следующий шаг - корневая тюрьма. Больше информации в сообществе вики и в этом вопросе . Хотя корневая тюрьма блокирует пользователей внутри огороженного сада, в котором они не имеют доступа ни к чему, кроме файлов и команд, которые вы намеренно поместили туда, корневые тюрьмы действительно предназначены для изоляции ненадежного программного обеспечения , а не пользователей. В частности, они предназначены для программного обеспечения, которое должно работать с повышенными привилегиями - отсюда root jail.
С другой стороны, пользователям доверяют : они должны были аутентифицировать и работать без повышенных привилегий. Следовательно, прав доступа к файлам достаточно, чтобы помешать им изменять файлы, которыми они не владеют, и видеть вещи, которые они не должны видеть. Чтобы запретить пользователям читать содержимое файла, удалите его удобочитаемость с помощью chmod o-r FILE
. Чтобы пользователи не попадали в каталог, сделайте его недоступным для всего мира с помощью chmod o-rwx DIR
.
По умолчанию, по понятной причине, по умолчанию читаемость по всему миру: пользователям нужно большую часть содержимого файловой системы. Не блокируйте пользователей в их домах только потому, что снаружи существуют секреты.
Почему блокировать пользователей в их домашнем каталоге немного глупо
Чтобы сделать что-нибудь полезное, пользователям нужен доступ к командам и приложениям. Они находятся в каталогах, подобных /bin
и /usr/bin
, поэтому, если вы не скопируете все необходимые команды оттуда в свои домашние каталоги, пользователям потребуется доступ к /bin
и /usr/bin
. Но это только начало. Приложению требуются библиотеки из /usr/lib
и /lib
, которые, в свою очередь, нуждаются в доступе к системным ресурсам, которые находятся в /dev
, и к файлам конфигурации в /etc
и /usr/share
.
Это была только часть только для чтения. Приложения также захотят /tmp
и часто /var
писать в. Итак, если вы хотите ограничить пользователя в его домашнем каталоге, вам придется много копировать в него. Фактически, почти вся базовая файловая система, которая у вас уже есть, расположена в /
.
Чтобы завершить ответ @Willman, вы можете просто сделать это:
Во-первых, чтобы пользователи не перечисляли все домашние каталоги пользователей:
chmod 701 /home
Но если вы знаете путь к домашнему каталогу пользователя, вы все равно можете получить к нему доступ с помощью cd
.
Таким образом, вы можете просто chmod 750
все ваши уже созданные каталоги пользователей.
Но мы хотим, чтобы домашний каталог любого нового пользователя не имел разрешения 755
. За настройку новых пользователей отвечает файл: /etc/adduser.conf
:
Просто измените DIR_MODE=0755
на DIR_MODE=0750