我正在尝试在不具有root用户的多个用户的linux服务器上运行ADB(与我的android模拟器一起玩)。adb守护程序将其日志写入文件/tmp/adb.log
,不幸的是,该日志似乎已硬编码到ADB中,这种情况不会改变。
因此,adb无法运行,给出了明显的错误:cannot open '/tmp/adb.log': Permission denied
。该文件是由另一个用户创建的,/tmp
具有粘性。如果我通过adb nodaemon server
将adb 写入stdout来启动它,则不会发生任何错误(我还将其端口设置为唯一值以避免冲突)。
我的问题是:有什么方法可以使ADB写入另一个文件/tmp/adb.log
?更一般而言,是否有一种方法可以创建一种特定于过程的符号链接?我想将所有文件访问重定向/tmp/adb.log
到一个文件~/tmp/adb.log
。
同样,我不是服务器的root用户,所以chroot
,mount -o rbind
并且chmod
不是有效的选项。如果可能的话,我不想修改ADB的来源,但是如果没有其他解决方案,我一定会做的。
PS对于特定的ADB案例,我可以求助于adb nodaemon server
with nohup
和输出重定向,但是一般问题仍然很重要。
LD_PRELOAD
技巧,尽管那会更加复杂。
/home/$USER/tmp/adb.log
和重建adb 会更容易:)
/tmp/adb.log
,甚至/tmp
完全挂载其自己的专用文件。做man unshare
和man namespaces
和man nsenter
。