Как изменить владельца извлеченных вложений (postfix, procmail, uudeview)?

Мне удалось извлечь все вложения из электронных писем, доставляемых на определенное электронное письмо, в общую папку на моем сервере Linux (используя postfix-> procmail-> uudeview). К сожалению, сами файлы сохраняются с разрешениями, ограниченными системным пользователем, которому были отправлены файлы (так называемые «сканы»).

Как я могу создать «chmod 777 /путь/к/папке/*.pdf» в своей настройке, чтобы файлы (которые исходят от моего сканера) были доступны для всех?

Есть лучший способ сделать это?

С уважением Фрэнк


person Toffix    schedule 07.03.2014    source источник


Ответы (1)


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

Вероятно, вы ищете переменную UMASK Procmail. Если разрешения слишком жесткие, установите более мягкий UMASK перед доставкой. Пример:

:0
* some conditions
{
    UMASK=003
    :0
    | uudeview --whatever
}

Системный вызов umask может только лишить разрешений, но не добавлять их. Как правило, программа на C пытается создать файл данных, используя режим 0666, а затем применяется umask, часто получая что-то вроде 0644 (это означает, что эффективный umask был чем-то вроде 0022 или 0033). В Linux разрешения каталога также в некоторой степени влияют на разрешения. вновь созданных файлов. Но здесь мы выходим за пределы Procmail. Возможно, вы сможете добиться требуемого конечного результата, объединив UMASK средства Procmail с правами доступа к каталогам.

Если «вложения», которые вы извлекаете, не являются вложениями MIME, а фактическими uuencode, обратите внимание также на то, что кодировка задает разрешения для каждого закодированный файл. Если в строке begin написано 644, возможно, вам придется изменить это. Procmail снова спешит на помощь!

:0
* some conditions
{
    UMASK=003
    | sed 's/^begin [0-7][0-7][0-7][0-7]* /begin 664 /' | uudeview --whatever
}

В конце концов, если даже это не поможет, то можно свести к модификации uudeview, возможно, подправив его исходный код, или создав оболочку, которая исправляет права после записи.

person tripleee    schedule 11.03.2014
comment
Я подозревал, что 777 не пойдет хорошо ;) - person Toffix; 13.03.2014
comment
UMASK делает то, что мне нужно, но только наполовину. Я пробовал UMASK=001, UMASK=003, UMASK=010 и UMASK=100, но все они просто предоставляют rw-r--r-- доступ к файлам. Мой .procmailrc: :0 *^content-Type: { UMASK=001 :0fw | uudeview -p /home/storage/scans - } - person Toffix; 13.03.2014
comment
Несколько обновлен. Кстати, ваше условие о наличии заголовка Content-Type: какое-то странное. Если это работает для вас, хорошо; но в основном все сообщения MIME имеют это. - person tripleee; 13.03.2014