chroot + execvp + удар

Функция .draw() не делает ничего, о чем вы не говорите. Проще говоря, вы можете запустить много разных событий, а затем вызвать их все с помощью .draw(). Как и предполагал Zim84, вы можете искать в 2 разных столбцах, но в первом случае вы не сделаете .draw(), НО вы бы вызвали .draw() при втором поиске.

Итак .. да, делать что-то вроде

table.column(2).search("male"); table.column(3).search("asia").draw();

будет работать нормально .

8
задан Jahid 17 December 2015 в 16:07
поделиться

5 ответов

Как Jason говорит C, оболочка exec'ed не является интерактивной.

Его решение вынудит оболочку быть интерактивной, если это примет -i чтобы означать что (и удар делает):

char *shellargv[] = { SHELL, "-i", "-login", ... };
execvp(SHELL, shellargv);

Я хочу добавить, тем не менее, что традиционно оболочка будет действовать как оболочка входа в систему если ARGV[0] начинается с тире.

char *shellargv[] = {"-"SHELL, "-i", ...};
execvp(SHELL, shellargv);

Обычно, тем не менее, Bash автоматически обнаружит, должен ли он работать в интерактивном режиме или нет. Его отказ к в Вашем случае может быть из-за пропавших без вести /dev/* узлы.

4
ответ дан 5 December 2019 в 17:42
поделиться

Оболочка не является интерактивной. Попытайтесь добавить-i к списку аргументов.

2
ответ дан 5 December 2019 в 17:42
поделиться

Я могу отождествить с желанием сделать это самостоятельно, но если Вы уже не имеете, проверяете тюрьму chroot проект и jailkit для некоторого понижения инструментов для создания оболочки тюрьмы.

2
ответ дан 5 December 2019 в 17:42
поделиться

К тому времени, когда Ваш пользователь входит в систему, и их оболочка пытается получить этот файл, она работает под их UID. chroot() системный вызов только применим корнем - необходимо будет быть более умными, чем это.

Кроме того, chrooting к корневому каталогу пользователя сделает их оболочку бесполезной, как (если у них не будет большого количества материала там), у них не будет доступа ни к каким двоичным файлам. Полезные вещи как ls, например.

1
ответ дан 5 December 2019 в 17:42
поделиться

Спасибо за Вашу справку, парней,

Я понял это:

Я забыл к setuid ()/setgid (), chroot (), setuid ()/setgid () назад, затем передайте надлежащую среду с помощью execve ()

О, и, если я не передаю аргумента удару, он получит ~/.bashrc

Если я передаю "-l", если получит/etc/profile

Удачи!

1
ответ дан 5 December 2019 в 17:42
поделиться
Другие вопросы по тегам:

Похожие вопросы: