Troodi Larson, надо до первого запуска создать этот файл. Если уже не создан и появился вместо него каталог, то надо погасить контейнер (docker-compose down), удалить каталог, создать файл и поднять всё обратно (docker-compose up).
Если вопрос в том, как его достать изнутри и использовать как эталонный, то вот так:
Точно ./mysql/my.cnf существует и является именно файлом? Обычно такое бывает, когда на момент первого запуска docker-compose файл не существует - тогда docker автоматически создаёт пустой каталог с таким именем. Советую проверить внимательнее.
Slava Rozhnev, в данном коде вообще проверки нет, результат вызова intval как есть вставляется в запрос. Если передать что-то кривое, в запрос подставится непонятно что. И это хорошо, если данные по такому id (например, id=0) не найдутся или их получение пользователем безопасно. А если, например, пользователь получит в ответ данные, которые ему видеть вообще нельзя? Или запрос вообще производит изменение данных, которые могут быть непредсказуемыми? Подобный подход - это отсутствие реальной валидации данных, и приучать себя к такому точно не стоит.
А что, собственно, нужно? Если надо, чтобы пользователи не могли логиниться в систему этого сервера, надо просто убрать из /etc/pam.d упоминания winbind в нужных местах. Сами пользователи через getent и wbinfo при этом могут быть всё равно видны, также можно им разрешить логин по ftp, например, если правильно настроить нужную интеграцию.
Kto Takoi, это в твоих сообщениях нет никакой так называемой "смысловой нагрузки". Я объяснил, что надо сделать. Ты же явно неспособен даже с таким понятным для любого программиста объяснением ничего сделать. Но почему-то я у тебя виноват.
Kto Takoi, на этом сайте никто не берёт обязательств обязательно за тебя всё сделать. Тут помогают решать проблемы, а не водят за ручку, как в детском саду. Вопросы в духе "я ничего не понимаю, но на какую мне кнопку нажать?" тут вообще нередко просто удаляют.
Я описал что надо сделать: по трейсу найти, где возникает ошибка, исправить код, выяснив, какие изменения произошли в используемой библиотеке. Самому мне разбираться с этим сейчас не очень хочется, тем более с таким отношением.
Kto Takoi, ну если одна библиотека неправильно использует другую библиотеку (и ещё нет обновления с исправлением под новые реалии)), то можно или библиотеку самостоятельно поправить, или установить такие версии библиотек, с которыми не было проблем. И то, и другое требует ненулевого понимания происходяшего, нет мистической кнопки, которая просто всё исправляет.
Kto Takoi, и как по-твоему тебе помогут, если ты этот код даже не показываешь?
Для начала, ошибка сопровождается полным трейсом. Там написаны номера строк, в которых происходили вызовы функций, в том числе и самая последняя строка, в которой произошла ошибка. Вот надо понять, что в этом куске кода делается, что имелось в виду и как это надо переделать с учётом вышеупомянутых изменений в какой-то там библиотеке.
Kto Takoi, если тебе надо поправить код на языке, которого ты не знаешь и не планируешь изучать, то тебе надо на фриланс, заплатить денег тому, кто разберётся. Тут помогают решить проблемы тем, кто хоть какие-то собственные усилия прилагает к тому, чтобы разбраться.
А хоть один диск имеет label? Как следует из udev rules /lib/udev/rules.d/60-persistent-storage.rules, создаваться by-label должен при наличии дисков с ним.
Строго говоря, не факт, что автор будет использовать именно time.sleep, а не что-то такое, что не будет реагировать на сигналы, да и управлять процессом через посылку сигналов внешним костылём это бееее, а не решение.
Если вопрос в том, как его достать изнутри и использовать как эталонный, то вот так:
1. Создаём контейнер без этого проброса конфига.
2. Делаем
3. Удаляем контейнер.
4. Создаём ещё раз уже с пробросом этого файла.