2013-11-01 2 views
1

при выполнении этого:УИП (0) дает EPERM на Mac OS X 10.9

err = setuid(0); 
if (err < 0) { 
    fprintf(stderr, "return value: %d \n", err); 
    fprintf(stderr, "error code: %d \n", errno); 
} 

Я получаю этот выход:

return value: -1 
error code: 1 

Код ошибки 1 означает ошибку EPERM. Любые идеи относительно того, как я должен это исправить?

ответ

0

Вы не можете использовать setuid() для пользователя, не являющегося пользователем root.

Если вы хотите запустить приложение с правами администратора, используйте Authorization Services или sudo, если это инструмент командной строки.

+0

Он работал отлично на менее чем 10,9, есть ли какие-либо конкретные изменения в 10.9, что ограничивает его от этого. –

0

SETUID(2) Man Pages

Если пользователь не является суперпользователем, или UID указано не реальный, эффективный ID, или сохранить ID, эти функции возвращают -1.

setuid(0); будет работать только от пользователя root (SU).

Код ошибки: 1

#define EPERM  1  /* Operation not permitted */ 

 Смежные вопросы

  • Нет связанных вопросов^_^