我正在编写将在不同计算机上运行的代码。 内部代码中,日志文件需要创建为“ / 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更改所有者。但是,即使代码在具有不同用户名的不同计算机上执行,我也需要更改所有者。
答案 0 :(得分:0)
恕我直言,最可靠的方法是使用os.getlogin()
。它返回与 session 相关的登录名,并且只能通过setlogin
系统调用来更改,这在普通程序(ref.)中很少使用。
Python手册说:
在大多数情况下,使用环境变量LOGNAME或USERNAME找出用户是谁更有用...
但是unix手册页解释了背后的原理:
...这更加灵活,因为用户可以任意设置LOGNAME。