Я ищу написать модуль ядра, который может перехватывать и блокировать операции, которые стремятся изменить биты для неизменяемых и добавленных только флагов в файлах. Это, предположительно, fcntl()
, но я не видел параметров для имени файла/папки или новых бит флага. Я что-то не понимаю?Что такое системный вызов Linux для изменения флагов файлов?
0
A
ответ
0
fcntl() предназначен для изменения атрибутов открытых файловых дескрипторов. Вероятно, вы ищете системные вызовы chmod (или fchmod или fchmodat), как определено в fs/open.c.
0
блок операций, которые стремятся изменить биты для неизменны и присоединять-только флаги на файлах
С конкатенирующего только флаг может быть только флаг состояния файла O_APPEND, системный вызов, который должен быть перехвачены для этого есть, как вы предполагалось, fcntl()
- см fcntl(2) Linux manual page:
File status flags Each open file description has certain associated status flags, initialized by open(2) and possibly modified by fcntl(). Duplicated file descriptors (made with dup(2), fcntl(F_DUPFD), fork(2), etc.) refer to the same open file description, and thus share the same file status flags. The file status flags and their semantics are described in open(2). F_GETFL(void) Return (as the function result) the file access mode and the file status flags; arg is ignored. F_SETFL(int) Set the file status flags to the value specified by arg. File access mode (O_RDONLY, O_WRONLY, O_RDWR) and file creation flags (i.e., O_CREAT, O_EXCL, O_NOCTTY, O_TRUNC) in arg are ignored. On Linux, this command can change only the O_APPEND, O_ASYNC, O_DIRECT, O_NOATIME, and O_NONBLOCKflags. It is not possible to change the O_DSYNCand O_SYNCflags; see BUGS, below.
Однако обратите внимание, что режим доступа O_RDONLY не может быть изменен с помощью fcntl()
.
Смежные вопросы
- 1. Системный вызов Linux Connect
- 2. системный вызов памяти с отображением файлов - linux
- 3. Что такое, собственно, системный linux API?
- 4. открытый системный вызов - Linux
- 5. Системный вызов Linux
- 6. системный вызов для копирования файлов
- 7. Использование Linux C выберите системный вызов для мониторинга файлов
- 8. Что такое флагов?
- 9. Перезаписать содержимое файла системный вызов linux
- 10. fork() системный вызов в linux
- 11. Linux системный вызов getifaddr C++
- 12. linux системный вызов getpeername C++
- 13. NFS mount Системный вызов в linux
- 14. Что означает «атомный» системный вызов?
- 15. Прочитайте системный вызов текстовых файлов
- 16. Каков системный вызов, используемый для получения открытых флагов всех fd, открытых другим процессом в Linux?
- 17. Linux системный вызов угон недопустимые аргументы
- 18. Что такое системный вызов «<" and ">» в оболочке (перенаправление)
- 19. Что такое родительский процесс, когда мы выполняем системный вызов fork()?
- 20. Привязать системный вызов к SUSE linux
- 21. Golang, вызывающий новый системный вызов в Linux
- 22. Как осуществляется системный вызов в Linux?
- 23. Пользовательские функции ядра Linux системный вызов обертка
- 24. Системный вызов Linux: пользовательские сообщения управления
- 25. Системный вызов shmget [Linux] - выделены байты?
- 26. Системный вызов Linux: getaddrinfo return -2
- 27. Системный вызов Linux getname info return EAI_AGAIN
- 28. Прочитайте системный вызов навсегда на Linux
- 29. Как отслеживать системный вызов в Linux?
- 30. Пользовательский системный вызов в Linux Kernel 3.3.4
http://unixhelp.ed.ac.uk/CGI/man-cgi?fchmodat+2 – filmor
Этот вопрос относится к unix.stackexchange.com – KevinDTimm
@KevinDTimm Нет, это не так. Это вопрос программирования, он по теме здесь, и он отключен от темы на [unix.se], который предназначен только для пользователей и администраторов. – Gilles