Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 01/05/2021, à 21:39

arnooo

[Résolu] [Basique] Déplacement de dossier

Hello à tous,

petite question basique sur le déplacement d'un dossier d'une application installée.

J'ai installé récemment un vpn et je souhaiterais "ranger" le folder dans un répertoire plus sympa que Téléchargements. J'ai donc créé avec mkdir un nouveau folder dans /etc mais je n'arrive pas ensuite

arno@ordinateur:~/Téléchargements/cyberghostvpn$ sudo cp -a cyberghostvpn /etc/cyberghostvpn
[sudo] Mot de passe de arno : 
cp: impossible d'évaluer 'cyberghostvpn': Aucun fichier ou dossier de ce type
arno@ordinateur:~/Téléchargements/cyberghostvpn$ mv cyberghostvpn /etc/cyberghostvpn
mv: impossible d'évaluer 'cyberghostvpn': Aucun fichier ou dossier de ce type
arno@ordinateur:~/Téléchargements/cyberghostvpn$ mv -i cyberghostvpn /etc/cyberghostvpn
mv: impossible d'évaluer 'cyberghostvpn': Aucun fichier ou dossier de ce type
arno@ordinateur:~/Téléchargements/cyberghostvpn$ 

Voilà j'ai essayé plusieurs manip' et je n'y arrive pas.... sad     je regarde un peu sur Google et je n'arrive pas à comprendre si c'est une question de syntaxe, ou d'arguments. Des conseils ?

Merci à tous !

Dernière modification par arnooo (Le 02/05/2021, à 11:26)

Hors ligne

#2 Le 01/05/2021, à 22:24

abelthorne

Re : [Résolu] [Basique] Déplacement de dossier

Là, tu es dans le dossier cyberghostvpn. J'imagine qu'il n'y a pas un deuxième cyberghostvpn à cet endroit et qu'il faudrait que tu remontes d'un niveau, dans Téléchargements ?

D'autre part, pour pouvoir écrire dans les dossiers système, il faut avoir les droits admin, donc utiliser sudo. C'est le cas dans ta première commande mais tu l'as oublié dans les mv que tu as tentés après.

Ensuite, les dossiers système ont chacun une fonction spécifique : /etc sert à stocker des fichiers de configuration. Le dossier d'une appli irait plutôt dans /usr/share, /usr/local/share, voire /opt (ce dernier étant un dossier un peu fourre-tout). Et pour pouvoir lancer ton appli ensuite, il faudrait un exécutable (binaire, script...) dans un chemin du PATH comme /usr/bin ou /usr/local/bin. Le plus approprié dans ta situation étant probablement un script qui se placerait dans le dossier de l'appli (/usr/local/share/cyberghostvpn par exemple) puis qui lancerait le binaire de l'appli qui se trouve là.

Hors ligne

#3 Le 01/05/2021, à 22:35

arnooo

Re : [Résolu] [Basique] Déplacement de dossier

Salut abelthorne,

merci beaucoup pour ta réponse complète. Oui donc si je comprends bien il faut être dans le répertoire parent et pas dans le folder lui-même pour faire cp ou mv. Du coup, pour le "rangement", tu me conseilles d'ajouter dans le folder de l'appli un script pour lancer l'appli. Je crois qu'il y a déja un script sh dans le folder de mon vpn, il faut que j'édite en nano ou vim un autre document script ?

Merci smile

Hors ligne

#4 Le 01/05/2021, à 22:37

Amiralgaby

Re : [Résolu] [Basique] Déplacement de dossier

Dans /usr/local me semble plus adapté.

Ensuite c'est tout le dossier "cyberghostvpn" que tu dois déplacer .

mv -i ~/Téléchargement/cyberghostvpn/ /etc/

ou peut-être :

mv -i ~/Téléchargement/cyberghostvpn/ /usr/local/

Si c'est pas qu'une histoire d’arrangement et que tu veux pouvoir le lancer de partout tu peux créer des raccourci vers ce dernier ou alors faire un lanceur avec par exemple menulibre.


Vive la communauté du Libre !!!

Hors ligne

#5 Le 01/05/2021, à 23:11

abelthorne

Re : [Résolu] [Basique] Déplacement de dossier

arnooo a écrit :

Oui donc si je comprends bien il faut être dans le répertoire parent et pas dans le folder lui-même pour faire cp ou mv.

Oui : quand tu indiques un dossier ou un fichier en paramètre d'une commande, le shell va le chercher dans le dossier courant, pas un cran au-dessus.

Du coup, pour le "rangement", tu me conseilles d'ajouter dans le folder de l'appli un script pour lancer l'appli. Je crois qu'il y a déja un script sh dans le folder de mon vpn, il faut que j'édite en nano ou vim un autre document script ?

Non, ne touche pas au script. Le truc, c'est que :
- les applis qui ont des données les cherchent généralement dans le dossier courant ; si tu déplaces le script de ton appli ailleurs et que tu le lances, il ne trouvera pas les données ;
- pour qu'on puisse lancer une commande juste en tapant son nom dans un terminal (ou depuis un lanceur), il faut qu'elle soit dans un dossier de la variable d'environnement $PATH, comme /bin, /usr/bin, /usr/local/bin... (tu peux lancer echo $PATH dans un terminal pour voir la liste).

Donc, l'idée, c'est de faire un script dans un dossier du PATH qui se placera dans le dossier de l'appli et qui lancera son exécutable (en l'occurrence, son script d'origine).

Personnellement, je mettrais le dossier cyberghostvpn dans /opt (attention aux permissions, si tu déplaces le dossier avec mv, il gardera ton compte comme proprio, il faudrait faire un chown récursif dessus ensuite pour l'attribuer à root) et je créerais une "commande" de lancement (un script) dans /usr/local/bin.

Plus précisément :

cd ~/Téléchargements
sudo mv cyberghostvpn /opt
cd /opt
sudo chown -R root:root cyberghostvpn

Dans l'ordre :
- on se place dans ~/Téléchargements (où se trouve le dossier à déplacer) ;
- on déplace le dossier en question dans /opt ;
- on se place dans /opt ;
- on attribue le dossier cyberghostvpn et son contenu à root.

Ensuite, édite un fichier qui servira de script de lancement.

sudo nano /usr/local/bin/cyberghostvpn

Je vais supposer que le script qui est dans le dossier cyberghostvpn s'appelle cyberghostvpn.sh ; si ce n'est pas le cas, corrige-le dans le script ci-dessous :

#!/bin/sh
cd /opt/cyberghostvpn
./cyberghostvpn.sh

- on se place dans le dossier de l'appli qui est dans /opt ;
- on lance cyberghostvpn.sh depuis le dossier courant (celui dans lequel on s'est placé) ; à corriger si le script d'origine s'appelle différemment, donc.

Pour enregistrer avec Nano c'est ctrl + O, il va te demander de valider le nom de fichier (avec entrée). Ferme-le avec ctrl + X ensuite.
Une fois que c'est fait, il faut rendre ce nouveau script exécutable :

sudo chmod +x /usr/local/bin/cyberghostvpn

À partir de là, si tu tapes cyberghostvpn dans un terminal, ça devrait lancer ton soft. Si tout va bien, l'étape suivante est de faire éventuellement un lanceur dans le menu Applications pour le lancer sans devoir ouvrir un terminal à chaque fois.

Hors ligne

#6 Le 02/05/2021, à 11:25

arnooo

Re : [Résolu] [Basique] Déplacement de dossier

Salut abelthorne,

merci pour tes recommandations, c'est impeccable et très bien expliqué. Ensuite je lance OpenVpn non pas sur le shell ou un lanceur dédié mais avec Openvpn. J'ai l'impression que le protocole fonctionne si je laisse le dossier de clé et certificats (par ex: france_openvpn) dans le dossier home (/Téléchargements). Est-il possible de déplacer ce dossier de clé dans la racine et de permettre ensuite à Openvpn d'aller log là-bas ?

Je mets le sujet en résolu smile.

Belle journée

Hors ligne

#7 Le 02/05/2021, à 11:40

abelthorne

Re : [Résolu] [Basique] Déplacement de dossier

Je n'ai pas la moindre idée de la façon dont ton soft fonctionne, on est sur un cas assez particulier. Il va falloir plus d'infos pour pouvoir t'aider et il faudrait expliquer comment les différents éléments interagissent entre eux.

Notamment, ce dossier france_openvpn fait partie de cyberghostvpn à la base ou ça n'a rien à voir ? Deuxièmement, comment est-ce qu'OpenVPN trouve ce dossier dans Téléchargements ? le chemin est indiqué quelque part ?
Le dossier de clés et certificats est applicable à tous les utilisateurs ou contient des fichiers/données spécifiques à un utilisateur ?

Hors ligne

#8 Le 02/05/2021, à 12:36

arnooo

Re : [Résolu] [Basique] Déplacement de dossier

SI je fais un man openvpn je peux trouver par ex ces informations

PTIONS
       OpenVPN allows any option to be placed either on the command line or in
       a configuration file.  Though all command line options are preceded  by
       a double-leading-dash ("--"), this prefix can be removed when an option
       is placed in a configuration file.

       --help Show options.

       --config file
              Load additional config options from file where each line  corre‐
              sponds to one command line option, but with the leading '--' re‐
              moved.

              If --config file is the only option to the openvpn command,  the
              --config can be removed, and the command can be given as openvpn
              file

              Note that configuration files can  be  nested  to  a  reasonable
              depth.

              Double  quotation or single quotation characters ("", '') can be
              used to enclose single parameters containing whitespace, and "#"
              or ";" characters in the first column can be used to denote com‐
              ments.

              Note that OpenVPN 2.0 and higher performs backslash-based  shell
              escaping for characters not in single quotations, so the follow‐
              ing mappings should be observed:

                  \\       Maps to a single backslash character (\).
                  \"       Pass a literal doublequote character ("), don't
                           interpret it as enclosing a parameter.
                  \[SPACE] Pass a literal space or tab character, don't
                           interpret it as a parameter delimiter.

              For example on Windows,  use  double  backslashes  to  represent
              pathnames:

                  secret "c:\\OpenVPN\\secret.key"

Est-ce que cela répond à ta question ? Effectivement, si je ne sais pas si je dois passer par une configuration bash d'openvpn (par une procédure expliquée par ex ici) ou simplement trouver une commande qui "force" Openvpn vers le path que j'aurais choisi pour les certificats. À toutes fins utiles, voici le ls du dossier en question:

arno@ordinateur:~/Téléchargements$ cd france_openvpn
arno@ordinateur:~/Téléchargements/france_openvpn$ ls
ca.crt  client.crt  client.key  openvpn.ovpn
arno@ordinateur:~/Téléchargements/france_openvpn$ 

Bonne journée

Hors ligne

#9 Le 02/05/2021, à 13:03

abelthorne

Re : [Résolu] [Basique] Déplacement de dossier

Actuellement, comment est-ce qu'il fait pour trouver tes certificats qui sont dans Téléchargements ? vu que tu dis que ça fonctionne s'ils sont là mais plus autrement. J'imagine que tu paramètres ça quelque part ?

Hors ligne

#10 Le 02/05/2021, à 13:41

arnooo

Re : [Résolu] [Basique] Déplacement de dossier

Voici les fichiers de config que j'ai trouvé:

dans etc/openvpn le fichier update-resolv-conf:

!/bin/bash
# 
# Parses DHCP options from openvpn to update resolv.conf
# To use set as 'up' and 'down' script in your openvpn *.conf:
# up /etc/openvpn/update-resolv-conf
# down /etc/openvpn/update-resolv-conf
#
# Used snippets of resolvconf script by Thomas Hood and Chris Hanson.
# Licensed under the GNU GPL.  See /usr/share/common-licenses/GPL. 
# 
# Example envs set from openvpn:
#
#     foreign_option_1='dhcp-option DNS 193.43.27.132'
#     foreign_option_2='dhcp-option DNS 193.43.27.133'
#     foreign_option_3='dhcp-option DOMAIN be.bnc.ch'
#

if [ ! -x /sbin/resolvconf ] ; then
    logger "[OpenVPN:update-resolve-conf] missing binary /sbin/resolvconf";
    exit 0;
fi

[ "$script_type" ] || exit 0
[ "$dev" ] || exit 0

split_into_parts()
{
        part1="$1"
        part2="$2"
        part3="$3"
}

case "$script_type" in
  up)
        NMSRVRS=""
        SRCHS=""
        foreign_options=$(printf '%s\n' ${!foreign_option_*} | sort -t _ -k 3 -g)
        for optionvarname in ${foreign_options} ; do
                option="${!optionvarname}"
                echo "$option"
                split_into_parts $option
                if [ "$part1" = "dhcp-option" ] ; then
                        if [ "$part2" = "DNS" ] ; then
                                NMSRVRS="${NMSRVRS:+$NMSRVRS }$part3"
                        elif [ "$part2" = "DOMAIN" ] ; then
                                SRCHS="${SRCHS:+$SRCHS }$part3"
fi
                fi
        done
        R=""
        [ "$SRCHS" ] && R="search $SRCHS
"
        for NS in $NMSRVRS ; do
                R="${R}nameserver $NS
"
        done
        echo -n "$R" | /sbin/resolvconf -a "${dev}.openvpn"
        ;;
  down)
        /sbin/resolvconf -d "${dev}.openvpn"
        ;;
esac

dans /usr/share le fichier verify-cn :

#!/usr/bin/perl

# verify-cn -- a sample OpenVPN tls-verify script
#
# Return 0 if cn matches the common name component of
# subject, 1 otherwise.
#
# For example in OpenVPN, you could use the directive:
#
#   tls-verify "./verify-cn /etc/openvpn/allowed_clients"
#
# This would cause the connection to be dropped unless
# the client common name is listed on a line in the
# allowed_clients file.

die "usage: verify-cn cnfile certificate_depth subject" if (@ARGV != 3);

# Parse out arguments:
#   cnfile -- The file containing the list of common names, one per
#             line, which the client is required to have,
#             taken from the argument to the tls-verify directive
#             in the OpenVPN config file.
#             The file can have blank lines and comment lines that begin
#             with the # character.
#   depth  -- The current certificate chain depth.  In a typical
#             bi-level chain, the root certificate will be at level
#             1 and the client certificate will be at level 0.
#             This script will be called separately for each level.
#   x509   -- the X509 subject string as extracted by OpenVPN from
#             the client's provided certificate.
($cnfile, $depth, $x509) = @ARGV;

if ($depth == 0) {
    # If depth is zero, we know that this is the final
    # certificate in the chain (i.e. the client certificate),
    # and the one we are interested in examining.
    # If so, parse out the common name substring in
    # the X509 subject string.

    if ($x509 =~ / CN=([^,]+)/) {
        $cn = $1;
	# Accept the connection if the X509 common name
	# string matches the passed cn argument.
	open(FH, '<', $cnfile) or exit 1; # can't open, nobody authenticates!
        while (defined($line = <FH>)) {
	    if ($line !~ /^[[:space:]]*(#|$)/o) {
		chop($line);
		if ($line eq $cn) {
		    exit 0;
		}
	    }
	}
	close(FH);
    }

    # Authentication failed -- Either we could not parse
    # the X509 subject string, or the common name in the
    # subject string didn't match the passed cn argument.
    exit 1;
}

# If depth is nonzero, tell OpenVPN to continue processing
# the certificate chain.
exit 0;

Hors ligne

#11 Le 02/05/2021, à 13:54

abelthorne

Re : [Résolu] [Basique] Déplacement de dossier

D'accord, mais moi j'y connais rien en VPN. Je faisais référence à ce que tu disais plus tôt :

J'ai l'impression que le protocole fonctionne si je laisse le dossier de clé et certificats (par ex: france_openvpn) dans le dossier home (/Téléchargements).

Si je comprends bien, ça fonctionne si ton dossier de certifs est dans ton dossier perso (ou dans le dossier Téléchargements ? c'est pas clair...), donc je suppose que ça, tu le configures quelque part ? Et donc que ça ne fonctionne plus si tu mets le dossier de certifs ailleurs (où ?). Ou alors je ne comprends pas ce que tu dis.

Hors ligne

#12 Le 02/05/2021, à 14:04

arnooo

Re : [Résolu] [Basique] Déplacement de dossier

abelthorne a écrit :

Si je comprends bien, ça fonctionne si ton dossier de certifs est dans ton dossier perso (ou dans le dossier Téléchargements ? c'est pas clair...), donc je suppose que ça, tu le configures quelque part ? Et donc que ça ne fonctionne plus si tu mets le dossier de certifs ailleurs (où ?). Ou alors je ne comprends pas ce que tu dis.

Oui c'est exactement ça.
Pas de je souci, je vais en rester là pour le moment. Sinon j'ouvrirai un nouveau topic singulier sur le sujet. Merci encore pour ton aide !

Hors ligne