Прежде всего, спросите себя, что именно определяет логин «с правами root». AFAICT существует 2 основных решения.
Путь старой школы, где sysadmins создают несколько учетных записей с uid 0, которые я - и я, конечно, не одинок в этом - считайте, что это кошмар. В этом случае вы можете проверить всех пользователей в своем списке, используя posix_getpwnam и посмотреть, соответствует ли их uid 0.
Следующий фрагмент кода делает только что $ привилегированный будет содержать пользователь с привилегиями суперпользователя:
$logins = array('root', 'john', 'guest', 'foo');
$privileged = array();
foreach($logins as $login) {
$userInfo = posix_getpwnam($login);
if ($userInfo !== FALSE) {
if ($userInfo['uid'] == 0) {
$privileged[] = $login;
}
}
}
Другого (и имхо только вменяемый) способом сделать это, чтобы добавить все пользователь с корнем/административным привилегии для определенной группы (wheel или admin уже используются в разных дистрибутивах Linux, выясните, какой из них работает для вас). Этот сценарий еще проще, поскольку вы можете использовать posix_getgrnam для извлечения всех членов в определенной группе.
Следующий фрагмент кода будет соответствовать массиву предоставленных вами логинов и узнать, кто является членом с определенными привилегиями, снова $ privileged будет содержать результат (т. Е. Пользователей в вашем списке, которые являются членами указанной вами группы):
$logins = array('root', 'john', 'guest', 'foo');
$privileged = array();
$groupInfo = posix_getgrnam('admins');
if ($groupInfo !== FALSE) {
$privileged = array_intersect($logins, $groupInfo['members']);
}
Что именно вы пытаетесь сделать? – thkala
Возможно, exec ("su -l login <". $ Password)? –
Вы можете попробовать посмотреть, присутствует ли команда «whoami». – Knubo