执行python脚本时,如何查找执行sudo的用户名?

时间:2019-05-02 06:43:11

标签: python operating-system chown

我正在编写将在不同计算机上运行的代码。 内部代码中,日志文件需要创建为“ / tmp / 2019-05-02 / log_file” ,即每天创建一个子目录,然后在新文件夹中创建日志文件。因此,要在“ / tmp”目录中创建目录,我需要将代码运行为

sudo python /path/to/code.py

以后用相同的代码我每天需要在“文档” 中创建另一个目录。这个新创建目录的所有者是root,因为我的代码以sudo运行。 当我想从UI应用程序:Files删除Documents中这个新创建的子目录时,真正的问题就出现了。

所以我所做的是更改了目录权限。这样我就可以毫无问题地删除此文件夹。

os.chmod("/path/to/directory/inside/Documents", 0747)

但是现在我 ls 进入文档。这些新创建的文件夹显示为带有绿色背景的蓝色文本,表示该目录可被拥有用户和组以外的其他人写入,并且没有设置粘性位(o + w,-t)。

是否可以通过某种方式使/ tmp / 2019-05-2内部创建的文件夹的所有者为root,而Documents内部创建的文件夹为普通用户拥有(我从该用户那里以sudo身份执行程序)。

在我的计算机上,用户是 dell 。由于知道用户名,因此可以在计算机中使用chown更改所有者。但是,即使代码在具有不同用户名的不同计算机上执行,我也需要更改所有者。

1 个答案:

答案 0 :(得分:0)

恕我直言,最可靠的方法是使用os.getlogin()。它返回与 session 相关的登录名,并且只能通过setlogin系统调用来更改,这在普通程序(ref.)中很少使用。

Python手册说:

  

在大多数情况下,使用环境变量LOGNAME或USERNAME找出用户是谁更有用...

但是unix手册页解释了背后的原理:

  

...这更加灵活,因为用户可以任意设置LOGNAME。