我在我的服务器中使用 ubuntu。
我有两个用户,让他们分别是user1和user2
每个用户都有自己的项目文件夹,并根据他们的需要设置权限。但是user1需要运行另一个用户项目文件夹中的 python 脚本。我用subprocess.Popen
这个。python 文件具有所需的访问权限,因此我在调用该脚本时没有问题。但是日志文件(对user2具有权限)会导致权限被拒绝错误(因为它们属于其他用户,而不是我需要使用的用户)。
所以我试图改变用户
Popen("exit", shell=True, stdin=sp.PIPE, stdout=sp.PIPE, stderr=sp.PIPE) #exit from current user, and be root again
Popen(["sudo", "user2"], shell=True, stdin=sp.PIPE, stdout=sp.PIPE, stderr=sp.PIPE)
Popen("/usr/bin/python /some/file/directory/somefile.py param1 param2 param3", shell=True, stdin=sp.PIPE, stdout=sp.PIPE, stderr=sp.PIPE)
但是第二个Popen
失败了
su:必须从终端运行
有没有办法在 python shell 中更改用户?
PS:由于某些原因,我无法更改有关日志文件的用户权限。我需要找到一种方法来切换到其他用户...
编辑:我需要做一些解释以使事情清楚......
我有两个不同的 Django 项目正在运行。每个项目都有一个用户,有自己的用户文件夹,每个项目代码和日志都保存在其中。
现在,在某些情况下,我需要将一些数据从 project1 传输到 projet2。在我看来,最简单的方法是编写一个接受参数并在第二个项目上执行相关工作 [数据插入] 的 python 脚本。
因此,当在 project1 中调用某些特定函数时,我希望调用 project2 项目文件夹中的 py 脚本,这样我就可以在第二个项目上进行数据更新。
但是,由于我Popen
在 project1 中调用,当前用户是 user1。但是我的脚本(在 project2 中)有一些日志文件,由于访问权限而拒绝了我......
所以,不知何故,我需要从 user1 切换到 user2,这样我就不会遇到权限问题,并调用我的 python 文件。或者,确实找到另一种方法来做到这一点..