单个进程以多个用户标识运行

时间:2014-05-09 02:20:01

标签: bash shell unix proc

我有一个shell脚本(Bash),它反过来调用proc二进制文件。它使用scheduled在特定时间安排,用户ID为c62feed。我们还有其他后端系统使用了recoaccreter等ID。我最近注意到此脚本是使用c62feed运行的,但此脚本创建的输出文件部分使用c62feed,另一半使用reco。并且所有这些文件都是同时创建的,因此没有人可以手动使用reco并运行此过程。我在下面显示了示例输出文件的详细信息:

-rw-rw-rw-   1 reco     162399477 May  8 12:03 MHS_PA
-rw-rw-rw-   1 reco     32012461 May  8 12:03 MHS_NJ
-rw-rw-rw-   1 c62feed  21707404 May  8 12:03 MHS_PC
-rw-rw-rw-   1 reco     27782603 May  8 12:03 MHS_MB
-rw-rw-rw-   1 c62feed  71198525 May  8 12:03 MHS_PW

您可以看到使用这两种文件创建了文件。我想知道是否有可能。我检查了这个脚本和proc。我们无处使用reco id。

我想知道是否有可能一次切换用户ID?

1 个答案:

答案 0 :(得分:1)

请注意,如果文件MHS_PA,MHS_NJ和MHS_MB之前已由reco创建,则程序由c62feed运行时,除非程序首先删除unlink()的文件,这些文件将由reco保留。 666权限是有问题的;公共写入权限总是有问题的。但它确实意味着您的程序可以写入不属于c62feed的文件。

您应该小心删除文件(或移动它们,或移动目录),然后重试。我希望您发现新创建的文件始终归c62feed所有。

没有root权限运行的进程在运行时更改UID的方法有很多种。一个例外是如果程序将SUID(设置用户ID)位设置为一个用户并且由另一个用户运行。

proc计划有哪些权限?