Разрешения веб-сервера Ubuntu

Теперь я купил сервер Ubuntu Cloud. Я установил Webmin этим утром, и теперь у меня есть вопрос. Можно ли создать пользователей, которые могут использовать только один каталог, SVN, FTP, PHP, Python, MySQL, Apache? Так, например, пользователь Kevin может использовать только /var/www/kevin/? О, после создания каталога проверка SVN должна заполнить каталог. Как лучше всего управлять всеми базами данных? Многие люди будут работать с базой данных, так как я могу обеспечить ее безопасность? Можно ли делать резервную копию базы данных каждый раз при выполнении запроса?

Большое большое спасибо,

С уважением, Кевин


person www.data-blogger.com    schedule 07.04.2011    source источник


Ответы (1)


Это может лучше подходить для https://askubuntu.com/.

Тем не менее, резервное копирование базы данных после каждого запроса звучит как рецепт ужасной производительности и, вероятно, не имеет реальной пользы. Настройка или изменение вашего приложения для отправки журналов аудита на другую машину, вероятно, будет более доступным.

Вы можете настроить стандартные разрешения Unix, чтобы разрешить кевину писать только в /var/www/kevin. Для ограничения того, какие программы Кевин может запускать, вероятно, потребуется инструмент, похожий на AppArmor. , SElinux, TOMOYO или SMACK. Любой из этих инструментов обязательного контроля доступа может предотвратить выполнение пользователем ненадежных программ или предоставить дополнительный уровень безопасности поверх стандартных разрешений Unix.

Я работаю над AppArmor уже более десяти лет, и это был бы инструмент, который я бы выбрал в первую очередь для этой работы, но другие инструменты превосходны и могут лучше подойти для вашей среды. (AppArmor может быть уже предустановлен. Проверьте вывод aa-status(8), чтобы увидеть. :)

Но сначала убедитесь, что ваши разрешения Unix верны — они могут быть старомодными, но они превосходны.

Обновить

Но как я могу сделать так, чтобы, когда «кевин» входит в SSH, он автоматически переходил в каталог /var/www/kevin/ (и не мог переходить в /var/www/ или каталоги ниже)?

Вы можете добавить команду cd /var/www/kevin в файл ~/.bash_profile или ~/.profile Кевина. Это может быть скорее раздражающим, чем полезным. (Я не рекомендую устанавливать для домашнего каталога Кевина (в /etc/passwd) значение /var/www/kevin, потому что в этом случае информация ~/.bash_history и ~/.ssh/* будет храниться в /var/www/kevin/.bash_history и /var/www/kevin/.ssh/, потенциально раскрывая слишком много личной информации кевина.)

Чтобы разрешить кевину войти в /var/www/kevin/, кевин должен иметь возможность ввести /var/www, но ему не обязательно видеть содержимое /var/www:

root:root   755 /var
root:root   751 /var/www
kevin:kevin 755 /var/www/kevin
other:www   750 /var/www/other
priv:www    750 /var/www/private

Если ваш веб-сервер работает с группой или дополнительной группой www, он сможет просматривать и читать все эти каталоги. Кевин не может. (Предположим, что Кевин не входит в группу или дополнительную группу www.) Кевин может cd /var/www, а если кевин угадывает /var/www/other или /var/www/private, он может определить что они существуют, но на самом деле он не может войти в каталоги или перечислить их содержимое.

person sarnold    schedule 07.04.2011
comment
Но как я могу сделать так, чтобы, когда «кевин» входит в SSH, он автоматически переходил прямо в «var/www/kevin/» (и не мог заходить в /var/www/ или каталоги ниже)? - person www.data-blogger.com; 07.04.2011