Kernel: Add syscalls for set{,e,re}{uid,gid}

This commit is contained in:
Bananymous
2023-06-11 22:15:35 +03:00
parent 9288537949
commit 3fe67e4882
7 changed files with 339 additions and 1 deletions

View File

@@ -21,6 +21,16 @@ namespace Kernel
gid_t egid() const { return m_egid; }
gid_t sgid() const { return m_sgid; }
void set_ruid(uid_t uid) { m_ruid = uid; }
void set_euid(uid_t uid) { m_euid = uid; }
void set_suid(uid_t uid) { m_suid = uid; }
void set_rgid(gid_t gid) { m_rgid = gid; }
void set_egid(gid_t gid) { m_egid = gid; }
void set_sgid(gid_t gid) { m_sgid = gid; }
bool is_superuser() const { return m_euid == 0; }
private:
uid_t m_ruid, m_euid, m_suid;
gid_t m_rgid, m_egid, m_sgid;

View File

@@ -58,6 +58,13 @@ namespace Kernel
BAN::ErrorOr<void> setenvp(char** envp);
BAN::ErrorOr<void> set_uid(uid_t);
BAN::ErrorOr<void> set_gid(gid_t);
BAN::ErrorOr<void> set_euid(uid_t);
BAN::ErrorOr<void> set_egid(gid_t);
BAN::ErrorOr<void> set_reuid(uid_t, uid_t);
BAN::ErrorOr<void> set_regid(gid_t, gid_t);
BAN::ErrorOr<int> open(BAN::StringView, int);
BAN::ErrorOr<int> openat(int, BAN::StringView, int);
BAN::ErrorOr<void> close(int fd);