Что перезаписывает мои способные исходные файлы?

Вероятно, это проблема с разрешением файлов устройств. pinentry не использует унаследованные дескрипторы файлов, а пытается получить прямой доступ к переданному TTY, что не работает.

Вы можете запустить tty в оболочке и затем ls -l /dev/pts/1 с результатом, и вы, вероятно, заметите, что apache не имеет к нему доступа.

Вы также можете запустить

strace -o gpg.strace -f -e trace=open gpg --gen-key

и, вероятно, найдете что-то вроде

open("/dev/pts/1", O_RDONLY)      = -1 EACCES (Permission denied)

Опасное решение - это (временно) дать apache доступ к root консоли.... (chown apache /dev/pts/1). Лучшим решением будет реальный вход в систему как apache.

Это влияет только на генерацию ключей. Вы также можете создать пару ключей как другой пользователь, экспортировать её и импортировать в учётную запись apache.

1
09.01.2015, 01:46
1 ответ

Если вы не можете выяснить это из системной конфигурации или из онлайн-поиска, используйте loggedfs или auditd для мониторинга доступа к файлу. Смотрите Как определить, какой процесс создает файл?

Например, с помощью подсистемы аудита :

auditctl -a exit,always -w /etc/apt/sources.list.d/multistrap-debian.list

и просматривайте журналы в /var/log/audit/audit.log. Это скажет вам имя процесса, который изменяет файл. Вы можете захотеть посмотреть, что вызывает его; это можно сделать, установив на исполняемом файле часы, например

auditctl -a exit,always -w /usr/lib/somewhere/strange/apt-source-list-editor

, и вы получите запись для системного вызова execve, который выполняет программу.

1
27.01.2020, 23:51

Теги

Похожие вопросы