打开根用户拥有的系统文件,以便使用python读取

打开根用户拥有的系统文件,以便使用python读取,python,file-io,permissions,Python,File Io,Permissions,商业案例… 我使用的应用服务器(Ubuntu/nginx/postgresql/python)将gzip系统日志文件作为根文件写入/var/log 我需要将这些日志文件中的数据呈现给用户的浏览器 我的方法 我需要在服务器端进行大量的搜索和字符串操作,这样我就有了一个python脚本来处理打开和处理,然后返回一个格式良好的JSON结果集。然后从web页面使用ajax调用python(cgi)脚本 我的问题 当从命令行以SU的形式调用脚本时,它工作得非常好,但是(…显然)我正在使用的文件打开方法(g

商业案例… 我使用的应用服务器(Ubuntu/nginx/postgresql/python)将gzip系统日志文件作为根文件写入/var/log 我需要将这些日志文件中的数据呈现给用户的浏览器

我的方法 我需要在服务器端进行大量的搜索和字符串操作,这样我就有了一个python脚本来处理打开和处理,然后返回一个格式良好的JSON结果集。然后从web页面使用ajax调用python(cgi)脚本

我的问题 当从命令行以SU的形式调用脚本时,它工作得非常好,但是(…显然)我正在使用的文件打开方法(gzip.open(filename))在Web服务器以用户www数据的形式调用时失败

其他有用信息 相关的应用程序服务器(合同上而不是物理上)有点像一个黑匣子——我有SU访问权限,我可以编写脚本,我可以阅读任何东西,但我不能更改文件权限,添加额外的python lib或修改配置。 可以使用此日志提取的用户子集也具有SU密码,因此可以显示一个登录对话框,我可以将其传递给脚本


考虑到我的限制,你会怎么做呢?

一个选择是在与web断开连接的后台进程中完成这项有些敏感的“su”工作

这个脚本很可能通过cron运行,它会获取root用户拥有的日志文件,可能会将它们更改为web端代码可以轻松处理的格式,比如将它们加载到数据库中,或者只是解压缩并将它们放置到权限稍松的不同位置

这样,web端代码就可以轻松地访问数据,而无需跳转到“su”环中


从我的角度来看,这个计划似乎没有违反你们的合同规定。web服务器配置、权限等保持不变。

我的两分钱。您应该尝试使用paramiko,允许您通过SSH访问主机(甚至“localhost”):

import paramiko
ssh = paramiko.SSHClient()
ssh.connect('127.0.0.1', username='jesse', password='lol')

由于您有机会请求登录名/密码,因此这些将是查询日志的用户提供的登录名/密码。访问这些文件只是一件事,或者在SSH下读取一个文件。一旦完成“敏感”工作,您就有机会关闭连接。

有可能。。。提供的数据不必是最新的,所以我想我可以每天浏览一次。先生,有+1,我就有戏了。日志是否包含敏感信息?可能如果是这样的话,将它们从一个安全的位置复制到一个web服务器可以轻松访问的位置将是一件非常困难的事情。。。