Изменить путь по умолчанию, когда я использую SSH на сервере CentOS?

12

У меня есть веб-сервер CentOS 5.7, и я хочу изменить место по умолчанию, к которому я подключаюсь при подключении по SSH.

В настоящее время я приземляюсь в /home/username, и я хочу приземлиться /homeвместо этого.

Я пошел в качестве корня и добавил PermitUserEnvironment yesк /etc/.ssh/sshd_config- и , как я понимаю, это то подметает собственную пользователя sshпапку для environmentфайла. В чем я не уверен, так это в том, что именно я добавляю в этот файл среды, поскольку export path=$PATH:$HOME, похоже , он не работает ни здесь, ни в моих файлах .bashrc или .bash_profile (что, как я понимаю, не будет иметь значения во всяком случае, как соединение SSH является неинтерактивной оболочкой?).

Заранее спасибо.

Бен
источник

Ответы:

14

Если вы используете PAM для аутентификации, что, вероятно, наиболее вероятно. Как корень головы в /etc/passwd.

Там вы должны увидеть свое имя пользователя и путь! Измените это там, и вы дома бесплатно!

РЕДАКТИРОВАТЬ - Извините, мне пришло в голову, что вы, возможно, не хотите менять свою домашнюю папку. В этом случае просто добавьте:

cd /home

В конец вашего .bashrcфайла!

Стиви я
источник
4
Это лучше использовать , usermodкогда менять что - либо в отношении пользователя , который пишет для того /etc/passwd, чтобы предотвратить ошибки: usermod -d /home user.
laebshade
1
Тот побочный комментарий о .bashrcсделанном мне лицевой маске. Это так просто и очевидно, если бы я думал об этом! Молодец. Престижность!
cwallenpoole
4

Следует помнить, что они ~/.ssh/environmentчитаются до появления оболочки или sshкоманды, поэтому (например) ни экспорт, ни $ PATH не имеют смысла. Вы можете установить здесь только переменные окружения (не запускать общие команды оболочки).

Если вы захватили среду для неинтерактивной оболочки ssh, а затем измените ее, вы должны получить то, что хотите для неинтерактивных команд. Например:

$ ssh mylogin@myserver env

даст вам, с чего начинается SSH на вашем сервере. Если вы напишите свой ~/.ssh/environmentфайл как:

PATH=/usr/local/bin

и снова запустите выше, вы должны получить «bash: env: command not found». Хорошо!

Теперь создайте свой путь явно, основываясь на том, что он был в основе от вашей системы sshd(например, первый вызов "ssh .... env"), например (добавление /usr/local/binв начале ):

PATH=/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin

Также обратите внимание, что не стоит пытаться установить CWD в ~/.ssh/rc(который запускается после ~/.ssh/environmentчтения, но перед вашей sshоболочкой или командой), так как ваша оболочка запустится (по умолчанию) в вашем домашнем пути.

Yarko
источник
двойной +1, я искал
раскрутка