Que signifie / * à la fin du chemin du fichier signifie-t-il pour chmod?

2

Je suis un guide d'installation de tomcat sur Ubuntu et je suis bloqué sur une étape qui consiste à exécuter la commande suivante:

sudo chmod g+r conf/*

Qu'est-ce que cela /*signifie? Est-ce que cela signifie faire la modification pour tous les fichiers du /confdossier? Lorsque j'exécute la commande, l'erreur suivante apparaît:

chmod: cannot access 'conf/*': No such file or directory

Voici à quoi ressemble le dossier:

bin  conf  lib  LICENSE  logs  ...

Donc le /confdossier est dedans - les autres commandes que je lance sur le dossier fonctionnent bien:

sudo chgrp -R tomcat conf
sudo chmod g+rwx conf

Le guide est ici .

J'en suis à "Étape 4: Mettre à jour les autorisations".

Voici un ls -ladu /opt/tomcatdossier:

drwxr-xr-x 9 root root    4096 Aug 15 03:15 .
drwxr-xr-x 3 root root    4096 Aug 15 03:14 ..
drwxr-x--- 2 root root    4096 Aug 15 03:15 bin
drwxrwx--- 2 root tomcat  4096 Jul  6 08:45 conf
drwxr-x--- 2 root root    4096 Aug 15 03:15 lib
-rw-r----- 1 root root   57092 Jul  6 08:45 LICENSE
drwxr-x--- 2 root root    4096 Jul  6 08:43 logs
-rw-r----- 1 root root    1723 Jul  6 08:45 NOTICE
-rw-r----- 1 root root    7063 Jul  6 08:45 RELEASE-NOTES
-rw-r----- 1 root root   15946 Jul  6 08:45 RUNNING.txt
drwxr-x--- 2 root root    4096 Aug 15 03:15 temp
drwxr-x--- 7 root root    4096 Jul  6 08:44 webapps
drwxr-x--- 2 root root    4096 Jul  6 08:43 work

et ce sont les fichiers qui se trouvent dans le dossier / conf:

sudo ls -al conf/
-rw------- 1 root tomcat  12502 Jul  6 08:45 catalina.policy
-rw------- 1 root tomcat   7203 Jul  6 08:45 catalina.properties
-rw------- 1 root tomcat   1338 Jul  6 08:45 context.xml
-rw------- 1 root tomcat   1149 Jul  6 08:45 jaspic-providers.xml
-rw------- 1 root tomcat   2358 Jul  6 08:45 jaspic-providers.xsd
-rw------- 1 root tomcat   3622 Jul  6 08:45 logging.properties
-rw------- 1 root tomcat   7283 Jul  6 08:45 server.xml
-rw------- 1 root tomcat   2164 Jul  6 08:45 tomcat-users.xml
-rw------- 1 root tomcat   2633 Jul  6 08:45 tomcat-users.xsd
-rw------- 1 root tomcat 168577 Jul  6 08:45 web.xml
utilisateur3203425
la source
Pourriez-vous fournir un lien vers le guide que vous utilisez? Aussi pourriez-vous faire un ls -lasur le répertoire plutôt que juste unls
pcnate
que diriez-vous sudo chmod g+r ./conf/* ou sudo chmod -R g+r ./conf? si ceux-ci ne fonctionnent pas, confirmez votre pwd.
Frank Thomas
@ Frank Thomas, l'option [sudo chmod -R g + r ./conf] a fonctionné - savez-vous pourquoi?
user3203425

Réponses:

5

Je soupçonne que vous n'êtes pas dans le tomcatgroupe lors de l'exécution des commandes. Le problème ici est que *votre shell sudova étendre le glob avant de s’exécuter , il sera donc étendu en tant qu’utilisateur actuel. Si cet utilisateur ne se trouve pas dans le tomcatrépertoire, il n'est pas autorisé à répertorier les fichiers conf. Par conséquent, la glob ne parvient pas à se développer, ce qui signifie généralement que la chaîne est restituée inchangée. Vous essayez ensuite la sudocommande, mais l'expansion globale est déjà terminée. il recherche un fichier littéralement nommé conf/*qui n’existe manifestement pas.

Vous pouvez donc utiliser un utilisateur autorisé dans ce répertoire ou sudoexécuter une commande qui différera l’expansion globale comme suit:

sudo sh -c "chmod g+r conf/*"

de sorte que le glob sera étendu après sudovous avoir donné des autorisations élevées

Pour répondre à votre question de "qu'est-ce que cela signifie", comme je l'ai mentionné ci-dessus, il *s'agit d'un caractère global pour les coquillages. Vous pouvez en lire beaucoup ici . C'est un moyen de faire correspondre beaucoup de fichiers sans avoir à les énumérer à la main. Vous spécifiez simplement des modèles qui correspondent aux noms que vous voulez, et *signifie fondamentalement "à peu près tout ce que vous voulez "

Étant donné que l'ordre des opérations semble être important pour cette question, voici une page qui parle de l'ordre dans lequel différentes extensions se déroulent dans la coque (au moins, bashmais la plupart sont similaires). Tout ce qui se passe avant que la commande soit exécutée, donc tout se passe avant d' sudoêtre appelé dans cette situation spécifique.

Eric Renouf
la source
Oh, je vois - ouais, quand je lance la commande "groups", je ne récupère que "testuser sudo" (testuser est mon groupe d'origine). Donc, cet utilisateur ne fait pas partie du groupe "tomcat". Votre commande de solution de contournement recommandée fonctionne, même si je ne fais pas partie du groupe. J'ai ajouté mon utilisateur au groupe tomcat après le test, puis la commande originale fonctionnait enfin, glorieux!
user3203425
L'expansion de Shell est la clé. Je ne savais pas que par le passé, lorsque nous posions les questions *, c’est le shell qui trouve tous les éléments correspondants et les ajoute virtuellement à la liste des arguments.
sdkks
0

Pour ajouter à la réponse de @Eric Renoufs, vous pouvez donner un accès shell à l'utilisateur tomcat8 en utilisant cette commande

$ sudo -s -u <tomcat user> then issue
$ chmod g+r conf/*

Ce lien m'a dirigé vers cette réponse

splucena
la source