O que significa / * no final do caminho do arquivo para chmod?

2

Estou seguindo um guia para instalar o tomcat no Ubuntu, e estou preso em uma etapa que é executar o seguinte comando:

sudo chmod g+r conf/*

O que significa o /* ? Isso significa fazer a alteração de todos os arquivos na pasta /conf ? Quando executo o comando, recebo o seguinte erro:

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

Esta é a aparência da pasta:

bin  conf  lib  LICENSE  logs  ...

Então a pasta /conf está lá - outros comandos que eu executo na pasta funcionam ok:

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

O guia está aqui .

Estou na "Etapa 4: atualizar permissões".

Aqui está uma ls -la da pasta /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

e estes são os arquivos que estão na pasta / 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
    
por user3203425 15.08.2016 / 05:23

2 respostas

4

Eu suspeito que você não esteja no grupo tomcat enquanto executa os comandos. O problema aqui é que o * glob será expandido pelo seu shell antes de executar sudo , então ele será expandido como seu usuário atual. Se esse usuário não estiver no diretório tomcat , não terá permissão para listar os arquivos em conf e, portanto, a glob não expande, o que geralmente significa que você recupera a sequência inalterada e, em seguida, tenta o comando sudo , mas a expansão glob já está feita, então ele está procurando por um arquivo literalmente chamado conf/* , que claramente não existe.

Você pode usar um usuário com permissão nesse diretório ou pode ter sudo executando um comando que adia a expansão glob como

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

para que o glob seja expandido após sudo ter concedido permissões elevadas

Para responder à sua pergunta sobre "o que isso significa", como mencionei acima, o * é um caractere global para shells. Você pode ler muito sobre isso aqui . É uma maneira de combinar muitos arquivos sem precisar enumerá-los manualmente. Você apenas especifica padrões que correspondem aos nomes que deseja e * significa basicamente "praticamente qualquer número de vezes"

Como a ordem de operações parece ser importante para essa questão, aqui é uma página sobre a qual se fala a ordem em que diferentes expansões acontecem no shell (pelo menos bash , mas a maioria é semelhante). Tudo o que acontece antes do comando ser executado, então tudo acontece antes que sudo seja invocado nesta situação específica.

    
por 15.08.2016 / 14:31
0

Para adicionar ao que @Eric Renoufs responde, você pode dar acesso ao shell para o usuário tomcat8 usando este comando

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

Este link me direcionou para essa resposta

    
por 07.11.2016 / 07:14

Tags