Я пытаюсь запустить ADB на сервере Linux с несколькими пользователями, где я не являюсь пользователем root (чтобы играть с моим эмулятором Android). Демон adb записывает свои логи в файл, /tmp/adb.log
который, к сожалению, жестко запрограммирован в ADB, и эта ситуация не изменится .
Таким образом, ADB не в состоянии бежать, давая очевидную ошибку: cannot open '/tmp/adb.log': Permission denied
. Этот файл создан другим пользователем и /tmp
имеет прикрепленный бит. Если я начну adb с adb nodaemon server
записи в stdout, ошибок не будет (я также установил для его порта уникальное значение, чтобы избежать конфликтов).
Мой вопрос: есть ли способ заставить ADB записать в другой файл, чем /tmp/adb.log
? В более общем смысле, есть ли способ создать своего рода символьную ссылку для конкретного процесса? Я хочу перенаправить все обращения к файлам /tmp/adb.log
, скажем, к файлу ~/tmp/adb.log
.
Опять же , я не корень на сервере, поэтому chroot
, mount -o rbind
и chmod
не являются допустимыми вариантами. Если возможно, я бы не хотел изменять источники ADB, но, конечно, если других решений нет, я сделаю это.
PS Для конкретного случая ADB я могу прибегнуть к работе adb nodaemon server
с nohup
перенаправлением вывода и выводу, но общий вопрос все еще актуален.
LD_PRELOAD
хитрости, хотя это будет сложнее.
/home/$USER/tmp/adb.log
и перестроить adb :)
/tmp/adb.log
, или даже смонтировать его собственный приватный файл/tmp
. делайman unshare
иman namespaces
иman nsenter
.