ПРОЕКТЫ 


  АРХИВ 


Apache-Talk @lexa.ru 

Inet-Admins @info.east.ru 

Filmscanners @halftone.co.uk 

Security-alerts @yandex-team.ru 

nginx-ru @sysoev.ru 


  СТАТЬИ 


  ПЕРСОНАЛЬНОЕ 


  ПРОГРАММЫ 



ПИШИТЕ
ПИСЬМА












     АРХИВ :: nginx-ru
Nginx-ru mailing list archive (nginx-ru@sysoev.ru)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: /var/log/nginx



On 19.12.2010 23:02, Maxim Dounin wrote:

А почему параноики ставят минимальные права, с которыми вообще
способна работать программа, на всё, до чего дотянутся - для меня
загадка. Видимо, потому что параноики.

и еще, как быть с тем, что по умолчанию nginx создает лог-файлы
доступные на чтение worker-процессам nginx ? и если на сервере
mass virtual hosting и пользователи имеют доступ к своим каталогам
по ssh, то они могут создать симлинк на /var/log/nginx/error.log
и таким образом получить через http содержимое системного файла
error.log и вообще access.log любого из сайтов расположенных
на сервере. может быть лучше сделать так, чтобы лог-файлы
nginx были доступны worker-процессам nginx только на запись?
это ведь никому не будет мешать и не создаст неудобств... ?

тем более, что сам nginx всегда эти лог-файлы открывает
только для append, и никогда не открывает их на чтение.

патчи в аттаче.

P.S. ?Выживают только параноики? Эндрю Гроув

--
Best regards,
 Gena
--- src/core/ngx_cycle.c.orig   2011-01-03 18:41:26.000000000 +0200
+++ src/core/ngx_cycle.c        2011-01-03 18:46:47.000000000 +0200
@@ -1201,9 +1201,9 @@
                 }
             }
 
-            if ((fi.st_mode & (S_IRUSR|S_IWUSR)) != (S_IRUSR|S_IWUSR)) {
+            if ((fi.st_mode & S_IRWXU) != S_IWUSR) {
 
-                fi.st_mode |= (S_IRUSR|S_IWUSR);
+                fi.st_mode = (fi.st_mode & ~S_IRWXU) | S_IWUSR;
 
                 if (chmod((const char *) file[i].name.data, fi.st_mode) == -1) 
{
                     ngx_log_error(NGX_LOG_EMERG, cycle->log, ngx_errno,
--- src/core/ngx_cycle.c.orig   2011-01-03 19:24:20.000000000 +0200
+++ src/core/ngx_cycle.c        2011-01-03 19:27:50.000000000 +0200
@@ -1187,11 +1187,13 @@
                 }
             }
 
-            if (fi.st_uid != user) {
-                if (chown((const char *) file[i].name.data, user, -1) == -1) {
+            if ((fi.st_mode & S_IRWXU) != S_IWUSR) {
+
+                fi.st_mode = (fi.st_mode & ~S_IRWXU) | S_IWUSR;
+
+                if (chmod((const char *) file[i].name.data, fi.st_mode) == -1) 
{
                     ngx_log_error(NGX_LOG_EMERG, cycle->log, ngx_errno,
-                                  "chown(\"%s\", %d) failed",
-                                  file[i].name.data, user);
+                                  "chmod() \"%s\" failed", file[i].name.data);
 
                     if (ngx_close_file(fd) == NGX_FILE_ERROR) {
                         ngx_log_error(NGX_LOG_EMERG, cycle->log, ngx_errno,
@@ -1201,13 +1203,11 @@
                 }
             }
 
-            if ((fi.st_mode & S_IRWXU) != S_IWUSR) {
-
-                fi.st_mode = (fi.st_mode & ~S_IRWXU) | S_IWUSR;
-
-                if (chmod((const char *) file[i].name.data, fi.st_mode) == -1) 
{
+            if (fi.st_uid != user) {
+                if (chown((const char *) file[i].name.data, user, -1) == -1) {
                     ngx_log_error(NGX_LOG_EMERG, cycle->log, ngx_errno,
-                                  "chmod() \"%s\" failed", file[i].name.data);
+                                  "chown(\"%s\", %d) failed",
+                                  file[i].name.data, user);
 
                     if (ngx_close_file(fd) == NGX_FILE_ERROR) {
                         ngx_log_error(NGX_LOG_EMERG, cycle->log, ngx_errno,
_______________________________________________
nginx-ru mailing list
nginx-ru@xxxxxxxxx
http://nginx.org/mailman/listinfo/nginx-ru


 




Copyright © Lexa Software, 1996-2009.