我正在按照在 ubuntu 上安装 tomcat 的指南进行操作,但我卡在了运行以下命令的步骤上:
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
答案1
我怀疑您在运行命令时不在该tomcat
组中。这里的问题是,*
在执行之前,您的 shell 将扩展 glob,sudo
因此它将以您当前的用户身份对其进行扩展。如果该用户不在目录中,则tomcat
它无权列出目录中的文件conf
,因此 glob 无法扩展,这通常意味着您得到的字符串没有改变,然后您尝试该sudo
命令,但 glob 扩展已经完成,因此它正在寻找一个conf/*
显然不存在的字面名称的文件。
因此,您可以使用在该目录中具有权限的用户,也可以sudo
运行推迟 glob 扩展的命令,例如
sudo sh -c "chmod g+r conf/*"
sudo
因此在授予您提升的权限后,glob 将扩展
为了回答你的问题“这是什么意思”,正如我上面提到的,这*
是 shell 的 glob 字符。你可以阅读很多关于它的内容这里。这是一种匹配大量文件的方法,无需手动枚举它们。您只需指定匹配所需名称的模式,*
基本上意味着“几乎任何内容任意次数”
由于运算顺序对这个问题来说似乎很重要,这里是一个页面,其中讨论了 shell 中不同扩展发生的顺序(至少是这样的,bash
但大多数是相似的)。所有这些都发生在命令执行之前,因此sudo
在这种特定情况下,所有这些都发生在调用之前。
答案2
要补充@Eric Renoufs 的回答,你可以使用这个命令向 tomcat8 用户授予 shell 访问权限
$ sudo -s -u <tomcat user> then issue
$ chmod g+r conf/*