Здравствуйте, гость ( Вход | Регистрация )
oleg_2 | Дата 10.10.2009, 17:35 |
Ответ (в неявном виде) нашелся на форуме http://www.linux.org.ru/ В разделе программирование и разработка ПО под Linux/Unix в теме core dump - не сохраняется корка (stpg). Правильный ответ: Процессу придан список дополнительных групп пользователей. Вызов n=setgid(gid); устанавливает группу процесса, но список остается. Помогло применение функции k=setgroups(0,gr_list); который способен опустошить этот список. Теперь работает согласно замыслу. user'а тоже надо снабдить таким списком (если есть). Об этом я сразу не подумал. Ключ к решению есть. Спасибо. |
|
oleg_2 | Дата 7.10.2009, 1:01 |
вопрос о правах доступа. язык СИ. ОС 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, т. е. на правах группы. Кто знает прошу ответить. |
|
Просмотр темы полностью (откроется в новом окне) | |
Текстовая версия | Сейчас: 19.4.2024, 7:59 |