Debian
覆蓋預設 $PATH
我試圖在 Raspbian 安裝中鎖定普通使用者。我會用
rbash
它。我想編輯 PATH 文件,以便只能
~/bin
執行文件。我已經剝離
$PATH
:/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
我已經剝離
$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=""
該
/etc/environment
文件為空:~ # cat /etc/environment ~ #
本地使用者的
.profile
文件只包含以下內容:$ 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
定義?
它由 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 中並在 ~/.ssh/environment 中設置 PATH 的新值
PATH=~/bin
並重啟 SSH 服務:
sudo service ssh restart
順便說一句,您可以從
man sshd_config
.