Делаем все папки недоступными для чтения «другими», но сохраняем их исходный статус относительно «записи» и «выполнения»

Делаем все папки недоступными для чтения «другими», но сохраняем их исходный статус относительно «записи» и «выполнения»

TLDR: Как изменить разрешения для всех папок на компьютере так, чтобы для "других" папки потеряли только возможность чтения? Другими словами, они сохраняют свой статус относительно "записи" и "выполнения", но теряют возможность "чтения", если она у них была изначально?

Длинная версия: При первой настройке сервера (к которому пользователи могут подключаться по SSH) моим первым побуждением было попытаться выяснить, как можно создать новых пользователей, которым будет разрешен доступ только к их собственным home/usernameпапкам и подпапкам.

Однако я нашел некоторые ссылки (например,этот вопрос/ответ) онлайн, объясняя, что это, возможно, не очень хорошая идея, потому что пользователям, конечно, все равно нужно будет получить доступ к некоторым системным папкам, таким как usr/binили usr/libи записывать в папки, такие как tmp. Конечно, это имеет смысл. Тогда, то, чего я пытался добиться вместо этого, это чтобы пользователи моглииспользоватьчто находится в системных папках, но невидетьих содержание.

Точнее, это означало бы, что все папки в системе будут недоступны для чтения "другими", при этом сохраняя их исходный статус "других" в отношении возможности записи и исполнения. Например, папка с разрешением 754станет 750, папка с 756станет 752, папка с 755станет 751и т. д., а папка с 753, 752или 751останется 750прежней. И так далее и тому подобное.

Таким образом, никто, кроме пользователя root, не сможет видеть, что находится внутри любой папки, кроме своей home/usernameпапки и подпапок, но она по-прежнему сможет нормально выполнять команды и писать во всех системных папках, которые изначально это разрешали.

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

решение1

find /path/to/directory/ -type d -exec chmod o-r {} \;

должно работать. Для каждой папки findвыполняет chmod. chmodзатем удаляет бит чтения для других.

решение2

Только двоичные объекты, открытые самим ядром, могут быть помечены как исполняемые, но не читаемые. Любой тип скрипта (bash, python и т. д.) должен быть сначала прочитан перед выполнением. Смотрите:

Связанный контент