Summary: | Weak permissions on .beam files | ||
---|---|---|---|
Product: | Sisyphus | Reporter: | Nikolay A. Fetisov <naf> |
Component: | ejabberd | Assignee: | Anton Farygin <rider> |
Status: | CLOSED FIXED | QA Contact: | qa-sisyphus |
Severity: | normal | ||
Priority: | P2 | CC: | rider |
Version: | unstable | ||
Hardware: | all | ||
OS: | Linux |
Description
Nikolay A. Fetisov
2007-08-23 08:56:32 MSD
> Правильнее было бы, наверное, вынести исполняемые файлы за пределы > каталога с рабочими базами. Насколько я знаю об erlang - исходя из бесед с теми, кто на нем пишет - эти файлы могут менять свое содержимое в процессе работы сервера. Так как /usr, скажем, может быть смонтирован в ro (и это правильно), изменяемые файлы кладутся в /var. Насколько я могу судить - это общеупотребительная практика для erlang, именно там оно их и ищет и бороться с этим - сильно себе дороже. Так делает по умолчанию make install и т.п., так же работает пакет в Debian/FreeBSD и т.п. > Или, как минимум, поставить на эти каталоги права 755 root:root, > на файлы в них - 644 root:root, и на /var/lib/ejabberd - 01750 > ejabberd:ejabberd. Объясните, пожалуйста, подробнее, в чем смысл этих изменений? (In reply to comment #1) > Насколько я знаю об erlang - исходя из бесед с теми, кто на нем пишет - эти > файлы могут менять свое содержимое в процессе работы сервера. Насколько я понимаю после очень поверхностного знакомства с общими положениями Erlang - BEAM-файлы являются скомпилированными в байт-код объектами. Они действительно _могут_ _быть_ изменены в процессе работы сервера - т.к. одной из особенностей Erlang является возможность динамически обновлять код без прерывания работы программы. Однако именно такая особенность вместе с возможностью самой программы писать в эти файлы очень и смущает. > ... Так делает по > умолчанию make install и т.п., так же работает пакет в Debian/FreeBSD и т.п. Не совсем так, в Debian эти файлы расположены в /usr/lib/erlang/lib/ejabberd-<version>/ : http://packages.debian.org/cgi-bin/search_contents.pl?searchmode=filelist&word=ejabberd&version=stable&arch=i386 Аналогичная ситуация в FC8. > > Или, как минимум, поставить на эти каталоги права 755 root:root, > > на файлы в них - 644 root:root, и на /var/lib/ejabberd - 01750 > > ejabberd:ejabberd. > > Объясните, пожалуйста, подробнее, в чем смысл этих изменений? Смена владельца запретит непривилегированному пользователю ejabberd изменение, замену и добавление новых файлов в указанные каталоги. Установка sticky bit на /var/lib/ejabberd не даст возможность из-под непривилегированного пользователя переименовать каталоги ebin и priv, с дальнейшим созданием новых каталогов с теми же именами и размещением в них новых (изменённых) объектов. Хотя лучше вынести их отдельно в %_libdir . (In reply to comment #0) > и на /var/lib/ejabberd - 01750 > ejabberd:ejabberd. Это нарушает ALT Linux Security Packaging Policy: http://docs.altlinux.ru/alt/devel/ch01s03.html#id2884290: Владельцы каталогов Пакеты НЕ ДОЛЖНЫ содержать каталоги, принадлежащие псевдо-пользователям. Вместо этого следует использовать каталоги, принадлежащие root, с установленным sticky bit и доступом группы по записи. Обоснование: Псевдо-пользователь не должен иметь право изменять атрибуты каталогов, а также файлы и каталоги, созданные другими пользователями; нарушение этого правила, как правило приводит к возможности осуществления pseudouser/root Т.о. надо 01770 root:ejabberd /var/lib/ejabberd Fixed in 1.1.4, которая сейчас должна уйти в Сизиф. |