Права доступа к каталогу в Linux

У меня есть программа, которая создает файлы журналов в каталоге веб-сервера (/var/www/log). Каждый день он генерирует один новый файл журнала. Я установил права доступа для этого каталога на 777

chmod 777 -R /var/www/log

Но когда система создает файл журнала для нового дня, у нее нет прав доступа 777. Мне снова приходится делать это вручную. Как я могу правильно установить разрешения для каталога? Все файлы в этом каталоге должны автоматически иметь 777.


person Jack Fisher    schedule 25.11.2013    source источник
comment
зависит от вашей программы, на самом деле. также у каждого пользователя есть маска по умолчанию, определяемая umask.   -  person njzk2    schedule 26.11.2013
comment
Я думаю, что этот вопрос будет лучше на superuser.com   -  person Isaac    schedule 26.11.2013
comment
Это вряд ли произойдет, если вы не модифицируете ядро ​​Linux. Обычные файлы создаются не более чем в режиме 666, если только они не помечены как исполняемые. В целом, в любом случае это кажется действительно плохой идеей (тм). Почему вы хотите, чтобы ваши файлы журналов были открыты для чтения/уничтожения кем-либо вообще?   -  person twalberg    schedule 26.11.2013
comment
Ваша программа неправильно устанавливает umask   -  person tMC    schedule 23.04.2014


Ответы (1)


  1. Это очень плохая идея иметь исполняемые файлы, которые не должны быть таковыми: это возможная угроза безопасности, и немалая. в вашем случае некоторые файлы, принадлежащие root, будут доступны для записи для публики. Их довольно легко изменить, чтобы запускать от имени пользователя root (да, вы можете заставить ЛЮБОЙ файл вести себя как программа под Linux) для всех, у кого есть права на запись в этот файл. Как отметил Твальберг: это действительно плохая идея™.
  2. Не записывайте файлы журнала напрямую. Это делает жизнь системного администратора излишне тяжелой. Вместо этого используйте syslog. Каждый язык программирования имеет возможность входа в системный журнал. Причина этого: вполне может быть и часто бывает так, что когда компании достигают определенного размера, они используют централизованный сервер системных журналов. Когда каждый пакет ведет себя хорошо, все, что нужно сделать, это изменить один файл конфигурации, и все записи журнала будут отправлены на этот выделенный сервер системного журнала. Или администратор может захотеть изменить расположение файла журнала, например, с /var/www/log на /var/log/www. Одна строка в syslogd.conf, но непредсказуемое количество строк, когда файлы журнала записываются напрямую. Прямая запись файлов журнала может быть хорошей альтернативой, но делать это по умолчанию — плохая практика.
  3. В случае, если вы запускаете программное обеспечение, написанное не вами, но не родное для вашего дистрибутива Linux, вы можете запустить его как root и заставить его отказаться от своих привилегий выделенному пользователю для этого программного обеспечения, используя команды runuser или sudo. Этот выделенный пользователь может иметь доступ для записи к файлам журнала. Это все еще хак. Служба должна иметь возможность работать от имени пользователя none.

В общем, я не понимаю, почему все пользователи должны иметь доступ ко всем лог-файлам. Пожалуйста, уточните это.

Для полноты:

Скорее всего, сработает logrotate. Этот инструмент сжимает старые и удаляет устаревшие файлы журналов и создает новые на основе того, что настроено в /etc/logrotate.conf и включенных в него файлах. В противном случае на вашем сервере через некоторое время закончится свободное место. Вы можете изменить конфигурацию logrotate или

НЕ ДЕЛАЙТЕ СЛЕДУЮЩЕЕ

Вы можете добавить chmod 0777 -R /var/www/log либо в корень crontab, либо в различные системные crontab.

person Markus W Mahlberg    schedule 23.04.2014