6

Я следовал этому учебному руководству «Как создавать файлы Linux Proc в программе на C, используя LKM».

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

Я пытался:

$ echo "hello" > /proc/procEntry123       # But it says permission is denied!
$ sudo echo "hello" > /proc/procEntry123  # Same error message.

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

1 ответ1

13

Но это говорит, что разрешение отказано!

Вероятно, это так, потому что вы устанавливаете ограничительные права при вызове create_proc_entry() . (0644 переводится как «u = rw, go = r», что только дает права на запись владельцу, который по умолчанию имеет значение root.)

Я поставил "sudo" перед ним - то же самое сообщение.

Перенаправления, такие как > или | выполняются запущенной оболочкой, прежде чем она вызовет sudo .

Вы должны либо использовать sudo sh -c "echo blah > /proc/blah" , либо запустить оболочку root с помощью sudo -s .

Я единственный пользователь - это моя личная машина!

Это не имеет значения в Linux. Права доступа к файлам будут применяться независимо от того, кто использует компьютер.

Если вы не хотите этого, либо войти в систему корня, или использовать pam_cap , чтобы дать себе возможность cap_dac_override - но либо метод вызовет проблемы рано или поздно.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .