Следует ли избегать каких-либо односимвольных псевдонимов bash?

  • ненужная утечка информации; если какая-либо учетная запись или процесс скомпрометированы, злоумышленник может затем прочитать конфигурацию sudoers и использовать эту информацию для определения следующих целей (учетных записей, разрешенных программ,...)
  • ненужные мировые -читаемые файлы могут создавать условия для атак типа «отказ в обслуживании», например. Файлы sendmail и механизмы блокировкиhttps://securitytracker.com/id/1004368(мировые -читаемые файлы также могут быть открыты многими процессами; это может снизить производительность ввода-вывода в файле, что, вероятно, не имеет отношения к sudo, но может быть плохо для базы данных или демона ведения журнала )
  • .
  • неизвестные уязвимости, которые позволяют злоумышленнику сделать что-то действительно умное через какой-то почти забытый ioctlили глючный аудиоинтерфейс, который ненужный всем мир -читаемый файл дает им достаточно пальцев -для лазания
32
12.02.2021, 11:16
4 ответа

Чего следует избегать:

  • стандартные или общие команды с односимвольными именами:w(отображать активность зарегистрированных пользователей ),X(сервер системы X Window ),R(интерпретатор языка программирования R ),[(аналогично кtest)
  • встроенные функции вашей оболочки или обычных оболочек :[, ., :, -,r
  • ключевые слова оболочки :{, },!
  • ?и *подстановочные знаки
  • специальные символы в синтаксисе оболочки :`"$&();'#~|\<>, (также ^, %в некоторых оболочках ), SPC, TAB, NL (и другие пробелы с некоторыми оболочками)
  • лучше избегать -символов ASCII (, так как они имеют разную кодировку в зависимости от локали)
  • лучше избегать управляющих символов (рядом с уже упомянутыми выше TAB и NL ), так как их не так просто ввести, и в зависимости от контекста они не всегда видны или имеют разные представления. Только zshпозволит вам определить и использовать псевдоним для символа NUL.bashпозволяет вам определить псевдоним для^A(управляющего символа со значением байта 1 ), но явно не использовать его.

Для поиска команд с односимвольными именами:

  • bash:compgen -c | grep -x. | sort -u(также включает ключевые слова, предполагается, что имена команд не содержат символов новой строки)

  • zsh:type -m '?'(или type -pm '?', если вам не нужны функции/псевдонимы/встроенные модули/ключевые слова ).

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

    $ apt-file find -x '/s?bin/.$'
    coreutils: /usr/bin/[
    e-wrapper: /usr/bin/e
    python3-q-text-as-data: /usr/bin/q
    r-base-core: /usr/bin/R
    r-base-core: /usr/lib/R/bin/R
    r-cran-littler: /usr/bin/r
    r-cran-littler: /usr/lib/R/site-library/littler/bin/r
    wims: /var/lib/wims/public_html/bin/c
    xserver-xorg-core: /usr/bin/X
    
38
18.03.2021, 22:30

I'm curious if this should be avoided. I do not know of any conflicts.

Это не имеет большого значения для конфликтов, о которых вы еще не знаете.

Псевдонимы — это интерактивная конфигурация оболочки. Они не активны в сценариях. Если вы определяете псевдоним с тем же именем, что и у существующей программы, все это означает, что когда вы лично набираете его в оболочке, вы по умолчанию вызываете свой псевдоним, а не другую программу. Другие программы не увидят ваш псевдоним, так что конфликта нет.

Например, если вы не знаете команду Xили никогда не планируете вызывать ее непосредственно из оболочки, это не проблема, если вы определите псевдоним X. Когда другая программа, такая как startx/ xinit, вызывает X, они не увидят ваш псевдоним, поэтому конфликта не будет.

6
18.03.2021, 22:30

Обращение :«Мне любопытно, следует ли этого избегать».

Как описано в других ответах, не должно быть технических проблем, если команда, которую вы переопределяете с помощью псевдонима, не является чем-то, что вы собираетесь использовать.

Основное разочарование от использования подобных псевдонимов возникает, когда вы помогаете другу или подключаетесь по ssh к компьютеру, на который вы еще не скопировали свой.bashrc. Вся мышечная память, которую вы развили, заставляет вас чувствовать себя как рыба в воде. Я нахожу это настолько дезориентирующим, что стараюсь свести свои псевдонимы к минимуму.

16
18.03.2021, 22:30

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

Например:

  • использование r='rm -rf *'и t='ls -l *tar*', вероятно, очень плохая идея, даже если вы редко нажимаете не ту клавишу.
  • с использованием r='file *.png | grep RGB'и t='ls -l *tar*', вероятно, не проблема.

В более позднем случае, если вы наберете rвместо (рядом с клавиатурой и, таким образом, легко ошибиться набрав )t, вы просто получите вывод, который вам не нужен, и вы можете легко ввести правильный псевдоним. Однако в первом случае, если вы наберете rвместо t, вы нанесете нежелательный урон.

Таким образом, смысл в том, :если вы делаете однобуквенные псевдонимы -, используйте их только для чтения -только вещей (, а не для вещей, которые могут изменить данные таким образом, что это вызовет у вас проблемы, если бежать непреднамеренно)

5
18.03.2021, 22:30

Теги

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