天天看點

linux lsm 程式加載鈎函數,LSM在Linux中的實作方式

LSM(Linux Secure Model)一種輕量級通路控制機制.

其實作方式有如在系統調用中加入一個後門....

方式如下:

static struct file *__dentry_open(struct dentry *dentry, struct vfsmount *mnt,

struct file *f,

int (*open)(struct inode *, struct file *),

const struct cred *cred)

{

struct inode *inode;

int error;

...............................................................

error = security_dentry_open(f, cred);   //LSM機制實作方式,在此加入了一個LSM函數.

//security_dentry_open的實作如下,相當于一個接口,對一個函數指針再

//封裝一下.

//隻傳回是與否,這樣的控制資訊.

if (error)

goto cleanup_all;

................................................................

return f;

cleanup_all:

.................................................................

return ERR_PTR(error);

}

//========簡單封裝一個指針結構體===========================

int security_dentry_open(struct file *file, const struct cred *cred)

{

int ret;

ret = security_ops->dentry_open(file, cred);

if (ret)

return ret;

return fsnotify_perm(file, MAY_OPEN); }