允许不同的用户使用 touch -m 修改 wsgi 文件的时间
Allow different user ability to modify time of wsgi file with touch -m
我正在使用 mod_wsgi,它能够在发生更改时动态重新加载我的 run.wsgi 脚本。我的应用程序有很多文件,但只有 run.wsgi 受到更改的监视。文档建议在任何应用程序文件更改时仅 'touch' run.wsgi - 这确实有效。
我遇到的问题是我的应用程序位于与我站点的文档根目录不同的(专用)用户目录中(为了安全),在某些情况下,我需要拥有该站点的用户能够'touch' 其他用户目录中的 run.wsgi 文件(强制重新加载应用程序)。站点用户不能 touch -m /home/app-user/app/run.wsgi
touch: setting times of ‘/home/app-user/app/run.wsgi’: Operation not permitted
我已经创建了一个 "common" 组并更新了权限:
usermod -a -G commongrp site-user
usermod -a -G commongrp app-user
chgrp commongrp run.wsgi
chmod 770 run.wsgi
site-user 实际上能够修改 wsgi 文件,但我不想那样做。我只是想 "fake" 修改文件而不 实际上 修改它。有没有使用 linux 权限的安全方法,或者有更好的方法吗?
如果您使用 mod_wsgi 的守护进程模式(这是首选设置),而不是嵌入式模式,并且守护进程模式进程设置为 运行 作为用户,您可以访问系统,您可以改为向守护进程模式进程发送信号以使其重新启动。可以使用的标准信号是 SIGINT
和 SIGTERM
用于有序关闭。如果守护进程模式进程配置了正常超时,您还可以使用 SIGUSR1
并且它允许在进程关闭之前完成请求的时间更长。
如果您能够修改 WSGI 脚本文件,也可以在其中提供一个函数来决定在处理请求之前是否应重启守护进程。这将需要编写一个函数来检查其他文件的时间戳以确定是否应该重新启动。
如需进一步帮助,您最好使用 mod_wsgi 邮件列表。
我建议您使用 sudo 允许 site-user 到 运行 像 app-user 一样触摸。使用 visudo
编辑您的 sudoers 文件并创建如下条目:
site-user ALL=(app-user) NOPASSWD: /usr/bin/touch
然后 运行 它作为 app-user 只要你想用 sudo:
site-user$ sudo -u app-user /usr/bin/touch -m /home/app-user/app/run.wsgi
我正在使用 mod_wsgi,它能够在发生更改时动态重新加载我的 run.wsgi 脚本。我的应用程序有很多文件,但只有 run.wsgi 受到更改的监视。文档建议在任何应用程序文件更改时仅 'touch' run.wsgi - 这确实有效。
我遇到的问题是我的应用程序位于与我站点的文档根目录不同的(专用)用户目录中(为了安全),在某些情况下,我需要拥有该站点的用户能够'touch' 其他用户目录中的 run.wsgi 文件(强制重新加载应用程序)。站点用户不能 touch -m /home/app-user/app/run.wsgi
touch: setting times of ‘/home/app-user/app/run.wsgi’: Operation not permitted
我已经创建了一个 "common" 组并更新了权限:
usermod -a -G commongrp site-user
usermod -a -G commongrp app-user
chgrp commongrp run.wsgi
chmod 770 run.wsgi
site-user 实际上能够修改 wsgi 文件,但我不想那样做。我只是想 "fake" 修改文件而不 实际上 修改它。有没有使用 linux 权限的安全方法,或者有更好的方法吗?
如果您使用 mod_wsgi 的守护进程模式(这是首选设置),而不是嵌入式模式,并且守护进程模式进程设置为 运行 作为用户,您可以访问系统,您可以改为向守护进程模式进程发送信号以使其重新启动。可以使用的标准信号是 SIGINT
和 SIGTERM
用于有序关闭。如果守护进程模式进程配置了正常超时,您还可以使用 SIGUSR1
并且它允许在进程关闭之前完成请求的时间更长。
如果您能够修改 WSGI 脚本文件,也可以在其中提供一个函数来决定在处理请求之前是否应重启守护进程。这将需要编写一个函数来检查其他文件的时间戳以确定是否应该重新启动。
如需进一步帮助,您最好使用 mod_wsgi 邮件列表。
我建议您使用 sudo 允许 site-user 到 运行 像 app-user 一样触摸。使用 visudo
编辑您的 sudoers 文件并创建如下条目:
site-user ALL=(app-user) NOPASSWD: /usr/bin/touch
然后 运行 它作为 app-user 只要你想用 sudo:
site-user$ sudo -u app-user /usr/bin/touch -m /home/app-user/app/run.wsgi