Changer le chemin par défaut pour quand je me connecte au serveur CentOS?

12

J'ai un serveur Web CentOS 5.7 et je souhaite modifier l'emplacement par défaut dans lequel j'atterris lors de la connexion via SSH.

Actuellement, j'atterris /home/usernameet je veux atterrir à la /homeplace.

Je suis entré en tant que root et ajouté PermitUserEnvironment yesà /etc/.ssh/sshd_config- et si je comprends bien, cela balaie ensuite le propre sshdossier de l'utilisateur pour un environmentfichier. Ce dont je ne suis pas sûr, c'est exactement ce que j'ajoute à ce fichier d'environnement, car export path=$PATH:$HOMEcela ne semble pas fonctionner, ni ici ni dans mes fichiers .bashrc ou .bash_profile (ce qui, si je comprends bien, ne ferait aucune différence de toute façon comme une connexion SSH est un shell non interactif?).

Merci d'avance.

Ben
la source

Réponses:

14

Si vous utilisez PAM pour l'authentification, ce qui est probablement le plus probable. En tant que tête de racine dans /etc/passwd.

Là, vous devriez voir votre nom d'utilisateur et votre chemin! Changez-le là et vous êtes chez vous gratuitement!

EDIT - Désolé, je viens de penser que vous ne vouliez peut-être pas modifier votre dossier de départ. Dans ce cas, ajoutez simplement:

cd /home

Au bas de votre .bashrcdossier!

stevie I
la source
4
Il est préférable d'utiliser usermodlors du changement de tout ce qui concerne un utilisateur qui écrit /etc/passwd, pour éviter les erreurs: usermod -d /home user.
laebshade
1
Ce commentaire secondaire .bashrcm'a fait facepalm. C'est tellement simple et évident, j'aurais aimé y avoir pensé! Bon travail. Gloire!
cwallenpoole
4

La chose à retenir est qu'elle ~/.ssh/environmentest lue avant qu'un shell ou une sshcommande ne soit généré, donc (par exemple) ni l'exportation ni $ PATH n'ont de sens. Vous pouvez uniquement définir des variables d'environnement (pas exécuter des commandes shell générales) ici.

Si vous récupérez l'environnement pour un shell ssh non interactif, puis modifiez cela, vous devriez obtenir ce que vous voulez pour les commandes non interactives. Par exemple:

$ ssh mylogin@myserver env

vous donnera ce avec quoi le ssh commence sur votre serveur. Si vous écrivez votre ~/.ssh/environmentfichier sous:

PATH=/usr/local/bin

et réexécutez ce qui précède, vous devriez obtenir "bash: env: command not found". Bien!

Maintenant, construisez votre chemin explicitement, basé sur ce qu'il était à la base de votre système sshd(c'est-à-dire le premier appel "ssh .... env"), par exemple (en ajoutant /usr/local/binen tête):

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

Notez également qu'il n'est pas utile d'essayer de définir le CWD dans ~/.ssh/rc(qui est exécuté après la ~/.ssh/environmentlecture, mais avant votre sshshell ou votre commande) car votre shell démarrera (par défaut) dans votre chemin d'accueil.

Yarko
la source
double +1, je cherchais partout pour cette information
spinup