Установив все в своем проекте в 777
( rwxrwxrwx
) для целей отладки, я хотел снизить открытость и установить каталоги (не файлы) в корневой папке в 664
( rw-rw-r--
).
Для этого я использовал (изКак вывести список папок с помощью команд bash?):
chmod 664 -- */
Это сработало, как и ожидалось. Затем я понял, что мне нужен бит выполнения для каталогов, чтобы войти в них. Поэтому я попробовал:
chmod 764 -- */
Но это вызвало missing operand after "764"
ошибку.
Я могу изменить разрешения вручную ( chmod 764 <dir-name>
), и каталогов не так уж много, так что это не большая проблема, но мне хотелось бы разобраться.
Почему я не могу использовать chmod 764 */
для установки каталогов в моем текущем пути rwxrw-r--
?
решение1
Это имело бы смысл, если бы вы установили параметры подстановки оболочки так, чтобы
*
включает имена, начинающиеся с.
, и- Подстановочный знак, который ничему не соответствует, просто исчезает, а не сохраняется как таковой. (Например, если у вас нет файлов, имена которых начинаются с
foo
, командаecho foo*
выводит пустую строку, а не печатаетfoo*
буквально.)
Если вышесказанное верно, то первая команда установлена .
в режим 664, что означает, что у вас не было разрешения на чтение, .
когда вы дали вторую команду. Поэтому */
не удалось расширить, и chmod 764 -- */
он стал chmod 764 --
.