1) Я не совсем понимаю, как работают разрешения для вложенных каталогов.
Предположим, у меня есть следующие каталоги/файлы и разрешения:
~/Private/ 700
~/Private/Group 770
~/Private/Group/Public 777
Действительно ли Public является публичным?
2) Если я хочу сделать Private действительно приватным, имеет ли значение, использую ли я -R при выполнении «chmod 700»?
3) Я читал, что Ubuntu по умолчанию использует домашнюю папку, доступную для чтения, и отказывается это исправлять. Но когда я делаю 'ls -lh', я получаю это: drwx------ (700, верно?). Так что же это? Они изменили свое мнение о домашней папке?
Примечание: Я использую виртуальную машину Ubuntu 12.
решение1
~/Private/ 700
~/Private/Group 770
~/Private/Group/Public 777
Пользователь, который не является владельцем ~/Private/
, ~/Private/Group
не сможет войти в общую папку с этими разрешениями.
В Unix/Linux необходимо добавить бит выполнения, чтобы пользователь мог перемещаться (переходить в или через) по каталогу. Но вам не нужно предоставлять доступ на чтение. Поэтому попробуйте это вместо этого. Но имейте в виду, что пользователь должен знать, что существуют каталоги Group и Public, у него не будет возможности проверить, ls
существуют ли они, если ему также не предоставлен доступ на чтение.
~/Private/ 711
~/Private/Group 771
~/Private/Group/Public 777
имеет ли значение, использую ли я -R при выполнении 'chmod 700'?
Если вы запустите эту команду, вы измените разрешения каждого файла в каталоге ниже каталога, на который вы нацелены, если у вас есть что-то с другими разрешениями, то они будут потеряны. Я подозреваю, что вы также добавите бит выполнения ко многим обычным файлам, что, как правило, нежелательно.
Вместо этого вы можете использовать команду вроде этой. Это изменит только разрешения для каталога и подкаталогов, не меняя разрешения для файлов.
find {directory_path} -type d -print0 | xargs --null -n 1 chmod 0700
Аналогичная команда для изменения только файлов будет выглядеть так.
find {directory_path} -type f -print0 | xargs --null -n 1 chmod 0600