кажется, у меня есть некоторые проблемы с пониманием семантики бита SUID, возможно, кто-то может помочь мне прояснить ситуацию.
Мое понимание семантики бита SUID следующее: когда я устанавливаю бит SUID с файлом, файл будет выполняться как владелец файла, а не как вызывающий файл. Итак, чтобы проверить это поведение, я написал следующий скрипт на Python:
#!/usr/bin/python3 -O
import os
def main():
print('Real UserID: %d' % os.getuid())
print('Effective UserID: %d' % os.geteuid())
if __name__ == '__main__':
main()
После этого я создал пользователя с именем «testuser» с соответствующей группой «testuser» и настроил права доступа к файлам (файл chown testuser, файл chgrp testuser, файл chmod u+s,g+x). Затем я добавил своего основного пользователя в группу «testuser», чтобы я мог выполнять файл как член группы. После всего этого права доступа к файлам выглядели так:
-rwsr-xr-- 1 testuser testuser 168 2011-04-02 13:35 procred.py*
Итак, когда я вхожу в систему как тестовый пользователь, скрипт выдает вывод:
Real UserID: 1001
Effective UserID: 1001
... и когда я запускаю скрипт как мой основной пользователь, скрипт выводит:
Real UserID: 1000
Effective UserID: 1000
Теперь, насколько я понимаю, сценарий должен был работать как пользователь с uid 1001 (владелец файла) в последнем исполнении. Я неправильно понимаю всю концепцию или в чем моя ошибка?