Подключить файл с правами доступа 0600 к podman

CC в вашем makefile— это просто переменная. Вы можете указать любой компилятор или исполняемый файл в вашей системе.

Найдите прямой путь к вашему "новому" gcc и включите его CC={Path}и компиляция должна быть в порядке.

0
26.01.2020, 16:10
1 ответ

Позвольте мне поделиться с вами собственным опытом, который я приобрел за эти дни. Я не эксперт. Я не могу предложить, что вам делать, но могу попытаться объяснить, что происходит, когда вы запускаете podman с --privilegedи :z. Вероятно, вы уже знали эти.

Я предполагаю, что вы используете podmanбез корней, то есть podman -v, а не sudo podman -v. Я также предполагаю, что ~/.secrets/clodflareпринадлежит вам с UID 1000.

В вашем случае (по крайней мере )две проблемы с разрешениями, а именно, традиционные разрешения Unix(0600или-rw-------)и SELinux (container_file_t, user_home_t:, fusefs_tи т. д. ).

  • Разрешение UNIX

    • в контейнере файл/папка принадлежит root. Поэтому:
    • Если процесс в контейнере запускается root, то на хосте он запускается вами. Таким образом, у него есть разрешение rw-на эту папку/файл. Я думаю, это ваш случай. Это не имеет ничего общего ни с --privileged, ни с :z.

    • Если процесс в контейнере запускается другим пользователем, скажем, с UID 1234, то на хосте он запускается пользователем с UID101233(по умолчанию, в зависимости от настройки в /etc/subid). Поэтому у него есть только разрешение ---на этот файл. Если вы хотите изменить владельца на 1234в контейнере (или 101233на хосте ), вы можете запустить, например, podman unshare chown -R 1234:1234 <path>или sudo chown -R 101234:101234 <path>. Однако я не думаю, что это относится к вам.

    • Если на хосте файл вам не принадлежит, то в контейнере он будет принадлежать кому-то другому в соответствии с настройкой в ​​/etc/subid.

    • Вы можете найти дополнительную информацию по этой теме, погуглив podman namespace.

  • SELinux

    • на хосте с поддержкой SELinux у вас по-прежнему возникает проблема разделения SELinux.
    • Используя --privileged, вы отключаете разделение SELinux (и многое другое ). Но он не будет переименовывать файл/папку. Каждый раз, когда вы запускаете podman, вы должны запускать его как podman -v <host-path>:<container-path> --previleged <image>.
    • , добавив :z,вы позволяете podman переименовывать файл/папку. Вам нужно сделать это только один раз . Вы можете проверить разницу между до и после, перечислив файл/папку через ls -Zили ls -Zd. Как только файл или папка будут правильно переименованы, в следующий раз вы можете просто запустить podman -v <host-path>:<container-path> <image>, без :zи --privileged.
    • Для получения более подробной информации об этой проблеме я не могу много сказать, так как она кажется мне слишком сложной для понимания. Полезны справочная страница podman run, пояснения к --privileged, -v, -security-opt.
1
02.03.2020, 11:38

Теги

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