我有一个shell脚本(Bash),它反过来调用proc
二进制。使用scheduled
在指定时间调度,用户id为c62feed
。我们有其他后台系统使用的id,如reco
和accreter
。我最近注意到这个脚本是使用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将在一个时间切换?
请注意,如果文件MHS_PA, MHS_NJ和MHS_MB之前是由reco
创建的,当程序由c62feed
运行时,除非程序首先使用unlink()
删除文件,否则这些文件将保留为reco
所有。666权限是有问题的;公共写许可总是有问题的。但这确实意味着你的程序可以写入不属于c62feed
的文件。
您应该小心地删除文件(或移动它们,或移动目录),然后再试一次。我希望您会发现新创建的文件始终属于c62feed
。
对于没有使用root
权限运行的进程来说,在它运行的时候改变UID的方法并不多。一个例外是,如果程序将SUID(设置用户ID)位设置为一个用户,并且由另一个用户运行。
proc
程序的权限是什么?