вопрос о правах доступа.
язык СИ.
ОС UNIX.
Пытаюсь написать прогрмму, которая должна
корректно работать с правами доступа к файлам (ftp-сервер).
Не получается, и не могу понять почему.
краткое содержание:
//--- родительский процесс (root) ---
pid=fork();
if(pid==0){
//--- "дерутизация" ---
pwd=getpwnam(user);
gid=pwd->pw_gid;
uid=pwd->pw_uid;
n=setgid(gid);
n=setuid(uid);
//--- здесь тестовая распечатка ---
//--- uid, gid, euid, egid - всё как ожидалось (user) ---
fp=fopen(file,"r");
//--- ожидал, что файл будет доступен или недоступен
// в соответствии с правами user ---
//--- обработка файла ---
exit(0);
}
Вопреки ожиданиям, программа работает так:
исходный родительский процесс:
uid=0; gid=0
процесс после форк и дерутизации:
uid=1002; gid=1002
euid=1002; egid=1002
Варианты файла:
файл: uid=1004; gid=1004 - работает как ожидалось, т. е. на правах других пользователей.
файл: uid=1001; gid=0 - работает как если бы процесс имел gid=0, т. е. на правах группы.
Кто знает прошу ответить.
Ответ на:
комментарий
от ananas
Ответ на:
комментарий
от ananas
Ответ на:
комментарий
от xydo
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.
Похожие темы
- Форум Понижение прав демона (2011)
- Форум двунаправленный канал через ssh на perl (2003)
- Форум Через XDM не перезапускается а от рута всё пучком :( (2004)
- Форум Auditd setuid/setgid (2013)
- Форум Exim4, Яндекс.Почта для домена, is undeliverable: Unrouteable address (2018)
- Форум exim4 Unrouteable address (2009)
- Форум Ошибка 403 служба TFTP, SELinux, как предоставить доступ? (2024)
- Форум Права доступа (2012)
- Форум Права доступа (2011)
- Форум права доступа (2011)