nixp.ru v3.0

20 октября 2017,
пятница,
20:55:12 MSK

DevOps с компанией «Флант»
Lexa написал 23 июля 2005 года в 11:12 (488 просмотров) Ведет себя неопределенно; открыл 3 темы в форуме, оставил 12 комментариев на сайте.

На досуге начал изучать системные библиотеки. Наклепал вот такой код:

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

int main (int argc, char**argv)

{

kvm_t* kd;

char errbuf[80];

struct kinfo_proc* proc;

int count, i;

char* tmpstr;

kd = kvm_openfiles(NULL, NULL, NULL, O_RDONLY, errbuf);

if( kd == NULL )

{

printf(«Error: %s\n», errbuf);

}

proc = kvm_getprocs(kd, KERN_PROC_PROC, 0, &count);

printf(«Count: %i\n», count);

char *tmp;

tmp = malloc(sizeof(char)*1000);

for (i=0; i

{

if (kvm_getargv(kd, &proc, 1000) != NULL)

{

strcpy(tmp, *kvm_getargv(kd, &proc, 1000));

printf(«%s, pid=%i, user=%s\n», tmp, proc.ki_pid, user_from_uid(proc.ki_uid));

}

else

{

// printf(«NULL\n»);

}

}

return 0;

}

Запускается он только под рутом. Под обычным пользователем говорит нет доступа к /dev/mem. Как заставить это работать?

metal

Попробуй chmod 666 /dev/mem

Feuerbach
metal
Попробуй chmod 666 /dev/mem

… и подумай, к чему это может привести.

metal

Ну это уже следующий вопрос:) Это тупое решение, если подумать можно сделать тоже самое, но более правильно

Steck

Уж лучше suid поставить на саму прогу

Хотя тоже не секурно