Intereting Posts
Попытка сохранить вывод команды файла в переменную, но на выходе указано «нет такого файла существует»? Как работает ssh, когда клиент и хост находятся на одной машине? Не удается обновить Manjaro во время chroot Как кэшированная память работает для исполняемых файлов? Параллельное выполнение программы по нескольким файлам Может ли файловая система FAT32 и NTFS существовать без UUID? Отмена выхода и возврат в оболочку Проблемы с nmap-сканированием с использованием прокси-сервера ssh с proxychains Есть ли способ настроить Libreswan на оппортунистическое создание IPSec SA с удаленным узлом путем предварительной загрузки сертификатов или ключей? Показать пользовательское загрузочное сообщение Количество файлов в каждой папке, где имя папки соответствует шаблону Разделить 4 дорожки WAV-файл на 2 стерео WAV-файла Проблема ldconfig с нестандартным каталогом lib в CentOS как сообщить tar только исключить каталог из корня, но не каталог с тем же именем глубже в дереве? Регистрация% pre во время кикстарта – файл журнала не существует после загрузки

Создание ключа GnuPG для apache

Вот сценарий, мы используем GnuPG для шифрования данных между двумя веб-серверами. 1 находится на RHEL. GnuPG будет доступен через скрипты cgi для шифрования и дешифрования. Поэтому мне нужен брелок, доступ к которому имеет пользователь apache. Это оказалось для меня трудным для Red Hat, и я смог легко настроить эту настройку на Ubuntu. Вот что я пытался, может быть, у кого-то есть лучший / более простой способ достичь этого.

Я стал пользователем Apache

su -s /bin/bash apache 

при запуске

 gpg --gen-key 

он не смог создать каталог .gnupg в / var / www, поэтому я создал это и установил для владельца apache.apache. теперь, когда вы создаете ключи, я получаю

 can't connect to `/var/www/.gnupg/S.gpg-agent': No such file or directory gpg-agent[26949]: command get_passphrase failed: Operation cancelled gpg: cancelled by user gpg: Key generation canceled. 

поэтому я создал этот файл, немного прочитав man-страницу (и некоторые поисковые запросы)

 mknod -m 700 S.gpg-agent p 

теперь я получаю

 can't connect to `/var/www/.gnupg/S.gpg-agent': Connection refused gpg-agent[26949]: command get_passphrase failed: Operation cancelled gpg: cancelled by user gpg: Key generation canceled. 

После этого я не смог никуда уйти, поскольку я попадаю в районы, о которых я мало что знаю. Я предполагаю, что это связано с тем, что apache на самом деле не является пользователем с момента создания профиля bash и т. Д. Итак, где я могу перейти отсюда?

Вы пытались создать нового пользователя и вместо этого использовать команду sudo? Если вы опасаетесь, что это может быть проблема с разрешением, и более простой способ – удалить узел агента из / var / www до того, как мы знаем, доступен пользователю gpg, может быть, директорию / tmp. Вы можете вручную указать местоположение узла агента, изменяя переменную env GPG_AGENT_INFO.

Вероятно, это проблема с разрешением файла устройства. 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 .

Я подозреваю, что это регресс в отношении этой ошибки https://rhn.redhat.com/errata/RHBA-2011-1096.html

Из исправлений:

Это обновление устраняет следующую ошибку:

  • До этого обновления возникла проблема при вводе пароля с помощью утилиты pinentry-curses; вместо диалогового окна ввода пароля было отображено сообщение об ошибке, если pinentry-curses выполнялся под пользователем, отличным от пользователя, которому принадлежит текущий tty. Эта ошибка была исправлена ​​в этом обновлении, так что теперь не отображается сообщение об ошибке, а pinentry-curses запрашивает пароль, как ожидалось. (BZ # 677665)

Проблема заключается в том, что когда вы su или sudo, tty по-прежнему принадлежит первоначальному владельцу tty, который взрывает булавки.

Отмечу, что мы не смогли создать gpg-ключи, как вчера любой пользователь, кроме root, в системе Cent 6. Чтобы сгенерировать ключи, нам пришлось регистрироваться как root, создавать ключи, копировать .gpg-каталог в домашний каталог пользователя и изменять право собственности.