Отказано в доступе при установке значений в sysctl в Ubuntu 12.04

7512
Jay Bhatt

Я пытаюсь настроить Ubuntu 12.04 VPS (OpenVZ) для перезагрузки, когда ему не хватает памяти. Для этого я добавил следующие строки в мой файл /etc/sysctl.conf.

vm.panic_on_oom = 1 kernel.panic = 14 

Но когда я запускаю конфигурацию с помощью команды "sudo sysctl -p", я получаю следующие ошибки.

error: permission denied on key 'vm.panic_on_oom' error: permission denied on key 'kernel.panic' 

Я попытался запустить ту же команду, что и root, и обнаружил ту же ошибку.

Может кто-нибудь указать, что я делаю не так? или как я могу это исправить?

Заранее спасибо.

4

1 ответ на вопрос

6
grawity

OpenVZ is not a virtual machine, it is more like a container – in other words, there is only a single kernel running for both the host and all "VPS"es. This means a kernel panic would bring down the whole system, including every VPS hosted on it, and many kernel settings are shared between the host and all guests.

So you are not allowed to modify those settings because it doesn't make sense to do so.

Благодарю. Теперь я понимаю. Но есть ли способ просто перезагрузить мой собственный VPS, когда возникает состояние OOM? Jay Bhatt 11 лет назад 0
@grawity: означает ли это, что я не должен изменять какие-либо настройки в `sysctl.conf`. Я особенно прошу этот контекст настроек отключить маршрутизацию исходных пакетов, отключить сообщения перенаправления ICMP и другие подобные настройки (следуя этой статье по безопасности http://www.thefanclub.co.za/how-to/how-secure-ubuntu- 1204-lts-server-part-1-основы)? Более конкретный вопрос здесь http://serverfault.com/q/581798/64707 Rajat Gupta 10 лет назад 0
@ user01: вы можете попробовать; если OpenVZ не поддерживает изменение определенной настройки для каждого контейнера, он просто вернет «разрешение запрещено». grawity 10 лет назад 1
да, я попробовал, и он вернул `Permission denied` для некоторых ключей. Поэтому я должен установить допустимые значения (оставляя те, которые не разрешены). Я имею в виду, будут ли они действительно действовать, так как это общее ядро, так почему же мои настройки применяются в общем ядре? Rajat Gupta 10 лет назад 0
Я думаю, что единственное условие, при котором мои настройки должны работать, было бы, если это изменяет что-то не разделяемое. Так должно быть, что не все настройки в sysctl.conf связаны с ядром? Rajat Gupta 10 лет назад 0
@ user01: Они все настройки ядра, но ядро ​​поддерживает помещение определенных вещей в «пространства имен». (Контейнеры OpenVZ в основном просто добавляют несколько пространств имен для / proc, UID, сетевых устройств и т. Д. У основного ядра уже есть поддержка пространств имен, используемая LXC и Docker, хотя пока еще не достигла уровня функциональности OpenVZ.) Например, каждый Контейнер имеет другого «корневого» пользователя, и все они отличаются от «корневого» пользователя хоста, несмотря на то, что все имеют UID 0. Аналогично, сетевые устройства - и некоторые сетевые параметры - также имеют пространство имен. grawity 10 лет назад 1
Очень проницательно! Большое спасибо за объяснение! Rajat Gupta 10 лет назад 0