Chmod не работает как ожидалось

Когда я собираюсь изменить свое разрешение файла как это

 $ sudo chmod a+x *.* 

Эта ошибка появляется

 chmod: cannot access ‘*.*’: No such file or directory

И когда я хочу изменить разрешение каждого файла в каталоге с

 $ sudo chmod a+x directory/* 

Та же ошибка появляется

 chmod: cannot access ‘directory/*’: No such file or directory

Когда я пробую ту же команду в другом каталоге, это работает, но в соответствии с этим каталогом,/var/www/html, это не работает, но даже когда я изменяю файл разрешения файлом к a+x, когда я работаю

 ls

Ошибка разрешения появляется

 ls: cannot open directory .: Permission denied
1
задан 14 December 2014 в 13:44

3 ответа

Расширение файла в Linux не является чем-то особенным, это всего лишь часть имени файла. Глобализация файла оболочки использует * для всех символов, так что вы можете просто использовать chmod a+x * вместо .

3
ответ дан 10 November 2019 в 08:22

Эти ls проблема кажется, что у Вас не могло бы быть необходимых полномочий на каталоге. Как https://состояния stackoverflow.com/a/15800917/3501748: для каталогов нужен выполнить набор полномочий для наблюдения их содержания.

cd поддерживают уровень и видят то, что полномочия находятся на каталоге, из которого Вы только что произошли. sudo не дает Вам прав получить доступ к папке, если корень не имеет никаких прав на ту папку. Возможно sudo -u <username> мог бы помочь.

, Если необходимо рекурсивно вызвать через дерево каталогов ниже использования начальной точки chmod -R.

1
ответ дан 10 November 2019 в 08:22

Во-первых, я хотел бы подтвердить существующие ответы:

  • Поскольку UweBurger заявляет, что каждый использует * для общего подстановочного знака в Ubuntu (или, я верю, Unix в целом). (Действительно ли это возможно это directory в Вашем примере пусто, вызывая ошибку chmod: cannot access ‘directory/*’: No such file or directory?)
  • Как северный-bradley предложенный, можно использовать R флаг в chmod заставить его пересечь дерево рекурсивно, изменяя полномочия всего под Вашей текущей точкой. Таким образом, используйте chmod -R directory, или если Вы испытываете недостаток в полномочиях sudo chmod -R directory (однако, обязательно не непреднамеренно измените полномочия на системных файлах при использовании sudo кому: chmod; Ваш собственный пользователь просто испытывает недостаток в полномочиях сделать так, делая первый вариант более безопасным).

Однако я хотел бы добавить, что Вы не могли бы хотеть изменять полномочия каталогов таким же образом, Вы делаете файлы. Как объяснено в официальной документации, чтение (r) разрешение для каталогов означает способность просмотреть ее содержание (такое как использование ls), запись (w) разрешение позволяет пользователю создавать/удалять файлы в нем и выполнение (x) разрешение к cd внутри. Существует большой ответ, здесь предлагающий, чтобы метод различал файлы и каталоги при применении новых полномочий рекурсивно. Различное использование xargs предположительно, быстрее. Вы могли бы хотеть добавить r флаг к xargs избегать ошибки в случае, если find возвраты ничто, и если Вам нужно root полномочия необходимо использовать sudo для обеих половин канала (снова, проявите заботу когда chmodлуг как root), так, чтобы был бы:

sudo находят [путь/к/dir] - тип d-print0 | sudo xargs-0r chmod [desired-dir-permissions]

sudo находят [путь/к/dir] - тип f-print0 | sudo xargs-0r chmod [desired-file-permissions]

где [desired-*-permissions] может быть дан явно (777) или использование букв (как a+x).

1
ответ дан 3 December 2019 в 06:42

Другие вопросы по тегам:

Похожие вопросы: