|
Basic Solution File System - BSFS
|
Implementation of POSIX-like permission checks for BSFS. More...
Functions | |
| uint16_t | bsfs_effective_mode (const inode_t *ino, uint16_t uid, uint16_t gid) |
| Compute the effective rwx mode (3 bits) for a caller on an inode. | |
| int | bsfs_can_read_file (const inode_t *file, uint16_t uid, uint16_t gid) |
| Check if caller can read a regular file. | |
| int | bsfs_can_write_file (const inode_t *file, uint16_t uid, uint16_t gid) |
| Check if caller can write to a regular file. | |
| int | bsfs_can_exec_file (const inode_t *file, uint16_t uid, uint16_t gid) |
| Check if caller can execute a regular file. | |
| int | bsfs_can_traverse_dir (const inode_t *dir, uint16_t uid, uint16_t gid) |
| Check if caller can traverse (search) a directory. | |
| int | bsfs_can_list_dir (const inode_t *dir, uint16_t uid, uint16_t gid) |
| Check if caller can list entries in a directory. | |
| int | bsfs_can_modify_dir (const inode_t *dir, uint16_t uid, uint16_t gid) |
| Check if caller can modify entries within a directory (w+x). | |
| int | bsfs_can_unlink_in_sticky (const inode_t *dir, const inode_t *entry, uint16_t uid, uint16_t gid) |
| Check unlink/rename permission in a sticky directory. | |
Implementation of POSIX-like permission checks for BSFS.
| int bsfs_can_exec_file | ( | const inode_t * | file, |
| uint16_t | uid, | ||
| uint16_t | gid ) |
Check if caller can execute a regular file.
| file | Target inode. |
| uid | Caller user id. |
| gid | Caller group id. |
| int bsfs_can_list_dir | ( | const inode_t * | dir, |
| uint16_t | uid, | ||
| uint16_t | gid ) |
Check if caller can list entries in a directory.
| dir | Directory inode. |
| uid | Caller user id. |
| gid | Caller group id. |
| int bsfs_can_modify_dir | ( | const inode_t * | dir, |
| uint16_t | uid, | ||
| uint16_t | gid ) |
Check if caller can modify entries within a directory (w+x).
| dir | Directory inode. |
| uid | Caller user id. |
| gid | Caller group id. |
| int bsfs_can_read_file | ( | const inode_t * | file, |
| uint16_t | uid, | ||
| uint16_t | gid ) |
Check if caller can read a regular file.
| file | Target inode. |
| uid | Caller user id. |
| gid | Caller group id. |
| int bsfs_can_traverse_dir | ( | const inode_t * | dir, |
| uint16_t | uid, | ||
| uint16_t | gid ) |
Check if caller can traverse (search) a directory.
| dir | Directory inode. |
| uid | Caller user id. |
| gid | Caller group id. |
| int bsfs_can_unlink_in_sticky | ( | const inode_t * | dir, |
| const inode_t * | entry, | ||
| uint16_t | uid, | ||
| uint16_t | gid ) |
Check unlink/rename permission in a sticky directory.
If the directory has sticky bit set (S_ISVTX), only root, the directory owner, or the entry owner may remove/rename entries inside it.
| dir | Parent directory inode. |
| entry | Entry inode (file or subdirectory) to remove/rename. |
| uid | Caller user id. |
| gid | Caller group id (unused here). |
| int bsfs_can_write_file | ( | const inode_t * | file, |
| uint16_t | uid, | ||
| uint16_t | gid ) |
Check if caller can write to a regular file.
| file | Target inode. |
| uid | Caller user id. |
| gid | Caller group id. |
| uint16_t bsfs_effective_mode | ( | const inode_t * | ino, |
| uint16_t | uid, | ||
| uint16_t | gid ) |
Compute the effective rwx mode (3 bits) for a caller on an inode.
| ino | Target inode. |
| uid | Caller user id. |
| gid | Caller group id. |