Цитата(Lagman @ Apr 15 2017, 13:09)

А если у файла установлен атрибут setuid?
А если у файла установлен атрибут setuid, то установлен он не от Духа Святого

, а вы его
сами установили, и, хотелось бы думать, что зная зачем это делаете.
Ну и т.д. ... про setuid в этом качестве множество написано, и про нежелательность его использования вообще ... и все дальнейшие обсуждения в этом направлении будут уже просто бла-бла-бла...
Чтоб ... не растекаться умом по древу, не разводить словопрения - подведём как итог: то, что ТС-ра интересует и что он спрашивает, сводится к следующему:
- как можно читать/писать в Linux по портам и наблюдать обменные операции?
- обязательно ли для этого писать модуль ядра Linux, чтобы доступ к портам осуществлять в супервизорном режиме процессора (кольцо защиты 0)?
Ответы можно сгрупировать так:
- кроме обменных операций из ядра (модуля) их можно выполнять и из пространства пользователя...
- операциями типа inb(), outb() ...
- и это именно не машинные привилегированные команды, как в ядре, а
системные вызовы Linux...
- в чём можно убедиться (обращаем внимание на 2):
Код
$ man 2 inb
- ... и которые контролируются ядром Linux с той же степенью безопасности, как и все другие системные вызовы.
- кроме того, специально предоставляется ещё и специальное символьное устройство /dev/port для доступа к портам.
А итог:
- во многих (достаточно многих) случаях, когда нужно обслуживание внешнего устройства (ввод-вывод)...
- если есть возможность это написать
без написания модулей ядра, в пространстве пользователя - то именно это и есть
предпочтительное решение
- и многие крупные девелоперские проекты Linux последнего времени были направлены именно на создание и предоставление таких инструментариев: libusb, файловая система FUSE ... да и udev, netlink и sysfs.
- и
тысячи образцов разнообразных проприетарных устройстм и гаджетов последних лет
от производителей обеспечиваются поддержкой именно в таких техниках - это есть
тенденция последнего времени.
P.S. Если кто интересовался архитектурой микроядерных ОС, то он вспомнит, что в них обеспечивается устойчивость и жизнеспособность
на порядки выше, чем во всех Linux и Windows вместе взятые

, именно за счёт того, что драйверы там
вынесены из супервизорного режима (ядра), выполняются либо в пользовательском пространстве, либо в промежуточных кольцах защиты (1 или 2) процессора.