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

3480
stalepretzel

В Mac OS X относительно легко запретить людям видеть файлы, содержащиеся в вашем домашнем каталоге: chmod 700 ~

Я хотел бы выполнить вариацию этого. Я хочу, чтобы когда люди открывали / Users / stalepretzel, они видели только одну папку в списке: Public. Оттуда я хотел бы установить права доступа Public, чтобы люди могли войти в эту папку и читать все, что не указано иначе.

Опять же, чтобы уточнить, я бы хотел, чтобы другой пользователь без прав администратора мог выполнить:

$ cd /Users/stalepretzel; ls Public $ cd Public All the contents of my public folder 
2

3 ответа на вопрос

3
jtb

Боюсь, это невозможно. Пользователь не может получить доступ к какому-либо файлу или папке в любом месте дерева каталога, для которого у него нет прав на чтение. Если у пользователя есть разрешения на чтение для каталога (и всех его суперкаталогов), он может lsи просмотреть все файлы, которые он содержит.

Это может показаться не совсем аккуратным, но если вы хотите запретить пользователям доступ к lsвашему домашнему каталогу, вам придется создать что- Publicто за пределами ~. Если вам проще получить доступ к своему общедоступному каталогу ~/Public, создайте символическую ссылку (например ln -s ~/Public /Users/Shared/stalepretzel).

Ах, хорошая идея. Я, вероятно, приму это, если в ближайшее время не будет других сообщений. Спасибо! stalepretzel 14 лет назад 0
1
jrg

Я не думаю, что вы можете сделать лучше, чем (стандартные вещи Unix):

$ chmod 711 ~/ $ chmod g-rx,o-rx ~/* $ chmod 755 ~/Public 

сделать ваш домашний каталог доступным, но нечитаемым, а все остальное, кроме «Public», недоступным.

[Перечень разрешений Unix - выполнение битов в каталоге разрешает обход, чтение битов позволяет просматривать содержимое.]

К сожалению, это не позволяет никому видеть, что ваша Общая папка существует - и нет никакого способа сделать это, потому что существование общей папки зависит от способности читать ваш домашний каталог, поскольку это «файл», который содержит его (имена находятся в родительских каталогах, разрешения являются частью файла inode.)

-1
Robert Swisher

Откройте свой домашний каталог, чтобы прочитать:

$ chmod 0744 ~ 

и спрятать там все

$ chmod 700 ~/* 

затем откройте только публичный каталог:

$ chmod 0744 ~/Public 

Примечание: изменил порядок команд, чтобы сделать его правильным

Это не работает Это позволяет людям просматривать список всего моего домашнего каталога (плохо) и не позволяет людям просматривать содержимое или входить в общий каталог (плохо). Кроме того, пользователи не могут открывать файлы, содержащиеся в моем общедоступном каталоге, если они знают свое местоположение (плохо). Ой! stalepretzel 14 лет назад 0
Идея состоит в том, чтобы открыть свой домашний каталог, затем спрятать все внутри него, а затем открыть только общую папку. Вы должны будете помнить, чтобы скрывать любые новые файлы / каталоги дома, не в Public, но это делает то, что вы просили Я изменил порядок команд, чтобы сделать его более понятным Robert Swisher 14 лет назад 0