LINUX.ORG.RU
решено ФорумAdmin

SUID and other

 , , ,


1

1
echo "#!/bin/bash\nwhoami"
chown user test
chmod 4777 test
./test

По идее, должно писать пользователя-владельца, но пишет текущего. И смена прав как-то не работает. Что я делаю не так?


со скриптами этот трюк ЕМНИП не работает - права берутся от интерпретатора, то есть от bash

Pinkbyte ★★★★★ ()
Ответ на: комментарий от drake

хм... то есть если это будет скомпилированый бинарник, в котором будет системный вызов, то все будет ок?

uSide ()
Ответ на: комментарий от drake

а нет иного пути? мне нужно без открытия нового терминала исполнить скриптовый файл под именем другого пользователя.

uSide ()
Ответ на: комментарий от uSide

Чем sudo не подошел?

Ну и можно небольшой бинарник-обертку написать. Примеров в Сети навалом.

drake ()
Ответ на: комментарий от Pinkbyte

Если я правильно понял, то вот этот код отвечает за эту фичу:

void setup_new_exec(struct linux_binprm * bprm)
{
	<...>
	if (uid_eq(current_euid(), current_uid()) && gid_eq(current_egid(), current_gid()))
		set_dumpable(current->mm, SUID_DUMPABLE_ENABLED);
	else
		set_dumpable(current->mm, suid_dumpable);
	
	<...>
	
	/* install the new credentials */
	if (!uid_eq(bprm->cred->uid, current_euid()) ||
	    !gid_eq(bprm->cred->gid, current_egid())) {
	    <...>
	} else {
		<...>
		if (bprm->interp_flags & BINPRM_FLAGS_ENFORCE_NONDUMP)
			set_dumpable(current->mm, suid_dumpable);
	}
}

http://git.kernel.org/?p=linux/kernel/git/torvalds/linux.git;a=blob;f=fs/exec...

// Кастануть бы разбирающихся в коде ядра. =(

drake ()

для скриптов используют суидный бинарный враппер. например как тут:

_http://blog.bigsmoke.us/2011/02/02/executing-system-commands-from-php-with-suid-executable

prizident ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.