Змінити шлях за замовчуванням для, коли я входжу SSH на сервер CentOS?


12

У мене веб-сервер CentOS 5.7, і я хочу змінити місце за замовчуванням, в яке я прибуваю, під час з'єднання за допомогою SSH.

В даний час я приземлююся /home/username, і /homeзамість цього хочу приземлитися .

Я ввійшов як root і додав PermitUserEnvironment yesдо /etc/.ssh/sshd_config- і, як я це розумію, тоді підмітає власну sshпапку користувача для environmentфайлу. У чому я не впевнений, це саме те, що я додаю до цього файлу середовища, оскільки export path=$PATH:$HOME, здається, не працює ні тут, ні в моїх .bashrc або .bash_profile файлах (які, наскільки я розумію, не мали б значення. так чи інакше, як SSH-з'єднання - неінтерактивна оболонка?).

Заздалегідь спасибі.

Відповіді:


14

Якщо ви використовуєте PAM для аутентифікації, це, мабуть, найімовірніше. Як голова кореня в /etc/passwd.

Там ви повинні побачити своє ім’я користувача та шлях! Змініть його там, і ви вдома вільні!

EDIT - Вибачте, мені щойно спало на думку, що ви, можливо, не хотіли змінювати домашню папку. У цьому випадку просто додайте:

cd /home

Внизу вашого .bashrcфайлу!


4
Це краще використовувати , usermodколи міняти що - або в відношенні користувача , який пише для того /etc/passwd, щоб запобігти помилкам: usermod -d /home user.
маячка

1
Цей сторонній коментар про .bashrcмене зробив facepalm. Це так просто і очевидно, як би я не думав про це! Хороша робота. Кудо!
cwallenpoole

4

Слід пам’ятати, що ~/.ssh/environmentчитається перед sshпородженням оболонки чи команди, тому (наприклад) ні експорт, ні $ PATH не мають сенсу. Тут ви можете встановити лише змінні середовища (не виконувати загальні команди оболонки).

Якщо ви захопите середовище для неінтерактивної оболонки ssh, то змініть це, ви повинні отримати те, що вам потрібно для неінтерактивних команд. Наприклад:

$ ssh mylogin@myserver env

дасть вам те, з чого починається ssh на вашому сервері. Якщо ви пишете свій ~/.ssh/environmentфайл так:

PATH=/usr/local/bin

і повторіть вище, ви повинні отримати "bash: env: команда не знайдена". Добре!

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

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

Зауважте також, що не корисно намагатися встановити CWD ~/.ssh/rc(який запускається після ~/.ssh/environmentзчитування, але перед тим, як ваша sshоболонка або команда), як оболонка почнеться (за замовчуванням) у вашому домашньому шляху.


подвійний +1, я всюди шукав цю інформацію
спінуп
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.