Почему редактирование core_pattern ограничено?

Вам следует взглянуть на почтенные команды diction (1) и style (1) . Они ловят самые разные бу-бу. Есть новые версии (GPLv3 здесь, на Fedora 23).

Установить

Например, в дистрибутивах на основе Debian установите пакет diction , который включает стиль :

$ sudo apt-get install diction

По крайней мере, в Fedora это:

$ dnf install diction

Красный Hat Enterprise (и клонам), вероятно, потребуются:

$ yum install diction

В любом случае, это происходит из пакета исходной разработки GNU под названием diction , поэтому его следует называть одинаковым почти везде.

Пример

$ diction jefferson_typo.txt
jefferson_typo.txt:1: He has [has] refused his Assent to Laws, the [most] wholesome and necessary for the public good.

jefferson_typo.txt:3: He has forbidden his Governors to pass Laws of immediate and [and] pressing importance, unless suspended in their operation till his Assent should be [be] obtained; and when [so] suspended, he has utterly neglected to attend to them.

2 phrases in 2 sentences found.

Pros

  • улавливает повторяющиеся слова, среди прочего

Cons

  • вводит [] маркировку для элементов, не связанных с повторяющимися словами. Например, [so] , вероятно, отмечен, потому что он может считаться посторонним согласно The Elements of Style от Strunk . См. man diction
  • : показанное число не всегда является номером строки исходного ввода, а вместо этого является номером строки, с которой начинается предложение. Так, например, [be] - это исходная строка ввода с номером 5, но здесь он показывает 3 только потому, что [be] является частью предложения, начинающегося в строке 3 . Это немного отличается от того, что вы хотели

5
23.05.2017, 15:39
3 ответа

Записи в procfs управляются специальным кодом. Код, который устанавливает разрешения и права собственности на файлы в / proc / sys ( proc_sys_setattr ), отклоняет изменение разрешений и прав собственности с помощью EPERM. Таким образом, невозможно изменить права доступа или владельца этих файлов, точка. Такие изменения не реализованы, поэтому наличие root не помогает.

Когда вы пытаетесь писать как пользователь без полномочий root, вы получаете ошибку разрешения. Даже с sudo echo "/home/user/foo/core.%e.%p"> / proc / sys / kernel / core_pattern вы пытаетесь написать как пользователь без полномочий root: sudo запускает echo от имени пользователя root, но перенаправление происходит в оболочке, из которой выполняется sudo , и эта оболочка не имеет повышенных привилегий. С помощью sudo bash -c '…>…' перенаправление выполняется в экземпляре bash, который запускается sudo и выполняется от имени пользователя root, поэтому запись завершается успешно.

Причина, по которой только root может быть разрешено устанавливать sysctl kernel.core_pattern , заключается в том, что он позволяет указывать команду, и, поскольку это глобальный параметр, эту команду может выполнить любой пользователь. Фактически, это в той или иной степени относится ко всем настройкам sysctl: все они глобальные настройки, поэтому только root может их изменить. kernel.core_pattern - как раз особенно опасный случай.

11
27.01.2020, 20:35

En Ubuntu 16.04 LTS,

 sudo bash -c 'echo /home/user/foo/core.%e.%p > /proc/sys/kernel/core_pattern'

falla con

No such file or directory

tengo que correr

sudo sysctl -w kernel.core_pattern=/home/user/foo/core.%e.%p
1
27.01.2020, 20:35

В Ubuntu 18.04 я могу обновить шаблон с помощью:

sudo bash -c 'echo "/data/app_crash/%t.%e.core.%p" > /proc/sys/kernel/core_pattern'

Я также могу обновить /etc/sysctl.confи добавить строку:

kernel.core_pattern = /data/app_crash/%t.%e.core.%p

Однако, несмотря на то, что в /etc/sysctl.confили /etc/sysctl.d/*нет других настроек строк kernel.core_pattern, после перезагрузки шаблон снова устанавливается на значение по умолчанию:

$ sudo sysctl -a | grep kernel.core_pattern
kernel.core_pattern = |/usr/share/apport/apport %p %s %c %d %P

Оказалось, что apportзакончилась -запись любых изменений, которые я внес. Я удалил apportс помощью sudo apt-get remove apport, после чего мои изменения были использованы.

3
27.01.2020, 20:35

Теги

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