Найдите каталог и запустите в нем исполняемый файл

Мне нужно найти каталог с именем «A», а затем запустить находящийся в нем исполняемый файл с именем «B», который принимает путь в качестве аргумента и имеет строку с execl() :

    execl("./C","C",path,(char*)0);
    perror("Exec failed");

где C находится в «A» и имеет установленный бит suid.

. Я подумал о чем-то вроде:

    find -name A -execdir {}/B path \

Однако я получаю следующее:

    Exec failed: Permission denied

Что случилось ? Запуск B из A не дает мне ошибок.

Извините, если это глупый вопрос, я действительно новичок в сценарии bash. Любая помощь приветствуется, большое спасибо.


person cifz    schedule 02.09.2012    source источник


Ответы (1)


Когда вы запускаете B с помощью этой команды find, текущим каталогом является каталог, содержащий A (т. е. родительский каталог A), а не A.

Вы получите правильный каталог, если запустите find -path '*/A/B' -execdir {} \;.

Это может быть или не быть правильным способом решения вашей реальной проблемы. В этом примере B не служит никакой цели, поэтому трудно догадаться, в чем проблема реального мира. Вы рассматривали sudo?

person Gilles 'SO- stop being evil'    schedule 02.09.2012