82 votes

Changer de répertoire d'accueil en toute sécurité

J'essaie de mettre à jour en toute sécurité le répertoire d'accueil comme indiqué dans /etc/passwd , mais les utilitaires standards de Linux - usermod et vipw - ne sont pas fournis par Cygwin. par Cygwin.

Quelqu'un peut-il me dire comment ils ont changé cela dans Cygwin ?

4 votes

La question dupliquée à stackoverflow.com/q/1494658/923560 fournit des réponses pour les versions récentes de Cygwin à partir de la version 1.7.34.

0 votes

95voto

netjeff Points 3633

EDIT : Pour les versions récentes de Cygwin (1.7.34 et au-delà), voir cette nouvelle question .

Comme la réponse de sblundy, vous pouvez toujours éditer à la main.

Mais si vous voulez le faire de la manière "officielle", utilisez l'option spécifique à cygwin mkpasswd commande. Voici un extrait de la documentation officielle sur la commande mkpasswd :

Par exemple, cette commande :

Exemple 3.11. Utilisation d'une autre racine d'origine

$ mkpasswd -l -p "$(cygpath -H)" > /etc/passwd

placerait les répertoires personnels des utilisateurs locaux dans le répertoire "Profils" de Windows.

Il existe un tas d'autres commandes très utiles décrites sur le site Web de l'UE. Utilitaires Cygwin page de documentation (qui comprend mkpasswd ). L'utilisation de cygpath dans l'exemple ci-dessus est un autre de ces outils spécifiques à cygwin.

Pendant que vous y êtes, vous voudrez sans doute aussi lire les Utiliser Cygwin efficacement avec Windows de la documentation. Il y a un tas de très bons conseils.

10 votes

Si vous êtes sur un domaine, vous pouvez envisager cette commande alternative : ( -d pour le domaine) $ mkpasswd -l -d -p "$(cygpath -H)" > /etc/passwd Cela n'a pas fonctionné pour moi - ça s'est pratiquement arrêté. Comme je suis le seul à utiliser cette machine, j'ai pu utiliser cette alternative, qui devrait être sûre que vous soyez ou non sur un domaine (la balise -c est pour "utilisateur actuel") $ mkpasswd -l -c -p "$(cygpath -H)" > /etc/passwd

1 votes

Après avoir effectué cette opération, le fichier .bashrc ne semble pas être lu, même si je le copie dans mon nouvel ordinateur. $HOME . Une idée de la façon de résoudre ce problème ?

1 votes

La sortie doit être en annexe (>>) à /etc/passwd (pour les scénarios d'entreprise avec plusieurs utilisateurs). Cela a marché ! :)

19voto

sblundy Points 27163

J'ai fini par quitter tous mes shells cygwin et l'éditer à la main dans un éditeur de texte. Jusqu'ici, tout va bien.

Note : n'échappez pas les espaces dans le répertoire "Documents and Settings". L'entrée ressemblera à

user:...:/cygdrive/c/Documents and Settings/user:/bin/bash

La ligne est tokenisée sur le : caractère.

0 votes

Cela fonctionne aussi pour les chemins UNC, merci d'avoir surchargé avec la variable HOME auparavant.

0 votes

Que dois-je modifier à la main ? Je ne sais pas pourquoi mon répertoire d'accueil cygwin est /cygdrive/c/Users/JoseAngel/AppData/Roaming/SPB_16.6 Je veux qu'il soit C:/Users/MonNom/

16voto

M Smith Points 852

La réponse la plus simple que j'ai trouvée est de faire en sorte que /home soit un lien logiciel vers votre répertoire Home/UserProfile de Windows.

cd /
mv home oldhome
ln -s "$(cygpath -H)" home

J'ai utilisé cygpath pour obtenir l'emplacement correct du répertoire HOME dans la version actuelle de Windows. Sur mon ordinateur cygpath -H renvoie à /cygdrive/c/Users

0 votes

Après avoir fait cela pendant un certain temps, il y a un inconvénient : Je dois l'exécuter à chaque fois que je mets à jour Cygwin en utilisant leur setup.exe. Ce n'est pas un gros problème mais il faut s'en souvenir.

0 votes

C'est la meilleure réponse. Je me demande pourquoi Cygwin n'utilise pas par défaut le code suivant cygwin -H par défaut. C'est l'emplacement le plus judicieux, et depuis Windows 7, il n'y a plus d'espace dans son chemin.

0 votes

sur un autre plan, ça ne marchera pas. Il a soudainement décidé d'ignorer le lien symbolique !

8voto

Samuel Points 303

Pour l'utilisateur actuel, ce qui suit a fonctionné pour moi :

  1. Fermez Cygwin.
  2. Définissez la variable d'environnement HOME de l'utilisateur Windows.
  3. Lancez Cygwin.
  4. exécutez "mkpasswd -c -p "$(cygpath -H)" > /etc/passwd".
  5. Redémarrez Cygwin.

J'ai confirmé que cela fonctionnait en exécutant ssh-keygen sans aucun argument. Après avoir effectué ce changement, l'application enregistre par défaut la clé dans /cygdrive/c/Users/user au lieu de /home/user.

Je ne sais pas si la configuration de HOME est nécessaire, mais je l'ai fait de toute façon selon les instructions pour configurer TortoiseGit avec Cygwin en utilisant la documentation officielle de Tortoise pour le support non officiel de Cygwin ici . La configuration de HOME seule n'était cependant pas suffisante pour que ssh-keygen reconnaisse le changement de répertoire d'origine.

Notez également que la documentation officielle de Cygwin sur cette question se trouve à l'adresse suivante ici .

Confirmé sous Windows 7 avec Cygwin v1.7.35 64 bits.

0 votes

Pour Cygwin 1.7.35+, l'utilisation de mkpasswd est déconseillée au profit de /etc/nsswitch.conf.

4voto

JesperE Points 34356

Je définis toujours HOME comme une variable d'environnement spécifique à l'utilisateur dans les propriétés de l'ordinateur.

0 votes

J'essaie d'éviter cela car il s'agit d'un lecteur réseau d'entreprise. On dirait que ça pourrait fonctionner.

7 votes

Notez que cela ne fonctionnera pas pour ssh, qui ignore explicitement le HOME et utilise toujours /etc/passwd. Voir la dernière phrase de cygwin.com/faq/faq-nochunks.html#faq.setup.home .

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X