Форум русскоязычного сообщества Ubuntu


Считаете, что Ubuntu недостаточно дружелюбна к новичкам?
Помогите создать новое Руководство для новичков!

Автор Тема: чудеса с /proc/kallsyms  (Прочитано 2233 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Olej

  • Автор темы
  • Забанен
  • Активист
  • *
  • Сообщений: 884
    • Просмотр профиля
чудеса с /proc/kallsyms
« : 23 Июня 2015, 18:01:46 »
Известно (по крайней мере любому, кто разбирался с программированием модулей ядра, драйверами ... или хотя бы разбирался с вопросом), что в псевдофайле /proc/kallsyms содержатся все символ (имена) ядра и их адреса размещения в этой конкретной сборке ядра.
Так пищется в любом учебнике Linux. :D

olej@ubuntu:~/Рабочий стол$ lsb_release -ircd
Distributor ID:   Ubuntu
Description:   Ubuntu 12.04 LTS
Release:   12.04
Codename:   precise
Это наугад взятая версия Ubuntu (даже Xubuntu) ... и даже виртуальная, в VirtualBox.

И смотрим:
olej@ubuntu:~/Рабочий стол$ sudo cat /proc/kallsyms | grep sys_connect
c149a0a0 T sys_connect
olej@ubuntu:~/Рабочий стол$ cat /proc/kallsyms | grep sys_connect
00000000 T sys_connect

Т.е. только от root появляются адреса.
Это что такое?
С какого времени такое достигается? ;D ???
И каким способом такое достигается? ... это настолько серьёзно патчено ядро? что оно настолько отличается от официального?

Оффлайн qub

  • Новичок
  • *
  • Сообщений: 41
    • Просмотр профиля
Re: чудеса с /proc/kallsyms
« Ответ #1 : 24 Июня 2015, 05:54:46 »
Судя по этим ссылкам, это сделано специально с точки зрения безопасности.

http://stackoverflow.com/questions/10447491/reading-kallsyms-in-user-mode
http://www.linux.org.ru/forum/development/8035400

Оффлайн Olej

  • Автор темы
  • Забанен
  • Активист
  • *
  • Сообщений: 884
    • Просмотр профиля
Re: чудеса с /proc/kallsyms
« Ответ #2 : 24 Июня 2015, 09:09:31 »
Судя по этим ссылкам, это сделано специально с точки зрения безопасности.
Ну ...

... во-первых, это обеспечение безопасности только от "пыанэра", который умеет писать только Hello world! Код любого модуля ядра выполняется уже с правами root, поэтому получит такой доступ.

... во-вторых, простейшее sudo cat - снимает эту ... "защищённость".

--- и в-третьих, и для меня это кажется самым важным и показательным, что в Fedora (где единственно идёт на сегодня какое-то развитие кода Linux а не отдельных приложений пользовательсого пространства) - такого не происходит. А это значит, что в ядре Ubuntu/Mint сделаны заметные изменения, и оно в этой части не совместимо (не совсем совместимо) с официальным ядром от Линуса Торвальдса.
 

Оффлайн qub

  • Новичок
  • *
  • Сообщений: 41
    • Просмотр профиля
Re: чудеса с /proc/kallsyms
« Ответ #3 : 24 Июня 2015, 16:03:02 »
Судя по этим ссылкам, это сделано специально с точки зрения безопасности.
Ну ...

... во-первых, это обеспечение безопасности только от "пыанэра", который умеет писать только Hello world! Код любого модуля ядра выполняется уже с правами root, поэтому получит такой доступ.

... во-вторых, простейшее sudo cat - снимает эту ... "защищённость".

--- и в-третьих, и для меня это кажется самым важным и показательным, что в Fedora (где единственно идёт на сегодня какое-то развитие кода Linux а не отдельных приложений пользовательсого пространства) - такого не происходит. А это значит, что в ядре Ubuntu/Mint сделаны заметные изменения, и оно в этой части не совместимо (не совсем совместимо) с официальным ядром от Линуса Торвальдса.
 

судя по этой ссылке http://askubuntu.com/questions/307221/how-to-get-the-address-with-proc-kallsyms

что бы команда
cat /proc/kallsyms | grep sys_connectпоказывала не нули, а адрес, необходимо сначала выполнить эту команду
sudo sh -c "echo 0  > /proc/sys/kernel/kptr_restrict"После этого у меня адрес начал отображаться без root привилегий.

Оффлайн Olej

  • Автор темы
  • Забанен
  • Активист
  • *
  • Сообщений: 884
    • Просмотр профиля
Re: чудеса с /proc/kallsyms
« Ответ #4 : 24 Июня 2015, 16:05:02 »
показывала не нули, а адрес, необходимо сначала выполнить эту команду
sudo sh -c "echo 0  > /proc/sys/kernel/kptr_restrict"После этого у меня адрес начал отображаться без root привилегий.
Вот за это спасибо.

Оффлайн olej.tsil

  • Участник
  • *
  • Сообщений: 108
    • Просмотр профиля
Re: чудеса с /proc/kallsyms
« Ответ #5 : 31 Октября 2019, 18:42:53 »
Тема совершенно давняя, но вопрос всё тот же, чтобы темы не плодить:
судя по этой ссылке http://askubuntu.com/questions/307221/how-to-get-the-address-with-proc-kallsyms

что бы команда
Код: [Выделить]
cat /proc/kallsyms | grep sys_connect
показывала не нули, а адрес, необходимо сначала выполнить эту команду
Код: [Выделить]
sudo sh -c "echo 0  > /proc/sys/kernel/kptr_restrict"
После этого у меня адрес начал отображаться без root привилегий.
olej@ACER:~/2019_WORK/HISTORY/10/31$ sudo cat /proc/kallsyms | grep ' T ' | grep mempool_kmalloc
[sudo] пароль для olej:
ffffffff817c5f40 T mempool_kmalloc
А теперь попытаемся читать адреса ядра без root:
olej@ACER:~/2019_WORK/HISTORY/10/31$ sudo sh -c "echo 0  > /proc/sys/kernel/kptr_restrict"
olej@ACER:~/2019_WORK/HISTORY/10/31$ cat /proc/sys/kernel/kptr_restrict
0
olej@ACER:~/2019_WORK/HISTORY/10/31$ cat /proc/kallsyms | grep ' T ' | grep mempool_kmalloc
0000000000000000 T mempool_kmalloc
По-другому:
olej@ACER:~/2019_WORK/HISTORY/10/31$ sudo sh -c "echo 1  > /proc/sys/kernel/kptr_restrict"
olej@ACER:~/2019_WORK/HISTORY/10/31$ cat /proc/sys/kernel/kptr_restrict
1
olej@ACER:~/2019_WORK/HISTORY/10/31$ cat /proc/kallsyms | grep ' T ' | grep mempool_kmalloc
0000000000000000 T mempool_kmalloc
Что в лоб, что по лбу...

P.S. Наверное за это время что-то поменялось?

Оффлайн bezbo

  • Старожил
  • *
  • Сообщений: 1749
    • Просмотр профиля
Re: чудеса с /proc/kallsyms
« Ответ #6 : 31 Октября 2019, 19:18:04 »
[sudo] пароль для olej:
читать адреса ядра без root:

logout сделайте

Оффлайн olej.tsil

  • Участник
  • *
  • Сообщений: 108
    • Просмотр профиля
Re: чудеса с /proc/kallsyms
« Ответ #7 : 31 Октября 2019, 19:21:17 »
logout сделайте
Это что значит?

 

Страница сгенерирована за 0.063 секунд. Запросов: 25.