2012-08-19 3 views
0

Я развиваюсь в C++ на NetBeans 6.9 на Ubuntu 11.04. Я делаю вызов system(), который я бы назвал пользователем «peter», а не root. Я понимаю, чтоНастройка UID для пользователя, отличного от корня в C++

setuid(0); 

устанавливает пользователя на root, но как установить пользователя на peter?

Thanks, Peter.

+2

"peter" не является пользователем. Это строка, связанная с пользователем. Пользователи идентифицируются по номеру. Что вам нужно сделать, так это выяснить, какой идентификатор пользователя имеет связанную с ним строку «peter». 'getpwnam' поможет вам в этом. –

ответ

2

Возможно, вы захотите найти файл паролей для правильного идентификатора пользователя через, например. getpwnam(). Что-то вроде:

// look up peter's uid 
uid_t peter_uid=getpwnam("peter")->pw_uid; 

// Become peter 
setuid(peter_uid); 
seteuid(peter_uid);