Разрешения установлены неизвестно после chmod 777

Я только что заметил, что после запуска

chmod 777 * 

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

chmod 644 *

Теперь содержимое подкаталогов получить неизвестные права доступа, и вы не сможете изменить их обратно.

Почему это происходит? Это ожидаемое поведение или ошибка? Есть ли способ восстановить права доступа к файлу?

Поскольку мои файлы находились в zip-файле в другом месте, я просто удалил весь каталог и снова распаковал zip-файл, но мне хотелось бы знать причины этой «проблемы» и способы ее устранения.

Некоторая дополнительная информация, я запускаю эти команды на удаленной машине через SSH.

1
задан 18 January 2012 в 02:30

4 ответа

Если вы хотите установить разрешения для каталогов и подкаталогов, вы должны использовать:

chmod -R

-R, - рекурсивное изменение файлов и каталогов рекурсивно

0
ответ дан 18 January 2012 в 02:30

Вероятно, лучше всего использовать find для такого рода вещей.

Каталоги должны иметь х доступ, а файлы - нет, поэтому другой набор прав доступа.

# Files
find . -type f -exec chmod 644 '{}' \;

# Directories
find . -type d -exec chmod 755 '{}' \;
0
ответ дан 18 January 2012 в 02:30

Способ интерпретации битов прав доступа для файлов и каталогов различен. Прочитайте info coreutils 'File permissions' и man 2 chmod для деталей. Почему кто-то хочет сделать все читаемым, записываемым, исполняемым для владельца, группы и мира?

Поскольку доказательств больше нет, я могу только догадываться, что после вашего chmod вы потеряли доступ для записи в ., текущий каталог. Это можно исправить с помощью:

chmod u+w $PWD

Затем вы можете изменить режим (разрешения) файлов в $PWD

, выполнив chmod 644 *, Вы также удалили разрешение execute из любого файла, в котором оно было, поэтому они больше не могут быть выполнены ни одним из владельцев, групп, мира.

0
ответ дан 18 January 2012 в 02:30

Я нашел решение своей проблемы.

Прежде всего, спасибо всем, кто написал, ваши ответы были действительно полезны.

Проблема заключается в том, что назначение разрешения 664 всем файлам в текущем каталоге:

chmod 644 *

удаляет разрешения на выполнение для каталогов, которые должны работать для правильной работы. Решение довольно простое. Нам просто нужно изменить разрешения для каталогов следующим образом:

chmod 744 dir_name

Где dir_name, конечно же, имя нашего каталога. Как только мы это сделаем, все вернется на круги своя.

0
ответ дан 18 January 2012 в 02:30

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

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