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 и т. д.) должен быть сначала прочитан перед выполнением. Смотрите: