Как работают UID и GID в Linux?
Чисто теоретический вопрос: как на уровне ядра работают UID и GID в Linux?
Смотрите, в чем проблема. С одной стороны, в штатных дистрибутивах Linux и даже в BSD (насчёт macOS и iOS я не знаю, не юзал и не интересовался) "пользовательская система" устроена таким образом. Идентификация пользователей и вообще их существование определяется в /etc/passwd, групп - в /etc/group. Т е, в системе есть такая запись:
root@linux: ~ # cat /etc/passwd
root:x:0:0:root:/bin/sh
user:x:1000:1000:usergrp:/bin/sh
root@linux: ~ # cat /etc/group
root:x:0:root
sudo:x:27:root,user
root@linux: ~ # id
uid=0(root), gid=0(root), groups=27(sudo)
В Android же совершенно иная схема. Файлов /etc/passwd и /etc/group нету, да и в целом UID и GID там определяются иным образом. Но отсюда вывод, что как-то можно переопределить процесс создания и опознания пользователя. И вот вопрос: как же это устроено?
Причём, если даже в Android запустить штатный дистрибутив, то вот что получается:
(chroot) root@linux: ~ # useradd user
(chroot) root@linux: ~ # su user -l
(chroot) user@linux: ~ $ id
uid=1000000(user), gid=1000000(user)
И вот вопрос: а как в системах Linux (в т ч Android) "закладывается" "определение" UID и GID? Как переопределяется в Android создание и идентификация Linux-пользователя? Где это прописывается и указывается в системе или это определённым образом программируется в ядре?? Хотя, честно, я не раз собирал ядра Linux (в т ч для Android) и соответствующих пунктов не находил...