我有一个shell脚本(Bash),它反过来调用proc
二进制文件。它使用scheduled
在特定时间安排,用户ID为c62feed
。我们还有其他后端系统使用了reco
和accreter
等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?
答案 0 :(得分:1)
请注意,如果文件MHS_PA,MHS_NJ和MHS_MB之前已由reco
创建,则程序由c62feed
运行时,除非程序首先删除unlink()
的文件,这些文件将由reco
保留。 666权限是有问题的;公共写入权限总是有问题的。但它确实意味着您的程序可以写入不属于c62feed
的文件。
您应该小心删除文件(或移动它们,或移动目录),然后重试。我希望您发现新创建的文件始终归c62feed
所有。
没有root
权限运行的进程在运行时更改UID的方法有很多种。一个例外是如果程序将SUID(设置用户ID)位设置为一个用户并且由另一个用户运行。
proc
计划有哪些权限?