Пользователи и группы

Идентификатор пользователя (UID, user identifier) — неотрицательное целое число.

Один из способов хранить информацию о пользователях — файл /etc/passwd:

$ grep -A2 myltsev: /etc/passwd
myltsev:x:1000:1001:Alexander Myltsev,,,:/home/myltsev:/bin/bash
layton:x:1001:1003::/home/layton:/bin/sh
limiosil:x:1002:1004::/home/limiosil:/bin/sh

(Формат можно уточнить с помощью man 5 passwd.)

Пользователи могут состоять в группах, которые тоже имеют числовые идентификаторы. Группы перечислены в /etc/group:

myltsev:x:1001:
students:x:1005:loende,alexeyha,gareton,...

В группе myltsev с идентификатором 1001 состоят только те пользователи, у которых она указана как основная, а вот в группе students есть дополнительные участники.

Пользователь с идентификатором 0 (обычно имеет имя root) — суперпользователь, для которого не действуют правила разграничения доступа.

Атрибуты процессов

Real UID (RUID) — идентификатор пользователя, запустившего процесс. Можно получить с помощью getuid().

Effective UID (EUID) применяется для проверки прав доступа. Можно получить с помощью geteuid().

Биты доступа к файлам

$ ls -ld /home/luke
drwxr-x--- 4 luke luke 4096 Sep 13 22:23 /home/luke
$ ls -l /bin/passwd
-rwsr-xr-x 1 root root 59976 Feb  6 12:54 /bin/passwd

Согласно man 2 open:

r--------  S_IRUSR    00400 user has read permission
-w-------  S_IWUSR    00200 user has write permission
--x------  S_IXUSR    00100 user has execute permission
---r-----  S_IRGRP    00040 group has read permission
----w----  S_IWGRP    00020 group has write permission
-----x---  S_IXGRP    00010 group has execute permission
------r--  S_IROTH    00004 others have read permission
-------w-  S_IWOTH    00002 others have write permission
--------x  S_IXOTH    00001 others have execute permission
           S_ISUID  0004000 set-user-ID bit
           S_ISGID  0002000 set-group-ID bit (see inode(7)).
           S_ISVTX  0001000 sticky bit (see inode(7)).

У passwd установлен бит SUID (set-user-ID), поэтому при execve UID его владельца станет EUID процесса.