Обнаружение значений опций ядра, связанных с sysctl.conf и sysctl.d

Можно добавить цифровой отпечаток к known_hosts каждого сервера. Для отдельного пользователя:

cat ~/.ssh/known_hosts
echo "$SERVER,$PORT ssh-rsa $SERVER_KEY_FINGERPRINT" >> ~/.ssh/known_hosts
20
08.12.2012, 00:29
3 ответа

Проверка значения sysctl переменной так же легка как

sysctl <variable name>

и, между прочим, установка sysctl переменной так же проста как

sudo sysctl -w <variable name>=<value>

но изменения пробились, будет, вероятно, содержать только до следующей перезагрузки.

Относительно который из местоположений конфигурации, /etc/sysctl.conf или /etc/sysctl.d/, имеет приоритет, вот что /etc/sysctl.d/README файл говорит:

Конечные пользователи могут использовать 60 - *.conf и выше или использовать/etc/sysctl.conf непосредственно, который переопределяет что-либо в этом каталоге.

После редактирования конфигурации в любом этих двух местах изменения могут быть применены с

sudo sysctl -p
32
27.01.2020, 19:44

Этот вид материала обычно находится в /proc и/или /sys интерфейсы ядра (сначала, имейте в виду, что ничто в тех каталогах не регулярный дисковый файл, они - все прямые линии к ядру).

Так, например:

»for x in /proc/sys/net/ipv4/conf/*/rp_filter; do echo -ne "$x "`cat $x`"\n"; done
/proc/sys/net/ipv4/conf/all/rp_filter 0
/proc/sys/net/ipv4/conf/default/rp_filter 1
/proc/sys/net/ipv4/conf/em1/rp_filter 1
/proc/sys/net/ipv4/conf/lo/rp_filter 0
/proc/sys/net/ipv4/conf/wlan0/rp_filter 1

Похож у меня есть набор rp_filter для em1, wlan0, и "значение по умолчанию". Можно установить или сбросить их просто пишущий в дескриптор файла:

»cd /proc/sys/net/ipv4/conf/lo
»echo 1 > rp_filter
»cat rp_filter
1
»echo 0 > rp_filter
»cat rp_filter
0

Как упомянуто, это - прямая связь с ядром, так, чтобы сразу вступил в силу. Это не конфигурационные файлы. При попытке сделать что-то не так:

»echo whatever > rp_filter
bash: echo: write error: Invalid argument

Который не должен говорить, что Вы не можете завинтить вещи этот путь, конечно. И обязательно прочитайте комментарии ниже.

2
27.01.2020, 19:44
  • 1
    я придерживался бы конфигурационных файлов, потому что этот путь я могу сохранить десятки строк своей предпочтительной конфигурации в файле простого текста и повторном использовании (часть из) ими при необходимости. Запись сценария с этой целью чувствует себя подобно ненужной сложности. Но спасибо за информацию о методе для проверки текущих значений. –  Desmond Hume 07.12.2012, 17:40
  • 2
    Определенно использование файлов конфигурации намного лучше. Я не предлагал, чтобы Вы записали сценарий, просто иллюстрируя, что это не значения "только для чтения" и может использоваться для создания ручных тонких настроек. ;) –  goldilocks 07.12.2012, 17:48
  • 3
    Тот сценарий оболочки является довольно интересным способом переписать sysctl -a ... –  derobert 07.12.2012, 18:21
  • 4
    Правда, но (в зависимости от природы Вашего файлового браузера) просматривающий proc/sys мог бы считаться более удобным, который является одной причиной, о которой стоит знать. Другой - это WRT к получению информации программно, тот интерфейс более эффективен, чем переданная по каналу "система (sysctl)" материал типа и работает независимо от языка, доступный освобождает, и т.д. А-ч –  goldilocks 09.12.2012, 15:24
  • 5
    , Вы неправильно понимаете то, под чем я подразумеваю программно, возможно, я должен разъясниться: Я не имел в виду сценарии оболочки. Существует собственный компонент C, эквивалентный из sysctl (см. man 2 sysctl), однако, это не портировано на большинство других языков (это находится в некоторых), и в этих случаях наилучший вариант состоит в том, чтобы читать или записать в proc. Может случиться так что удар echo может перестать работать, поскольку я могу сказать, что поток высокого уровня функции ввода-вывода, доступные в C и других языках, может. Низкоуровневое чтение-запись не будет, как бы то ни было. В любом случае знание об интерфейсе proc важно, который является, почему я поднял его... –  goldilocks 12.12.2012, 16:28

Чтобы завершить принятый ответ , хотя это правда, что настройки /etc/sysctl.confимеют приоритет над настройками в /etc/sysctl.d/, пример, представленный в исходном вопросе, показывает две закомментированные переменные в/etc/sysctl.conf:

#net.ipv4.conf.default.rp_filter=1
#net.ipv4.conf.all.rp_filter=1

и те же переменные, не закомментированные в/etc/sysctl.d/10-network-security.conf:

net.ipv4.conf.default.rp_filter=1
net.ipv4.conf.all.rp_filter=1

Это может ввести в заблуждение, поскольку комментарий — это не настройка, а только примечание того, что может быть настройкой.

В этой ситуации обе переменные на самом деле установлены в 1, несмотря на то, что в более сильном конфигурационном файле они закомментированы.

Если бы в /etc/sysctl.confмы имели:

net.ipv4.conf.default.rp_filter=0
net.ipv4.conf.all.rp_filter=0

тогда переменные в конечном итоге будут установлены на 0.

1
27.01.2020, 19:44

Теги

Похожие вопросы