2

Я следую руководству по установке Tomcat в Ubuntu, и я застрял на шаг, который должен выполнить следующую команду:

sudo chmod g+r conf/*

Что означает /* ? Означает ли это сделать изменения для всех файлов в папке /conf ? Когда я запускаю команду, я получаю следующую ошибку:

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

Вот как выглядит папка:

bin  conf  lib  LICENSE  logs  ...

Таким образом, папка /conf находится там - другие команды, которые я запускаю в папке, работают нормально:

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

Руководство здесь.

Я на «Шаг 4: Обновление разрешений».

Вот ls -la папки /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

и эти файлы находятся в папке /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

2 ответа2

4

Я подозреваю, что вы не входите в группу tomcat во время выполнения команд. Проблема в том, что * glob будет расширяться вашей оболочкой перед выполнением sudo поэтому он будет расширять его как ваш текущий пользователь. Если этот пользователь не находится в каталоге tomcat у него нет разрешения перечислять файлы в conf , и поэтому глобус не может быть расширен, что обычно означает, что вы вернули строку без изменений, тогда вы пытаетесь выполнить команду sudo , но расширение глобуса уже сделано, поэтому он ищет файл с буквальным названием conf/* который явно не существует.

Таким образом, вы можете либо использовать пользователя, у которого есть разрешения в этом каталоге, либо вы можете использовать команду sudo запуска команды, которая будет откладывать расширение glob, например

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

поэтому шар будет расширен после того, как sudo предоставит вам повышенные права

Чтобы ответить на ваш вопрос "что это значит", как я уже упоминал выше, * является глобальным символом для оболочек. Вы можете прочитать много об этом здесь. Это способ сопоставления большого количества файлов без необходимости перечислять их вручную. Вы просто указываете шаблоны, которые будут соответствовать именам, которые вы хотите, и * основном означает «почти все что угодно, сколько угодно раз»

Поскольку порядок операций, по-видимому, важен для этого вопроса, здесь есть страница, в которой говорится о порядке, в котором происходят различные расширения в оболочке (по крайней мере, bash но большинство из них похожи). Все, что происходит перед выполнением команды, так что все это происходит до того, как sudo вызывается в этой конкретной ситуации.

0

Чтобы добавить ответ к ответу @Eric Renoufs, вы можете предоставить доступ к оболочке пользователю tomcat8 с помощью этой команды.

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

Эта ссылка направила меня к этому ответу

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .