SSH запускает оболочку входа в систему, как указано на его справочной странице:
If a command is specified, it is executed on the remote host instead of a login shell.
Вы можете проверить это в Bash с помощью
shopt login_shell
, который покажет, работает ли он как оболочка для входа в систему.
Поведение Bash при удаленном запуске, будь то в качестве оболочки входа в систему или иным образом, описано в цитируемом вами разделе. Поведение, с которым вы его сравниваете, — это поведение интерактивных оболочек , а удаленная оболочка добавляет обработку .bashrc
поверх поведения интерактивной оболочки входа в систему.
Обратите внимание, что системы Ubuntu обычно имеют сценарий .bash_profile
, который имеет приоритет над .profile
, и они обычно имеют исходный код .bash_profile
.bashrc
в любом случае...
Firejail содержит способ ограничения пользовательских сеансов, но он, вероятно, слишком груб для того, что вы хотите сделать.
Откройте файл /etc/firejail/login.users
и укажите параметры песочницы для каждого пользователя, например:
username: --noprofile --private-tmp --private-dev --caps.drop=all --seccomp=!chroot
Затем измените пользовательскую оболочку на /usr/bin/firejail
в /etc/passwd
. Таким образом, весь пользовательский сеанс выполняется в одной и той же песочнице Firejail. Обратите внимание, что обычно вы не сможете запускать sudo и друзей в этом сеансе, поэтому будьте осторожны, чтобы не заблокировать себя.
Исходную документацию см. в man firejail -login .
Если один -размер -подходит -для всех песочниц — это не то, что вам нужно, лучше проверьте соответствующие системы обязательного контроля доступа (MAC ), такие как AppArmor, SELinux или Tomoyo.