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

20

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

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

    
задан OHLÁLÁ 12.03.2013 в 16:57
источник

3 ответа

19

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

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

Прежде всего, да, вы можете предоставить пользователям так называемую ограниченную оболочку , см. man rbash . Это предотвратит их из cd -ing в другом месте, но только внутри этой оболочки. Если пользователь запускает vi или nano (или любую другую программу, способную открыть файл), они могут снова открывать файлы в любом месте системы. На самом деле ограниченная оболочка не предотвращает, например, cat /etc/passwd .

Следующий шаг - это корневая тюрьма. Дополнительная информация о вики сообщества и в этот вопрос . Хотя корневая тюрьма блокирует пользователей внутри огороженного сада, в пределах которых они имеют доступ только к файлам и командам, которые вы намеренно кладете туда, корневые тюрьмы действительно предназначены для изоляции ненадежного программного обеспечения , а не пользователей. В частности, они предназначены для программного обеспечения, которое должно выполняться с повышенными привилегиями - следовательно, root .

С другой стороны, пользователи доверенные : им приходилось выполнять аутентификацию и без повышенных привилегий. Поэтому разрешений для файлов достаточно, чтобы они не изменяли файлы, которыми они не владеют, и видя вещи, которые они не видят. Чтобы пользователи не читали содержимое файла, удалите его удобочитаемость с помощью chmod o-r FILE . Чтобы пользователи не попали в каталог, сделайте его недоступным для мира с chmod o-rwx DIR .

Понятно, что удобочитаемость по всему миру является по умолчанию: по сути, пользователям нужна большая часть материала, находящегося в файловой системе. Не блокируйте пользователей в своих домах только потому, что существуют секреты снаружи.

Почему блокировка пользователей в их домашнем каталоге немного глупо

Чтобы сделать что-нибудь полезное, пользователям нужен доступ к командам и приложениям. Они находятся в таких каталогах, как /bin и /usr/bin , поэтому, если вы не скопируете все команды, которые им нужны оттуда, в свои домашние каталоги, пользователям потребуется доступ к /bin и /usr/bin . Но это только начало. Приложениям нужны библиотеки из /usr/lib и /lib , которые, в свою очередь, нуждаются в доступе к системным ресурсам, которые находятся в /dev , и в файлах конфигурации в /etc и /usr/share .

Это была только часть, доступная только для чтения. Приложения также захотят /tmp и часто /var для записи. Итак, если вы хотите ограничить пользователя в своем домашнем каталоге, вам придется много копировать его. Фактически, почти вся базовая файловая система, которую у вас уже есть, находится в / .

    
ответ дан zwets 13.03.2013 в 09:55
источник
5

Мне нужно было предоставить доступ к пользователю 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 .

    
ответ дан Sam 29.01.2015 в 20:21
1

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

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

    
ответ дан Willman 01.09.2017 в 13:13