Сначала оцените ваше требование. Какую проблему вы пытаетесь решить? Почему вы хотите запретить пользователям выходить из своего домашнего каталога? Разве это не то, что вы не хотите, чтобы они рылись в определенных других каталогах, таких как домашние каталоги других пользователей?
Очень трудно помешать пользователям покинуть свой домашний каталог. Это тоже немного глупо (объяснение следует). Гораздо проще запретить пользователям входить в каталоги, которые вы не хотите им вводить.
Во- первых, да , вы можете дать пользователям так называемую ограниченную оболочку , см man rbash
. Это предотвратит их использование в cd
другом месте, но только внутри этой оболочки. Если пользователь запускает vi
или nano
(или любую другую программу, способную открыть файл), он может снова открывать файлы в любом месте системы. На самом деле, ограниченная оболочка не мешает, например cat /etc/passwd
.
Следующий шаг - корневая тюрьма. Больше информации о сообществе вики и по этому вопросу . Хотя корневая тюрьма блокирует пользователей внутри огороженного сада, в котором они не имеют доступа ни к чему, кроме файлов и команд, которые вы намеренно поместили туда, корневые тюрьмы действительно предназначены для изоляции ненадежного программного обеспечения, а не пользователей. В частности, они предназначены для программного обеспечения, которое должно работать с повышенными привилегиями - отсюда и корневая тюрьма.
С другой стороны, пользователям доверяют : им пришлось проходить аутентификацию и работать без повышенных привилегий. Следовательно, прав доступа к файлам достаточно, чтобы помешать им изменять файлы, которыми они не владеют, и видеть вещи, которые они не должны видеть. Чтобы запретить пользователям читать содержимое файла, удалите его удобочитаемость с помощью chmod o-r FILE
. Чтобы пользователи не попадали в каталог, сделайте его недоступным для всех chmod o-rwx DIR
.
По умолчанию, по понятной причине, удобочитаемость по умолчанию: пользователям на самом деле нужна большая часть содержимого файловой системы. Не блокируйте пользователей в их домах только потому, что снаружи существуют секреты.
Почему блокировать пользователей в их домашнем каталоге немного глупо
Чтобы сделать что-нибудь полезное, пользователям нужен доступ к командам и приложениям. Они находятся в таких каталогах, как /bin
и /usr/bin
, поэтому, если вы не скопируете все необходимые команды оттуда в свои домашние каталоги, пользователям потребуется доступ к /bin
и /usr/bin
. Но это только начало. Приложению нужны библиотеки из /usr/lib
и /lib
, которые, в свою очередь, нуждаются в доступе к системным ресурсам, которые находятся в /dev
, и к файлам конфигурации в /etc
и /usr/share
.
Это была только часть только для чтения. Приложения также захотят /tmp
и часто /var
пишут. Итак, если вы хотите ограничить пользователя в его домашнем каталоге, вам придется много копировать в него. На самом деле, почти вся базовая файловая система - которая у вас уже есть, расположена в /
.
Мне нужно было, чтобы обеспечить доступ к пользователю
sam
на/var/xyz
только и блок листинга содержимого других папок внутри/var/
Я использовал следующую последовательность команд:
Таким образом, пользователь может видеть каталоги, перечисленные в разделе,
/var/
но не может видеть содержимое в подкаталогах, кроме/var/xyz
.источник
Помимо ограничения доступа к другим каталогам, в частности к домашним каталогам других пользователей, я также не хотел, чтобы пользователь
ll /home
видел и видел имена других пользователей в системе.Чтобы не допустить этого, как root запускается
chmod 701 /home
. Это,/home
конечно, делает сам каталог «чтение / запись / выполнение» для root, но только «выполнять» для всех остальных./home
все еще доступен дляcd
, но пользователи не могут читать его содержимое - домашние папки других пользователей и, следовательно, имена пользователей.источник