Запретите идущие на компромисс псевдонимы и функции; CD псевдонима ='rm-rf ~'

Позволяет говорят, что кто-то сидит позади моего ноутбука в течение секунды и выполнений:

alias cd='Ha Ha, Got You :))'

или мы запускаем неизвестное программное обеспечение/сценарий/и т.д., и оно добавляет что-то к ~/.bashrc. как:

alias sort='rm -rf ~'

Это только примеры aliases; Как Вы знаете, эти вещи также могут быть сделаны с помощью функций:

 cd(){ echo "Removing everything you've got :D"; }

Эти ситуации являются просто мнимыми примерами, считают что-либо подобным.

Что относительно маленького сценария?

sudo -n ls &>/dev/null
if [ "$?" -eq "0" ]
 then
  sudo "Some dangerous command"
 else
  cd $1
fi

Затем alias cd="/home/user/.config/gtk/.cd.sh".

Для команд, которые были, работал в ударе, мы можем просто закрыть и вновь открыть наш терминал, но что относительно тех, которые установили в файлах запуска, мы не можем проверить файлы или список псевдонимов/функций каждый раз, когда мы выполняем терминал.

2
задан 29 April 2017 в 18:44

2 ответа

Введение

Конфигурационные файлы Bash

Bash имеет набор конфигурации (иначе запуск) файлы, это использует эти файлы для установки определенной среды для каждого пользователя.

Некоторые из этих файлов расположены в /etc, один из них, что я знаю, /etc/profile, это - глобальный конфигурационный файл, и его настройки будут применены во все сессии, другой /etc/bash.bashrc; Мы не должны работать вокруг этих файлов из-за их местоположения, они уже защищены и только базируются, имеет права отредактировать их.

Очень важный каталог, который может помочь нам много: /etc/skel; Каждый раз, когда Вы создаете нового пользователя с корневым каталогом, файлы в рамках этого каталога будут использоваться в качестве каркаса для корневого каталога Вашего нового пользователя.

ls -a /etc/skel

.bash_logout  .bashrc  .profile

Мы можем также использовать dpkg найти об этих файлах:

$ dpkg -L bash | grep etc

/etc/skel/.bashrc
/etc/skel/.bash_logout
/etc/skel/.profile
/etc/bash.bashrc

мы видим, что они все установлены bash.

Как вещь работает в ударе

Псевдоним или функция могут быть установлены в любом из этих файлов, таким образом позвольте, видят, как эти файлы будут использоваться bash.

От bash страница справочника:

Когда удар вызывается как интерактивная оболочка входа в систему, или как неинтерактивная оболочка с - опция входа в систему, он сначала читает и выполняет команды из файла/etc/profile, если тот файл существует. После чтения того файла это ищет ~/.bash_profile, ~/.bash_login, и ~/.profile, в том порядке, и чтениях и командах exe‐cutes от первой, которая существует и читаема.

таким образом, порядок: ~/.bash_profile > ~/.bash_login > ~/.profile

Когда оболочка входа в систему выходит, удар читает и выполняет команды из файла ~/.bash_logout, если это существует.

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

Когда интерактивная оболочка, которая не является оболочкой входа в систему, запускается, удар читает и выполняет команды от/etc/bash.bashrc и ~/.bashrc, если эти файлы существуют.

таким образом, самый важный fiel ~/.bashrc, потому что почти 90% оболочек удара, которые мы выполняем, находятся в интерактивном и режиме без входов в систему. и если мы взглянули на этот файл, мы видим, что он будет искать другой названный файл ~/.bash_aliases, если это смогло определить местоположение его, то это будет source тот файл также.


Начните заботиться об этих файлах

В первую очередь, мы должны переместиться ~/.profile кому: ~/.bash_profile иначе это не делает вопросов, если мы защищаем ~/.profile файл, кто-то может создать a ~/.bash_profile и это будет переопределять наши конфигурации, таким образом:

mv ~/.profile ~/.bash_profile

После этого, если Вы не используете a ~/.bash_aliases файл затем создает его, снова как вышеупомянутый, кто-то может просто создать этот файл и существует шанс, что он может измениться или псевдонимы в нем.

touch ~/.bash_aliases

Наконец используйте chattr защищать эти файлы от редактирования и удаления.

От chattr страница справочника:

Файл со 'мной' приписывает, не может быть изменен: это не может быть удалено или переименовано, никакая ссылка не может быть создана в этот файл, и никакие данные не могут быть записаны в файл. Только суперпользователь или процесс, обладающий возможностью CAP_LINUX_IMMUTABLE, могут установить или очистить этот атрибут.

sudo chattr +i ~/.bash_profile ~/.bashrc ~/.bash_aliases

Мы сделаны, не забывайте, что каждый раз, когда Вы хотите отредактировать эти файлы, необходимо сначала удалить -i атрибут.

Сбросьте все без терминала завершения/повторного открытия

Другое обходное решение, создавая файл:

sudo touch /usr/local/bin/reload_aliases

Поместите свои псевдонимы там:

unalias -a
alias x='...'
alias b='...'

Удостоверьтесь, что никто не может записать в тот файл:

sudo chmod a=r,x /usr/local/bin/reload_aliases

Теперь каждый раз Вы хотите перезагрузить все выполненное:

/usr/local/bin/reload_aliases

Откат

И если Вы когда-нибудь передумали:

sudo chattr -i ~/.bash_profile ~/.bashrc ~/.bash_aliases
mv ~/.bash_profile ~/.profile
rm ~/.bash_aliases # if you don't use it
2
ответ дан 2 December 2019 в 03:40

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

Попытка быть достаточно умным для восстановления с плохих методов никогда не работала прежде.

0
ответ дан 2 December 2019 в 03:40

Другие вопросы по тегам:

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