Рейтинг:0

procmail - права доступа к файлам?

флаг br

Ubuntu 18.04, работающий с postfix и procmail. У меня есть .procmailrc, .forward и все такое. Я настроил procmail для записи в определенный файл, и единственный способ заставить его работать — сделать этот файл доступным для чтения и записи для всех. Очевидно, это нехорошо. Как мне определить, какую учетную запись пользователя использует procmail для доступа к файлам, чтобы я мог заблокировать ее для этой учетной записи? (корень: root и 644 не работали....)

У меня та же проблема с файлом, написанным скриптом python, который вызывает рецепт procmail - единственный способ заставить его работать до сих пор - это сделать файл 777. Опять же, я не знаю, как выяснить, какая учетная запись пытается получить доступ этот файл при запуске скрипта Python.

ETA: .procmailrc выглядит следующим образом:

# Установите yes при отладке
ПОДРОБНО=да

# Входящие по умолчанию
ВХОДЯЩИЕ = $ ПОЧТА

# Каталог для хранения файлов, связанных с procmail
PMDIR=$HOME/procmail

# Раскомментируйте следующую строку, чтобы получить журнал
LOGFILE=/var/журнал/procmail/pmlog

:0вк:
| /usr/bin/python/home/[MyUsername]/scripts/mailproc.py

mailproc.py — это простой скрипт на Python, который постобрабатывает сообщение электронной почты для определенной цели. Я добавил вызов whoami в файл py и обнаружил, что py работает под пользователем, которому принадлежит файл procmailrc.

Но я все еще не могу понять, кому должен принадлежать файл журнала procmail. Имея его root: root и 644, не будет работать.

tripleee avatar
флаг nz
Procmail, работающий вне вашего `.forward`, должен просто запускаться с вашими собственными разрешениями (хотя также `.forward` не должен быть необходим, если Postfix настроен на использование Procmail в качестве вашего LDA, поскольку я полагаю, что он будет из коробки). ). Не могли бы вы [edit] уточнить, где и как именно вы пытаетесь запустить Procmail, и как вы пытаетесь писать в этот файл?
tripleee avatar
флаг nz
В общем. Procmail, запускаемый `root`, начинается как `root` и читает `/etc/procmailrc`, пока не достигнет оператора `DROPPRIVS=yes` или конца файла, затем переключается на учетную запись пользователя-доставщика и читает (остальную часть ` /etc/procmailrc` если был `DROPPRIVS`, а затем) их `.procmailrc` если он есть, то если его нет или Procmail отваливается в конец его не доставив сообщение, доставляет в `$ ПО УМОЛЧАНИЮ`. Вы можете дополнительно ограничить разрешения, которые он использует при создании файла, установив `UMASK`, например, команду оболочки `umask`. Все это задокументировано на странице руководства.
tripleee avatar
флаг nz
Кстати, флаг `c` в вашем рецепте Python выглядит неправильно. Или вы действительно хотите доставлять сообщения в свой почтовый ящик `$DEFAULT` _так же хорошо_, как и в ваш скрипт Python? Второе двоеточие тоже неверно; вам нужно либо отказаться от блокировки, либо указать явный файл блокировки. См. далее https://www.iki.fi/era/procmail/mini-faq.html#locking
alabamatoy avatar
флаг br
Спасибо за комментарии к рецепту - вы решаете проблемы, о которых я даже не подозревал.
Рейтинг:0
флаг nz

Для обычного пользователя нет разумного способа записи в файлы системного журнала.

Что вы могли бы сделать в качестве частичного обходного пути, так это не устанавливать ЛОГ-ФАЙЛ вообще. Procmail по-прежнему будет записывать записи журнала в стандартную ошибку, поэтому, возможно, этот вывод будет отправлен в файл журнала Postfix (или, возможно, вы можете добавить явное перенаправление в указанное место, где вы запускаете procmail).

Гораздо более простое и очевидное решение состоит в том, чтобы .procmailrc записать файл журнала в свой домашний каталог, где, очевидно, они обычно имеют доступ для записи.

tripleee avatar
флаг nz
На самом деле существуют такие инструменты, как `logger`, которые позволяют вам отправлять сообщения в систему системного ведения журнала, но вы не можете напрямую контролировать, будут ли они записаны в файл или в какой файл в этом случае.
tripleee avatar
флаг nz
Вы чувствуете, что чего-то еще не хватает в этом ответе? В противном случае, если это решило вашу проблему, рассмотрите возможность его принятия. Если вы предпочитаете, вы можете опубликовать свой собственный ответ и принять его. Принятие ответа поможет будущим посетителям отметить вашу проблему как решенную. См. также [help.](/help/someone-answers)

Ответить или комментировать

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