[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

apache2+ikiwiki: проблема с suid wrapper



Поставил ikiwiki себе в home.

На враппер права установлены права с suid (как и положено):
-rwsr-sr-x 1 14249 Жнв 15 20:47 public_html/wiki/ikiwiki.cgi*
владелец и группа -- 1000

Редактирование не работает, выдаёт ошибку
Error: cannot write to /home/user/wiki/.ikiwiki/lockfile: Permission denied

Стал разбираться, почему-то враппер запускает вики-движок с правами www-data.

В генератор враппера (/usr/share/perl5/IkiWiki/Wrapper.pm) добавил:

fprintf(stderr, "before: uid=%i, euid=%i\\n", (int)getuid(),
(int)geteuid()); /*added by me*/

        if (setregid(getegid(), -1) != 0 &&
            setregid(getegid(), -1) != 0) {
                perror("failed to drop real gid");
                exit(1);
        }
        if (setreuid(geteuid(), -1) != 0 &&
            setreuid(geteuid(), -1) != 0) {
                perror("failed to drop real uid");
                exit(1);
        }

fprintf(stderr, "after: uid=%i, euid=%i\\n", (int)getuid(),
(int)geteuid()); /*added by me*/

Вот результат: /var/log/apache2/error.log:
[Wed Aug 15 20:47:44 2012] [error] [client 192.168.1.2] before:
uid=33, euid=33, ...
[Wed Aug 15 20:47:44 2012] [error] [client 192.168.1.2] after: uid=33,
euid=33, ...

В первой выдаче должно быть euid=1000, во второй -- всё по 1000.

У apache2 включены модули (из имеющих отношение): cgi, suexec, userdir.

Тот же код, взятый враппера, только suid на 33, запущен от 1000 (всё работает):
before: uid=1000, euid=33
after: uid=33, euid=33

А вот он запущен апачем:
[Wed Aug 15 21:09:39 2012] [error] [client 192.168.1.2] before: uid=33, euid=33
[Wed Aug 15 21:09:39 2012] [error] [client 192.168.1.2] after: uid=33, euid=33

Почему не работает suid из-под апача?

Reply to: