授予程序所有者文件访问权限以及用户文件访问权限

授予程序所有者文件访问权限以及用户文件访问权限

我有一个可执行文件(由 Python 代码创建),我需要它来访问我创建的文件以及运行可执行文件的人创建的文件。我是不允许更改权限文件。

以下是示例:
user1 是可执行文件和 user1_file 的所有者
user2 是 user2_file 的所有者 user2 有望运行该可执行文件

>>> ls -al
drwxr-xr-x 12 user1 group1 4096 Jan  2 13:48 executable
-rw------- 1 user1 group1 272 Feb 14 14:32 user1_file
-rw------- 1 user2 group2 272 Feb 14 14:32 user2_file

这是我尝试过的

  1. 直接以 user2 身份运行:
    会失败,因为他没有对 user1_file 的读取权限
  2. 为可执行文件设置 suid,然后以 user2 身份运行:
    它成功读取 user1_file,但无法读取 user2_file
  3. os.system('chmod u-s executable')更新在访问 user2_file 之前执行的 python 代码:
    不允许此操作。即使允许,我也会担心当程序现在以 user2 权限运行时如何重新添加 suid。

是否有某种方法可以允许用户 1 和用户 2 同时具有可执行文件的权限?或者是否有办法暂时停止用户 1 的权限?

答案1

解决我的问题的步骤

  1. os.seteuid(os.getuid())在读取 user2_file 之前,将以下行添加到 python 代码中
  2. 重新生成可执行文件
  3. 为可执行文件设置 suchmod u+s executable

更多细节
主要思想是将进程的有效uid改为真实uid

了解 Linux 进程的情感、真实和保存的 uid/gid:这关联帮助我
根据需要更改有效 uid/guid。这问题有帮助

相关内容