Изменяя разрешения в скрипте после установки определенных приложений (Linux и OSX), я нашел следующее очень запутанным.

Создание «.app» в OSX требует размещения каталога с несколькими файлами (приложения, ресурсы, библиотеки) в каталоге /Aplications с правами root. Приложение может быть извлечено с компакт-диска или из сети, что означает, что его разрешения на самом деле не то, что мне нужно. Приложению потребуются права доступа к исполняемым файлам, а также библиотеки, в то время как некоторые элементы могут быть просто "r", а не "x". Я не касаюсь разрешений "w" - здесь не должно быть никаких.

chmod -R +rx /Applications/myApp

делает это отлично, для всех внутренних каталогов (и да, некоторые элементы получат + х разрешение, когда они им не нужны, но это не имеет значения).

Для Linux и OSX: я сохраняю (печатаю в файл) некоторые файлы в /tmp/company/product . Поэтому во время установки я также добавил

chmod -R +rw /tmp/company

Результат был

rwx r-x r-x

В итоге я применил 777 разрешений к папке ... Но я просто не понимаю, почему добавление разрешений r и w не сработало.

Возможно, кто-то может помочь объяснить?

Кстати, я тоже

chmod +rw /tmp/company
chmod +rw /tmp/company/product

с тем же эффектом разрешения не применяются. (На OSX это было странно, ls -l показывал правильные разрешения, но свойства Finder не показывали разрешений ... и файлы не записывались внутри директории ... В Linux ls -l действительно показывал только права rx для "других")

Это особенное, когда я применяю +w разрешение, а не цифры?

1 ответ1

1

Это связано с твоим маской. Смотрите это на man-странице chmod:

Комбинация букв «ugoa» определяет, какие права доступа пользователей к файлу будут изменены: пользователь, которому он принадлежит (u), другие пользователи в группе файла (g), другие пользователи, не входящие в группу файла (o), или все пользователи (а). Если ничего из этого не дано, эффект будет таким, как если бы было указано «a», но биты, установленные в umask, не будут затронуты.

Исходя из того, что вы описали, ваш umask, вероятно, 0022. Таким образом, группа и другие разрешения не устанавливаются, если вы не передаете chmod одно из значений «ugoa». Попробуйте просто использовать chmod a+rw /tmp/company .

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