перезаписать $PATH по умолчанию
Я пытаюсь заблокировать обычных пользователей при установке Raspbian. я буду использоватьrbash
для этого.
Я хочу отредактировать файл PATH, чтобы только~/bin
файлы могут быть выполнены.
я избавился от/etc/profile/
:
if [ "`id -u`" -eq 0 ]; then
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
else
PATH=""
fi
export PATH
я избавился от/etc/login.defs
:
# cat /etc/login.defs | grep PATH=
ENV_SUPATH PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
ENV_PATH PATH=""
The /etc/environment
файл пуст:
~ # cat /etc/environment
~ #
Файл локального пользователя содержит только следующее:
$ cat .profile
# if running bash
if [ -n "$BASH_VERSION" ]; then
# include .bashrc if it exists
if [ -f "$HOME/.bashrc" ]; then
. "$HOME/.bashrc"
fi
fi
# set PATH so it includes user's private bin if it exists
if [ -d "$HOME/bin" ] ; then
PATH="$HOME/bin"
fi
Это отлично работает при запускеssh user@host
:
$ free
-rbash: free: command not found
$ uname
-rbash: uname: command not found
$ echo $PATH
/home/user/bin
Однако при запускеssh -t user@host bash --noprofile
.profile
не выполняется, и я все равно получаю доступ к полностью работающему $PATH:
$ echo $PATH
/usr/local/bin:/usr/bin:/bin:/usr/games
$ uname
Linux
Что мне здесь не хватает? Где еще находится$PATH
файл определен?
1 ответ
Он устанавливается самим sshd:
$ strings /usr/sbin/sshd | grep games
/usr/local/bin:/usr/bin:/bin:/usr/games
Вman ssh
подENVIRONMENT
там написано:
ssh will normally set the following environment variables:
(...)
PATH Set to the default PATH, as specified when compiling ssh.
Чтобы запретить sshd устанавливать для PATH значение по умолчанию.
PermitUserEnvironment yes
в /etc/ssh/sshd_config и установите новое значение PATH, например, в ~/.ssh/environment
PATH=~/bin
И перезапустите службу SSH:
sudo service ssh restart
Кстати, вы можете получить всю эту информацию отman sshd_config
.