У меня есть программа setuid, которая выводит файл таким образом:

#include <stdlib.h>
#include <stdio.h>
int main(void)
{
        system("ls /challenge/binary/binary1/.passwd");
        return 0;
}

Что мне нужно, это заставить программу раскрывать содержимое файла, а не просто указывать его имя. Поэтому я попытался создать псевдоним, чтобы изменить поведение ls следующим образом:

alias ls='cat'

но все же, это не работает. Не могли бы вы указать мне правильное направление!

2 ответа2

3

Псевдонимы живут только в оболочке, которая их определила, и system запускает новую оболочку. Эта оболочка не будет читать ~/.bashrc или другие файлы, в которых обычно определяются псевдонимы: только интерактивные оболочки. Некоторые оболочки, но не все, читают другой файл, но существует независимый от оболочки способ использования этого.

Команда поиска команд Shell пытается следующие элементы в следующем порядке:

  • Псевдонимов - нет.
  • Функции - нет, по той же причине.
  • Встроенных - нет.
  • Команды в PATH - это должно быть по умолчанию.

Поэтому постарайтесь убедиться, что поиск ls в $PATH вызовет программу cat .

0

Измените ls на cat .

ls перечисляет каталоги, файлы не отображаются. cat делает это.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .