Решено: setuid или выполнить команду от другого пользователя

Модератор: Модераторы разделов

Аватара пользователя
LuckyStr
Сообщения: 159
ОС: Fedora

Решено: setuid или выполнить команду от другого пользователя

Сообщение LuckyStr »

Код: Выделить всё

#include <iostream>
using namespace std;
#include <stdlib.h>
#include <sys/types.h>
#include <unistd.h>
#include <stdio.h>


int main() {

        pid_t result = fork();

    if (result==-1)   {
             cout<<"error fork()"<<endl;
         return 1;
                 }

    if (result==0)
         {
           int status=setuid(501);

             if (status>0)
               {
                          sleep(20);
                          system("date >/media/disk/log");
                }

         }
    return 0;
}

но /media/disk/log - пустой.
права на /media/disk и /media/disk/log - 0777.
пытался запускать и под рутом и под самим 501-ым.
Это наш химический дом для печальных жителей Земли!
Спасибо сказали:
Аватара пользователя
LuckyStr
Сообщения: 159
ОС: Fedora

Re: Решено: setuid или выполнить команду от другого пользователя

Сообщение LuckyStr »

LuckyStr писал(а):
24.08.2009 02:20

Код: Выделить всё

#include <iostream>
using namespace std;
#include <stdlib.h>
#include <sys/types.h>
#include <unistd.h>
#include <stdio.h>


int main() {

        pid_t result = fork();

    if (result==-1)   {
             cout<<"error fork()"<<endl;
         return 1;
                 }

    if (result==0)
         {
           int status=setuid(501);

             if (status>0)
               {
                          sleep(20);
                          system("date >/media/disk/log");
                }

         }
    return 0;
}

но /media/disk/log - пустой.
права на /media/disk и /media/disk/log - 0777.
пытался запускать и под рутом и под самим 501-ым.

ответ: я - дурак, setuid в случае успешного выполнения возвращает 0
Это наш химический дом для печальных жителей Земли!
Спасибо сказали: