Chmod 无效命令,Ubuntu 服务器

Mik*_*rza 1 server permissions chmod

我正在尝试授予用户 tomcat8 对服务器上特定文件夹的读写访问权限。我试过这个命令:

sudo chmod -R tomcat8 /usr/local/javaagent/appagent/ver2/logs/Tomcat1
Run Code Online (Sandbox Code Playgroud)

然而它给了我

chmod: invalid mode: `tomcat8'
Run Code Online (Sandbox Code Playgroud)

为什么这不起作用?这不是标准chmod吗?

Zan*_*nna 5

你不能只用 chmod. 但是,您可以创建一个新组并更改目录的组所有权,将用户添加到该组,然后授予该所需的目录权限,这样您就可以只授予该的权限。

要创建一个组tomcat并将用户添加tomcat8到其中:

sudo groupadd tomcat && sudo adduser tomcat8 tomcat
Run Code Online (Sandbox Code Playgroud)

您可能还想将您自己(以及在此处需要读写访问权限的任何其他用户)添加到组中 sudo adduser [username] tomcat

现在更改目录的组所有权:

sudo chown :tomcat /usr/local/javaagent/appagent/ver2/logs/Tomcat1
Run Code Online (Sandbox Code Playgroud)

不要忘记冒号 - 这只是更改组所有权。

现在更改权限,例如,您向组添加读写权限,如下所示:

sudo chmod g+rw /usr/local/javaagent/appagent/ver2/logs/Tomcat1
Run Code Online (Sandbox Code Playgroud)

根据您的问题,我不确定您希望其他设置是什么。我建议你阅读man chmod本指南的权限,以更好地了解你在做什么。

目录需要执行权限才能输入和搜索,因此您很可能需要八进制775(因此所有用户都可以读取和搜索但只有组可以写入)或770(因此只有所有者和组具有任何权限 - 保持目录私有)

不要使用 -R因为您不太可能希望所有文件都具有执行权限。

不过,您可能确实希望添加 setgid 位,以便所有用户在此处创建的文件继承与目录相同的组所有权:

chmod g+s /usr/local/javaagent/appagent/ver2/logs/Tomcat1
Run Code Online (Sandbox Code Playgroud)

或者使用八进制,一步:

chmod 2775 /usr/local/javaagent/appagent/ver2/logs/Tomcat1
Run Code Online (Sandbox Code Playgroud)

它提供了这些权限:

drwxrwsr-x
Run Code Online (Sandbox Code Playgroud)

s在那个位置是 setgid 位)或

chmod 2770 /usr/local/javaagent/appagent/ver2/logs/Tomcat1
Run Code Online (Sandbox Code Playgroud)

这使

drwxrws---
Run Code Online (Sandbox Code Playgroud)

要检查目录的权限和所有者,请使用ls -ld

ls -ld /usr/local/javaagent/appagent/ver2/logs/Tomcat1
Run Code Online (Sandbox Code Playgroud)