Как я могу запретить пользователям доступ к чему-либо, кроме их собственного домашнего каталога?

22

Как я могу запретить пользователям доступ к чему-либо, кроме их собственного домашнего каталога?

Например, у меня смонтирован раздел NTFS /media/ntfs, поэтому, если пользователь входит в систему через ssh, он может получить доступ к этому разделу. Как отключить выход пользователей cdиз их домашнего каталога?

О-ЛЯ-ЛЯ
источник

Ответы:

22

Сначала оцените ваше требование. Какую проблему вы пытаетесь решить? Почему вы хотите запретить пользователям выходить из своего домашнего каталога? Разве это не то, что вы не хотите, чтобы они рылись в определенных других каталогах, таких как домашние каталоги других пользователей?

Очень трудно помешать пользователям покинуть свой домашний каталог. Это тоже немного глупо (объяснение следует). Гораздо проще запретить пользователям входить в каталоги, которые вы не хотите им вводить.

Во- первых, да , вы можете дать пользователям так называемую ограниченную оболочку , см 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пишут. Итак, если вы хотите ограничить пользователя в его домашнем каталоге, вам придется много копировать в него. На самом деле, почти вся базовая файловая система - которая у вас уже есть, расположена в /.

zwets
источник
2
Это не имеет смысла для меня, может быть так много причин, почему вы хотите, чтобы пользователь имел доступ только к 1 папке. Одним из примеров может быть предоставление доступа для передачи файлов с одного сервера на другой. Я скорее думаю, что это немного глупо, что любой пользователь может просматривать всю систему вместо этого.
Ричард
В моем случае я настраиваю пользователя, чтобы разрешить устройствам возвращать ssh в машину для удаленного управления устройствами. Поэтому я хочу максимально ограничить эту учетную запись на случай, если она скомпрометирована - мне просто нужно установить успешное соединение. Я бы не сказал, что это глупо, это просто зависит от того, чего ты пытаешься достичь.
Джон
7

Мне нужно было, чтобы обеспечить доступ к пользователю samна /var/xyzтолько и блок листинга содержимого других папок внутри/var/

Я использовал следующую последовательность команд:

setfacl -R -m user:sam:--- /var/

setfacl -m user:sam:rx /var/

setfacl -R -m user:sam:rwx /var/xyz/

Таким образом, пользователь может видеть каталоги, перечисленные в разделе, /var/но не может видеть содержимое в подкаталогах, кроме /var/xyz.

Сэм
источник
2
Добро пожаловать в Askubuntu! Я не вижу в этом ответа на вопрос о домашних каталогах.
Старейшина Компьютерщик
3
@ElderGeek Разве OP не может использовать те же самые команды, но для домашнего каталога?
Сет
@ Да, но будет ли это понятно обычному пользователю?
Старейшина Гик
3
@ Старейшина Да, я верю, что так и будет. Не идеально, но все же ответ
Сет
1

Помимо ограничения доступа к другим каталогам, в частности к домашним каталогам других пользователей, я также не хотел, чтобы пользователь ll /homeвидел и видел имена других пользователей в системе.

Чтобы не допустить этого, как root запускается chmod 701 /home. Это, /homeконечно, делает сам каталог «чтение / запись / выполнение» для root, но только «выполнять» для всех остальных. /homeвсе еще доступен для cd, но пользователи не могут читать его содержимое - домашние папки других пользователей и, следовательно, имена пользователей.

Willman
источник
Это, хотя и не является строго ответом на вопрос, все же очень интересно ... В ситуации, когда вы используете удаленный сервер, к которому клиенты могут подключиться по ssh, это здорово. Они все еще могут перемещаться, как они ожидают, сохраняя при этом конфиденциальность имен других клиентов.
Jack_Hu