默认情况下,Ubuntu tomcat7 上的设置在“tomcat7”用户和组下运行。我想更改它,因为我无法通过 sftp 文件上传到由“tomcat7”进程创建的目录。
在 /etc/init.d/tomcat7 中更改 TOMCAT7_USER TOMCAT7_GROUP 并重新启动服务没有帮助..
默认情况下,Ubuntu tomcat7 上的设置在“tomcat7”用户和组下运行。我想更改它,因为我无法通过 sftp 文件上传到由“tomcat7”进程创建的目录。
在 /etc/init.d/tomcat7 中更改 TOMCAT7_USER TOMCAT7_GROUP 并重新启动服务没有帮助..
我首先将您的 /etc/init.d/tomcat7 文件恢复到原来的状态。只有在极少数情况下,您才需要手动编辑 /etc 中与 init 相关的文件。如果有用于此目的的内置工具,请使用该工具。
使用 chown 更改您尝试上传到的目录的用户或用户和组。
例如,如果您尝试上传到的目录类似于 /home/tomcat7/new_directory,请执行以下操作:
cd /home/tomcat7
chown tomcat7:staff new_directory
那么 new_directory 仍将由 tomcat7 拥有,但组人员中的任何用户现在都将拥有 new_directory 的组权限。
如果您需要将您的用户名添加到组人员,您可以使用
usermod -aG staff username
其中 username 是您要将文件上传到 new_directory 的用户的名称。
如果之后仍然无法正常工作,您可能还需要检查该目录的权限。
MtWoRw@WorkVM:/home/tomcat7$ ls -l
total 8
drwxr-xr-x 2 tomcat7 tomcat7 4096 Oct 2 17:02 new_directory
-rw-r--r-- 1 tomcat7 tomcat7 6 Oct 2 17:03 regular_file.txt
MtWoRw@WorkVM:/home/tomcat7$
d 表示它是一个目录,接下来的三个点表示目录的用户/所有者可以做什么,之后的三个点是组可以做什么(这个组部分是你要查看的)和最后三个是世界可以做的。确保 new_directory 具有该组读取、写入和执行的权限(读取以便您可以查看内容,写入以便您可以向其中添加/上传新文件,并执行以便您能够打开目录(执行行为有点目录与常规文件不同))。
使用 chmod 更改目录或文件的权限。你会输入类似的东西
chmod 775 /home/tomcat7/new_directory
数字中的第一个数字对应于用户可以做什么,第二个数字对应于组可以做什么,第三个数字对应于世界可以做什么。这里有一个很好的解释你需要解决这个问题的一切。
这是在 Debian 7 实例(与 Ubuntu 非常相似)上对我有用的方法。
似乎 /etc/init.d/tomcat7 启动脚本中存在错误。start-stop-daemon 的手册页说,可以使用 -c 参数设置守护进程的用户和组。另请注意,tomcat7 启动脚本读入 /etc/default/tomcat7,所有默认设置都应在此处设置。
因此,要以用户 app0000 身份运行我的 tomcat 进程,但使用组 tomcat7(而不是使用组 app0000,这是用户 app0000 的主要组)和 setuid 002 权限,以便组 tomcat7 中的用户可以删除 app0000 的文件,我有以下设置:
在 /etc/passwd 中:
tomcat7:x:120:65534::/usr/share/tomcat7:/bin/false
app0000:x:2000:2000:app0000:/home/app0000:/bin/bash
在 /etc/group 中:
tomcat7:x:120:
app0000:x:2000:
在 /etc/default/tomcat7 中:
TOMCAT7_USER=app0000
TOMCAT7_GROUP=tomcat7
使日志、临时和工作组可写:
drwxr-xr-x 11 tomcat7 tomcat7 4096 Mar 13 02:40 .
drwxr-x--- 6 tomcat7 tomcat7 4096 Mar 29 15:06 ..
drwxr-xr-x 2 tomcat7 tomcat7 4096 Mar 29 15:33 bin
drwxr-xr-x 2 tomcat7 tomcat7 4096 Mar 29 14:30 conf
drwxr-xr-x 25 tomcat7 tomcat7 4096 Mar 29 07:54 confluence
drwxr-xr-x 2 tomcat7 tomcat7 4096 Mar 29 07:54 lib
-rw-r--r-- 1 tomcat7 tomcat7 38657 Nov 28 2011 LICENSE
drwxr-xr-x 3 tomcat7 tomcat7 4096 Mar 13 02:40 licenses
drwxrwxr-x 2 tomcat7 tomcat7 4096 Mar 29 15:04 logs
-rw-r--r-- 1 tomcat7 tomcat7 574 Nov 28 2011 NOTICE
-rw-r--r-- 1 tomcat7 tomcat7 2291 Mar 13 02:40 README.html
-rw-r--r-- 1 tomcat7 tomcat7 1212 Mar 13 02:40 README.txt
-rw-r--r-- 1 tomcat7 tomcat7 8680 Nov 28 2011 RELEASE-NOTES
-rw-r--r-- 1 tomcat7 tomcat7 6836 Nov 28 2011 RUNNING.txt
drwxrwxr-x 2 tomcat7 tomcat7 4096 Mar 29 13:16 temp
drwxr-xr-x 2 tomcat7 tomcat7 4096 Mar 13 02:40 webapps
drwxrwxr-x 3 tomcat7 tomcat7 4096 Mar 29 15:19 work
最后(我认为这是最重要的部分),修复 /etc/init.d/tomcat7:
start-stop-daemon --start -b -u "$TOMCAT7_USER" -g "$TOMCAT7_GROUP" \
-c "$TOMCAT7_USER:$TOMCAT7_GROUP" -k 002 -d "$CATALINA_TMPDIR" \
-p "$CATALINA_PID" -x /bin/bash -- -c "$AUTHBIND_COMMAND $TOMCAT_SH"
(起初:)
start-stop-daemon --start -b -u "$TOMCAT7_USER" -g "$TOMCAT7_GROUP" \
-c "$TOMCAT7_USER" -d "$CATALINA_TMPDIR" \
-p "$CATALINA_PID" -x /bin/bash -- -c "$AUTHBIND_COMMAND $TOMCAT_SH"