Назад | Перейти на главную страницу

chmod: изменение разрешений myscript.sh: операция не разрешена

При запуске следующего файла докеров я получаю "chmod: changing permissions of '/scripts/entrypoint.sh': Operation not permitted" ошибка.

FROM sonarqube:7.7-community
ADD plugins/* /plugins/
ADD scripts/* /scripts/
ADD conf/* /conf/
ADD bin/* /bin/
RUN chmod -R a+X /scripts/myScript.sh
ENTRYPOINT ["/scripts/myScript.sh"]

Но когда я добавляю USER root это работает. Но я не хочу запускать его с рутом. В любом случае я могу запустить его без рута?

Для изменения прав доступа к файлам, которые вам не принадлежат, в Linux требуется root-доступ, и команда COPY, скорее всего, копирует файл как root. Вы можете вернуться к пользователю sonarqube после исправления разрешений. Вот для этого пример Dockerfile:

FROM sonarqube:7.7-community
COPY plugins/ /plugins/
COPY scripts/ /scripts/
COPY conf/ /conf/
COPY bin/ /bin/
USER root
RUN chmod 755 /scripts/myScript.sh
USER sonarqube
ENTRYPOINT ["/scripts/myScript.sh"]

Обратите внимание, что я также переключился с ДОБАВИТЬ на КОПИРОВАНИЕ, поскольку вы не извлекаете удаленные URL-адреса или файлы tar / zip. В * также подразумевается при копировании каталога. Для одного скрипта вам не понадобится -R рекурсивный вариант, и я четко указываю разрешения, поскольку сценарии оболочки также требуют доступа для чтения для всех пользователей.

Если вы хотите, чтобы скрипт принадлежал sonarqube, вы можете запустить:

COPY --chown=sonarqube:sonarqube scripts/ /scripts/

Это должно позволить пользователю изменять права доступа к скрипту без USER изменить, но может предоставить этому пользователю больший доступ, чем вы хотите, для изменения сценария внутри контейнера.

Установите разрешения перед созданием образа

chmod +x scripts/myScript.sh
docker build .

docker сохранит разрешения при копировании файлов.

Проверьте права доступа к каталогу / scripts, используя ls -ld scripts. Возможно, у вашего пользователя нет разрешения на запись в этот каталог.

используйте sudo chmod вместо простого использования chmod