Aucun chemin ou historique de commande via SSH lorsque vous êtes connecté au serveur en tant que personne autre que root

4

Lorsque je SSH sur un serveur, autre que la racine, il affiche uniquement un $ et non le chemin. De plus, cela ne me permettra pas d’appuyer sur la touche haut et de voir l’historique des commandes lorsque je n’ai pas accès à SSH en tant que root. Comment donner les options mentionnées aux autres utilisateurs?

Arthur Walker
la source

Réponses:

6

Il y a deux étapes pour y parvenir.

Étape 1) Assurez-vous que vos utilisateurs utilisent le shell bash. Examinez l'entrée de chaque utilisateur dans / etc / passwd et assurez-vous qu'elle se termine par / bin / bash. Par exemple, si vous voyez ceci:

joeuser:x:1234:1234:Joe User:/home/joeuser:/bin/sh

puis changez-le en ceci:

joeuser:x:1234:1234:Joe User:/home/joeuser:/bin/bash

L'utilisation de bash devrait résoudre le problème de la flèche vers le haut et activer l'étape suivante.

Étape 2) Si vous ne voyez toujours pas d'invite avec le répertoire de travail actuel, indiquez à bash ce que vous souhaitez. Il y a deux façons de faire ça. Ajoutez la ligne suivante:

export PS1='\w> '

soit

  1. Chaque utilisateur .bash_profile fichier; OU
  2. L'ensemble du système /etc/profile fichier

Cette ligne assigne le PS1 variable, qui représente l'invite principale du shell. Je recommande de le mettre dans /etc/profile comme cela est plus facile et fournit une invite utile à tous vos utilisateurs. Si un utilisateur veut quelque chose d'autre pour son invite, il peut toujours éditer ses propres .bash_profile fichier.

Remarque: si votre système dispose d’un /etc/bash.bashrc puis mettez la ligne là-bas au lieu de /etc/profile.

GLRoman
la source
1

ma passwd(5) La page de manuel dit ceci à propos du dernier champ d'un /etc/passwd entrée, appelée "interprète de commande":

Le champ interpréteur de commande fournit le nom de la commande de l'utilisateur   interprète de langue, ou le nom du programme initial à exécuter.   Le programme de connexion utilise ces informations pour définir la valeur du $ SHELL   variable environnementale. Si ce champ est vide, la valeur par défaut est le   valeur / bin / sh .

Il semble donc que vos options sont les suivantes:

  1. Mettez vos utilisateurs dans le /etc/passwd fichier.
  2. Ayez les informations de vos utilisateurs disponibles via NIS ou un autre moyen de réseau.
  3. Lien /bin/sh à un autre shell. Je ne le recommande pas car les programmes sont très probablement basés sur le comportement du système existant. /bin/sh.
glenn jackman
la source
1

Cela semble assez étrange puisque, par défaut, tout utilisateur non root devrait pouvoir disposer des fonctionnalités de base que vous décrivez. Cela dit, cette question semble familière. Chaque fois que j'installe un utilisateur sur Ubuntu (Debian), j'utilise adduser qui fonctionne bien; mais j'ai toujours eu des problèmes avec useradd. Comme il est dit dans la page de manuel officielle de useradd:

useradd est un utilitaire de bas niveau pour l'ajout d'utilisateurs. Sur Debian,   les administrateurs doivent généralement utiliser adduser (8) à la place.

La raison se résume au fait que useradd est finalement un binaire système de bas niveau qui nécessite plus de commandes qu'un simple nom d'utilisateur pour ajouter des chemins et des informations de shell à un nouvel utilisateur En revanche, adduser est un wrapper de script Perl pour useradd qui fournit un flux de travail plus convivial et convivial pour créer un nouvel utilisateur dans le système sans trop y penser. Pense juste à adduser en tant qu’assistant de configuration pour useradd.

Donc, si vous avez ajouté un utilisateur via useradd Il est probable que vous ayez oublié un paramètre de configuration dans les options de ligne de commande. Donc, techniquement, vous avez ajouté un utilisateur au système, mais pas grand-chose en matière de configuration du système. En revanche, adduser est conçu pour gérer toutes les bases diverses.

Sachant cela, je vous recommande de supprimer tout utilisateur que vous avez déjà créé comme ceci; bien sûr changer [username] au nom d'utilisateur actuel:

sudo deluser --remove-home [username]

Et puis recréez cet utilisateur avec adduser comme ça:

sudo adduser [username]
JakeGould
la source