current->uid
и current->euid
могут заменить первые два.
schedule()
должно работать для последнего.
Операции с файловой системой выглядят более сложными: вы можете попробовать посмотреть, экспортируются ли sys_chown()
, sys_mknod()
и sys_unlink()
(доступно для использования любым модулем). Если они работают, отлично. Вот несколько полезных советов . В противном случае вам придется копать немного глубже:
Системный вызов chown
определен в fs/open.c
. На первый взгляд, я не понимаю, почему вы не можете скопировать этот код в свою собственную функцию «kernel_chown» и попробовать.
Системные вызовы mknodat
и unlink
находятся в fs/namei.c
; в итоге они звонят vfs_mknod()
и vfs_unlink()
соответственно. Может быть, вы можете скопировать этот код или выяснить, как это делается оттуда.