Проверка атрибутов файла Linux - PullRequest
0 голосов
/ 24 марта 2012

Мне было интересно, на каком этапе атрибуты файла проверяются ядром в Linux.Примером того, что я имею в виду, будет, если я попытаюсь отредактировать файл с неизменным атрибутом.В какой момент ядро ​​возвращает ошибку, указывающую, что файл нельзя изменить.Если бы я хотел изменить, как работает атрибут, каков был бы лучший способ выполнить этот процесс.Я думал о модуле ядра, который перенаправил бы функцию чтения / записи / добавления к моей серии функций.

Спасибо

РЕДАКТИРОВАТЬ:

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

Ответы [ 2 ]

0 голосов
/ 25 марта 2012

Когда вы получаете доступ к (чтение, запись ... и т. Д.) Файла, самое первое, что делает ОС, - это проверяет, разрешено ли разрешение связанного с пользователем / процессом разрешения. разрешения, которые выполняются с использованием fstat64, который возвращает статистическую структуру, содержащую информацию об иноде, UID, GID и т. д. Если разрешения достаточны, то к структуре данных инода осуществляется доступ для выполнения любого запрошенного действия. Вызов fstat64 бесплатный , т.е. для процесса (который вызывает fstat64) не требуется специальных привилегий для доступа к метаданным о файле.

0 голосов
/ 25 марта 2012

Проверяет разрешения на open ();с неизменяемым флагом, например, невозможно открыть файл для записи, даже если чтение также требуется.Например:

$ python
>>> f = file('/tmp/11', 'r+')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
IOError: [Errno 13] Permission denied: '/tmp/11'
>>> f = file('/tmp/11', 'r')
>>> print f
<open file '/tmp/11', mode 'r' at 0x7f87b9ba1660>

Чтобы проверить атрибут файла для операции открытия, см. Inode_permission () в fs / namei.c.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...