2 votes

Que signifie /* à la fin du chemin de fichier pour chmod?

Je suis en train de suivre un guide pour installer Tomcat sur Ubuntu, et je suis bloqué à une étape qui consiste à exécuter la commande suivante :

sudo chmod g+r conf/*

Que signifie /* ? Est-ce que cela signifie faire le changement pour tous les fichiers dans le dossier /conf ? Lorsque j'exécute la commande, j'obtiens l'erreur suivante :

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

Voici à quoi ressemble le dossier :

bin  conf  lib  LICENSE  logs  ...

Le dossier /conf est là-dedans - les autres commandes que j'exécute sur le dossier fonctionnent correctement :

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

Le guide se trouve ici.

Je suis à l'étape "Étape 4 : Mettre à jour les permissions".

Voici un ls -la du dossier /opt/tomcat :

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 voici 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

4voto

Andrew Cash Points 1803

Je soupçonne que vous n'êtes pas dans le groupe tomcat lorsque vous exécutez les commandes. Le problème ici est que le glob * va être étendu par votre shell avant d'exécuter sudo donc il sera étendu en tant que votre utilisateur actuel. Si cet utilisateur n'est pas dans le répertoire tomcat, il n'a pas l'autorisation de lister les fichiers dans conf, et donc le glob ne parvient pas à se développer, ce qui signifie généralement que vous récupérez la chaîne inchangée, puis vous essayez la commande sudo, mais l'expansion du glob est déjà réalisée, donc il recherche un fichier littéralement nommé conf/* qui n'existe clairement pas.

Vous pourriez donc soit utiliser un utilisateur qui a l'autorisation dans ce répertoire, soit avoir sudo exécuter une commande qui différera l'expansion du glob comme

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

le glob sera étendu après que sudo vous ait donné des autorisations élevées

Pour répondre à votre question "que cela signifie-t-il", comme je l'ai mentionné précédemment le * est un caractère glob pour les shells. Vous pouvez en lire beaucoup ici. C'est un moyen de faire correspondre beaucoup de fichiers sans avoir à les énumérer spécifiquement à la main. Vous spécifiez simplement des motifs qui correspondent aux noms que vous voulez, et * signifie essentiellement "à peu près n'importe quoi un nombre de fois".

Puisque l'ordre des opérations semble important pour cette question, voici une page qui parle de l'ordre dans lequel les différentes expansions se produisent dans le shell (au moins bash mais la plupart sont similaires). Tout cela se passe avant que la commande ne soit exécutée, donc tout se passe avant que sudo ne soit invoqué dans cette situation spécifique.

0voto

splucena Points 1

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

$ sudo -s -u  puis exécutez 
$ chmod g+r conf/*

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

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X