Какими должны быть права доступа к файлам для исполняемых программ и файлов журналов? - PullRequest
0 голосов
/ 14 августа 2010

Я написал программу C ++ для всей системы Linux /usr/bin/PROG_X, которая использует файл конфигурации /etc/PROG_X.conf и файл журнала /var/PROG_X.log.

Теперь мне нужно вызвать эту программу после строгой аутентификации из Интернета, используя веб-сервер apache и php. Вызов программы может потребовать изменения файлов конфигурации и, конечно же, изменения файлов журнала.

Я заинтересован в том, чтобы SELinux был включен.

Мой запрос: Какой пользователь / группа и какие права доступа к файлу должны быть установлены для двоичного файла, файлов конфигурации и файлов журнала для правильной и безопасной работы?

Ответы [ 2 ]

2 голосов
/ 14 августа 2010

Для наиболее закрытого подхода (при условии, что журнал и конфигурация чувствительны):

Apache работает как пользователь 'www', пользователь и группа 'progx' существуют только для запуска / usr /bin / PROG_X.

/ etc / PROG_X.conf принадлежит root: progx и имеет разрешения 640
/var/PROG_X.log принадлежит root: progx и имеет разрешения 660
/ usr / bin / PROG_X принадлежит progx: progx и имеет разрешения 500
/ etc / sudoers позволяет www запускать только / usr / bin / PROG_X в качестве progx.

Таким образом, толькоroot и progx могут видеть конфигурацию или читать / записывать файл журнала, и только root может изменять конфигурацию.Только progx может запустить программу, но apache может специально запустить вашу программу как progx через sudo.

[Редактировать: пропущена часть, в которой говорится, что программе может потребоваться изменить свой конфигурационный файл ... так что разрешения будут660 вместо]

1 голос
/ 14 августа 2010

Ну, я не знаю о SELinux, но тут на ум приходят несколько «традиционных» решений:

Сначала chown root /usr/bin/PROG_X, а затем установите бит setuid с помощью chmod +s /usr/bin/PROG_X. Бит setuid заставляет программу работать не как текущий пользователь, а как владелец файла (в данном случае root). Это означает, что вам необходимо убедиться, что ваша программа максимально безопасна. Так что используйте с осторожностью.

Альтернативой setuid может быть добавление соответствующей записи в /etc/sudoers для программы и вызов ее через sudo. Но это имеет те же последствия для безопасности, что и программа, запускаемая от имени пользователя root, но, по крайней мере, вы можете получить более детальный доступ (например, вы можете разрешить пользователю «www» запускать программу от имени root).

Другим решением может быть chown root:wwwrun all_of_the_files_that_PROG_X_need_to_modify. Но это сработает, только если вы точно знаете, какие файлы, а также если этот набор файлов не изменится.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...