2

Установив все в моем проекте на 777 (rwxrwxrwx) для целей отладки, я хотел набрать открытость и установить каталоги (не файлы) в корневой папке на 664 (rw-rw-r--).

Для этого я использовал (из Как вывести список папок с помощью команд bash?):

chmod 664 -- */

Это сработало, как и ожидалось. Затем я понял, что мне нужен бит выполнения для каталогов, чтобы войти в них. Итак, я попробовал:

chmod 764 -- */

Но это бросило пропущенный операнд после ошибки missing operand after "764" .

Я могу поменять разрешения вручную (chmod 764 <dir-name>), и там не так много каталогов, так что это не большая проблема, но я хотел бы понять.

Почему я не могу использовать chmod 764 */ чтобы установить каталоги в моем текущем пути к rwxrw-r--?

1 ответ1

1

Это имело бы смысл, если бы вы установили параметры оболочки, чтобы

  • * включает имена, начинающиеся с . , а также
  • подстановочный знак, который не соответствует ничему, просто исчезает, а не сохраняется как сам по себе.  (Например, если у вас нет файлов, имена которых начинаются с foo , команда echo foo* печатает пустую строку, а не печатает foo* буквально.)

Если приведенное выше верно, то первая команда установлена . в режиме 664, что означает, что у вас не было разрешения на чтение . когда вы дали вторую команду.  Таким образом, */ не может быть расширен, и chmod 764 -- */ стал chmod 764 -- .

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .