On 9/2/2022 4:14 PM, Casey Schaufler wrote:
On 9/2/2022 2:30 PM, Paul Moore wrote:
...
> I think it's time to think about a proper set of LSM syscalls.
At the very least we need a liblsm that preforms a number of useful
functions
Which would include at least these. I used a different prefix so as
to avoid confusion with Paul's proposal. As these aren't syscalls they
may allocate memory. All can be done today.
struct lsm_context {
char *lsm; /* security module name */
char *context; /* value for this security module */
};
struct lsm_contexts {
int count;
struct lsm_context contexts[]; /* I think this is ok these days */
}
/*
* lsm_self_contexts - get the security context of this process
*
* Returns an allocated lsm_contexts structure, or NULL on error.
*/
struct lsm_contexts *lsm_self_contexts(void)
/*
* lsm_pid_contexts - get the security context of a process
* @pid: process id of interest
*
* Returns an allocated lsm_contexts structure, or NULL on error.
*/
strcut lsm_contexts *lsm_pid_contexts(int pid)
/*
* lsm_get_path_contexts - get the security context of a file
* @path: path of interest
*
* Returns an allocated lsm_contexts structure, or NULL on error.
*/
struct lsm_contexts *lsm_get_path_contexts(char *path)
/*
* lsm_set_path_contexts - set the security context of a file
* @path: path of interest
* @ctx: the context
*
* Note: needs to have deterministic behavior if 1st entry can be set
* but 2nd can't.
*
* Returns 0 on success, a security module specific error on failure.
*/
int lsm_set_path_contexts(char *path, struct *lsm_contexts)
/*
* lsm_free_contexts - free a lsm_contexts structure.
*/
void lsm_free_contexts(struct *lsm_contexts)
Also needs interfaces for SO_PEERSEC and SYSVIPC.