我正在尝试授予用户 tomcat8 对服务器上特定文件夹的写入和读取权限。我尝试了这个命令:
sudo chmod -R tomcat8 /usr/local/javaagent/appagent/ver2/logs/Tomcat1
然而它给了我
chmod: invalid mode: `tomcat8'
这怎么不管用呢?这不是标准吗chmod
?
答案1
您不能仅使用 来执行此操作chmod
。但是,您可以创建一个新组并更改目录的组所有权,将用户添加到该组,然后授予团体您想要的目录权限,这样您就可以只向该组授予权限。
要创建一个组tomcat
并将用户添加tomcat8
到其中:
sudo groupadd tomcat && sudo adduser tomcat8 tomcat
您可能还想将自己(以及此处需要读写权限的任何其他用户)添加到具有sudo adduser [username] tomcat
现在更改目录的组所有权:
sudo chown :tomcat /usr/local/javaagent/appagent/ver2/logs/Tomcat1
不要忘记冒号——这只是为了改变群组所有权。
现在更改权限,例如,你像这样为组添加读写权限:
sudo chmod g+rw /usr/local/javaagent/appagent/ver2/logs/Tomcat1
从你的问题来看,我不确定你想要什么其他设置。我建议阅读man chmod
并本权限指南更好地了解你正在做的事情。
目录需要执行权限可以输入和搜索,因此您很可能需要八进制775
(因此所有用户都可以读取和搜索,但只有组可以写入)或770
(因此只有所有者和组才有任何权限 - 保持目录私密)
不要使用,-R
因为您不太可能希望所有文件都具有执行权限。
您可能确实想添加 setgid 位,以便所有用户在此处创建的文件都继承与目录相同的组所有权:
chmod g+s /usr/local/javaagent/appagent/ver2/logs/Tomcat1
或者使用八进制,只需一步:
chmod 2775 /usr/local/javaagent/appagent/ver2/logs/Tomcat1
授予以下权限:
drwxrwsr-x
(s
该位置是 setgid 位)或
chmod 2770 /usr/local/javaagent/appagent/ver2/logs/Tomcat1
这使
drwxrws---
要检查目录的权限和所有者,请使用ls -ld
:
ls -ld /usr/local/javaagent/appagent/ver2/logs/Tomcat1