Обновлен Dockerfile для создания пользователя salvagebot с UID 1027 и добавления в группу users. Исправлены права доступа для рабочих директорий и файлов, что улучшает безопасность и совместимость. В main.py добавлено логирование информации о текущем пользователе и файлах, что упрощает отладку. Эти изменения повышают безопасность и информативность приложения.
This commit is contained in:
parent
df0eb4536a
commit
e553b9584c
12
Dockerfile
12
Dockerfile
@ -24,30 +24,30 @@ ENV ORACLE_HOME=/opt/oracle/instantclient_19_21
|
||||
ENV LD_LIBRARY_PATH=/opt/oracle/instantclient_19_21${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH}
|
||||
ENV PATH=/opt/oracle/instantclient_19_21:$PATH
|
||||
|
||||
# Создаем пользователя для безопасности
|
||||
RUN useradd --create-home --shell /bin/bash salvagebot
|
||||
# Создаем пользователя для безопасности с UID 1027 и добавляем в группу users
|
||||
RUN useradd --create-home --shell /bin/bash --uid 1027 --gid 100 salvagebot
|
||||
|
||||
# Создаем рабочую директорию и устанавливаем права
|
||||
RUN mkdir -p /home/salvagebot/app && \
|
||||
chown -R salvagebot:salvagebot /home/salvagebot/app
|
||||
chown -R salvagebot:users /home/salvagebot/app
|
||||
|
||||
USER salvagebot
|
||||
WORKDIR /home/salvagebot/app
|
||||
|
||||
# Копируем файл зависимостей
|
||||
COPY --chown=salvagebot:salvagebot requirements.txt .
|
||||
COPY --chown=salvagebot:users requirements.txt .
|
||||
|
||||
# Устанавливаем Python зависимости
|
||||
RUN pip install --user --no-cache-dir -r requirements.txt
|
||||
|
||||
# Копируем entrypoint скрипт
|
||||
COPY --chown=salvagebot:salvagebot docker-entrypoint.sh /usr/local/bin/
|
||||
COPY --chown=salvagebot:users docker-entrypoint.sh /usr/local/bin/
|
||||
USER root
|
||||
RUN chmod +x /usr/local/bin/docker-entrypoint.sh
|
||||
USER salvagebot
|
||||
|
||||
# Копируем код приложения
|
||||
COPY --chown=salvagebot:salvagebot . .
|
||||
COPY --chown=salvagebot:users . .
|
||||
|
||||
# Создаем необходимые директории с правильными правами
|
||||
RUN mkdir -p logs images data && \
|
||||
|
||||
23
main.py
23
main.py
@ -234,6 +234,9 @@ def convert_photo_path(db_path: str) -> str:
|
||||
if not db_path:
|
||||
return ""
|
||||
|
||||
# Убираем лишние пробелы из пути
|
||||
db_path = db_path.strip()
|
||||
|
||||
# Базовый путь из константы
|
||||
base_path = image_path
|
||||
|
||||
@ -285,6 +288,13 @@ async def send_vehicle_photos(message: Message, vin: str, photo_paths: list, mak
|
||||
return
|
||||
|
||||
try:
|
||||
# Дебаг информация о текущем пользователе
|
||||
import pwd
|
||||
import grp
|
||||
current_user = pwd.getpwuid(os.getuid())
|
||||
current_groups = [grp.getgrgid(gid).gr_name for gid in os.getgroups()]
|
||||
logging.info(f"DEBUG: Running as user: {current_user.pw_name}({os.getuid()}), groups: {current_groups}")
|
||||
|
||||
# Telegram позволяет максимум 10 фотографий в media group
|
||||
photos_per_group = 10
|
||||
total_photos = len(photo_paths)
|
||||
@ -309,6 +319,19 @@ async def send_vehicle_photos(message: Message, vin: str, photo_paths: list, mak
|
||||
for i, photo_path in enumerate(photo_group):
|
||||
try:
|
||||
# Проверяем существование файла
|
||||
# Дебаг информация
|
||||
import stat
|
||||
import pwd
|
||||
import grp
|
||||
try:
|
||||
stat_info = os.stat(photo_path)
|
||||
file_owner = pwd.getpwuid(stat_info.st_uid).pw_name
|
||||
file_group = grp.getgrgid(stat_info.st_gid).gr_name
|
||||
file_perms = oct(stat_info.st_mode)[-3:]
|
||||
logging.info(f"DEBUG: File {photo_path} - owner: {file_owner}({stat_info.st_uid}), group: {file_group}({stat_info.st_gid}), perms: {file_perms}")
|
||||
except Exception as debug_e:
|
||||
logging.warning(f"DEBUG: Cannot get file info for {photo_path}: {debug_e}")
|
||||
|
||||
if os.path.exists(photo_path):
|
||||
# Создаем InputMediaPhoto
|
||||
if i == 0 and group_num == 1:
|
||||
|
||||
BIN
salvagebot
BIN
salvagebot
Binary file not shown.
Loading…
x
Reference in New Issue
Block a user