sched/group and syscall/: Implement 'real' setuid, getuid, setgid, and getgid interfaces. These will be inheritance by all child task groups.

This commit is contained in:
Gregory Nutt
2019-08-06 14:13:43 -06:00
parent 945e27d85c
commit ec5120f69e
16 changed files with 419 additions and 16 deletions
+7
View File
@@ -441,6 +441,13 @@ struct task_group_s
#endif
uint8_t tg_flags; /* See GROUP_FLAG_* definitions */
/* User identity **************************************************************/
#ifdef CONFIG_SCHED_USER_IDENTITY
uid_t tg_uid; /* User identity */
gid_t tg_gid; /* User group identity */
#endif
/* Group membership ***********************************************************/
uint8_t tg_nmembers; /* Number of members in the group */
+21 -8
View File
@@ -82,20 +82,33 @@
#define SYS_sched_yield (CONFIG_SYS_RESERVED + 12)
#define SYS_set_errno (CONFIG_SYS_RESERVED + 13)
#define SYS_uname (CONFIG_SYS_RESERVED + 14)
#define __SYS_uid (CONFIG_SYS_RESERVED + 15)
/* User identity */
#ifdef CONFIG_SCHED_USER_IDENTITY
# define SYS_setuid (__SYS_uid + 0)
# define SYS_getuid (__SYS_uid + 1)
# define SYS_setgid (__SYS_uid + 2)
# define SYS_getgid (__SYS_uid + 3)
# define __SYS_sem (__SYS_uid + 4)
#else
# define __SYS_sem __SYS_uid
#endif
/* Semaphores */
#define SYS_sem_destroy (CONFIG_SYS_RESERVED + 15)
#define SYS_sem_post (CONFIG_SYS_RESERVED + 16)
#define SYS_sem_timedwait (CONFIG_SYS_RESERVED + 17)
#define SYS_sem_trywait (CONFIG_SYS_RESERVED + 18)
#define SYS_sem_wait (CONFIG_SYS_RESERVED + 19)
#define SYS_sem_destroy (__SYS_sem + 0)
#define SYS_sem_post (__SYS_sem + 1)
#define SYS_sem_timedwait (__SYS_sem + 2)
#define SYS_sem_trywait (__SYS_sem + 3)
#define SYS_sem_wait (__SYS_sem + 4)
#ifdef CONFIG_PRIORITY_INHERITANCE
# define SYS_sem_setprotocol (CONFIG_SYS_RESERVED + 20)
# define __SYS_named_sem (CONFIG_SYS_RESERVED + 21)
# define SYS_sem_setprotocol (__SYS_sem + 5)
# define __SYS_named_sem (__SYS_sem + 6)
#else
# define __SYS_named_sem (CONFIG_SYS_RESERVED + 20)
# define __SYS_named_sem (__SYS_sem + 5)
#endif
/* Named semaphores */
+2
View File
@@ -371,7 +371,9 @@ long sysconf(int name);
/* User and group identity management */
int setuid(uid_t uid);
uid_t getuid(void);
int setgid(gid_t gid);
gid_t getgid(void);
#undef EXTERN
#if defined(__cplusplus)