Некоторые программы на Linux, которые используют конфигурационные файлы, хотите, чтобы я ввел свой пароль в простом тексте в одном из их конфигурационных файлов. Например, newsbeauter, RSS-ридер хочет, чтобы я ввел свой пароль учетной записи Google в ~/.newsbeauter/config, если я хочу считать подачу Google Reader. Дурак также сортирует, хочет пароль в текстовом файле, но дает опцию ввода его на каждом входе в систему.
Там какое-либо безопасное обходное решение к хранению пароля в файле конфигурации как этот (например, для newsbeauter)? Я думал о запущении приложения как корень, но это не кажется правильным. Или так или иначе создавая и удаляя файл каждый раз я использую приложение.
Какие-либо идеи?
Тонкая настройка полномочий не защитит от противника, у которого есть доступ к Вашим дискам (украденный ноутбук).
Вы не можете защитить от противника, который имеет корень в Вашей рабочей системе, но можно защитить себя от украденного диска или различного not-too-smart вредоносного программного обеспечения, с этими двумя методами:
Настройте маленькую зашифрованную файловую систему (используйте dm-склеп или truecrypt, например), затем замените свои файлы конфигурации символьными ссылками, которые указывают на некоторое место в зашифрованном разделе. Это просто развернуться, но подвергает Вас опасности, когда зашифрованная фс смонтирована
mount encrypted fs under /mnt/crypt
cp ~/.application/config /mnt/crypt/app-config
ln -s /mnt/crypt/app-config ~/.application/config
unmount encrypted fs to lock config
Замените свои файлы конфигурации именованными каналами (mkfifo). Это будет только работать хорошо, если приложение считает конфигурацию в единственной передаче; после запуска приложение заблокируется при чтении файла конфигурации, пока Вы не запишете это в именованном канале. Можно затем сохранить зашифрованную версию файла где-то в другом месте (использование, например, gpg); при необходимости дешифруйте содержание с gpg и отправьте его на лету в канал. Это немного более безопасно, поскольку Вы должны предоставить вручную каждый доступ к файлу, но возможно менее удобны.
# setup
gpg -e -r my-address@domain.com <~/.application/config ~/.application/config.pgp
mkfifo ~/.application/config
# run application, application hangs waiting for config
gpg -d <~/.application/config.pgp >~/.application/config
При выполнении некритического программного обеспечения, поскольку корень почти никогда не является хорошей идеей.
Что необходимо сделать, вместо этого изменение полномочия этих файлов так, чтобы только (пользователь, который запускает эти программы) можно было считать их. Чтобы удалить, например, читать, запишите и разрешение выполнения для кого-либо, но Вас на файле mine.conf
, Вы были бы под своим accout
chmod og-rwx mine.conf
Или другой прием должен поместить файл конфигурации в каталоге, но убрать полномочия чтения для этого также так, чтобы Вы не видели, внутри просто делают
chmod a-r безотносительно /
Так, чтобы можно было только видеть в нем, если Вы - корень, или можно просто помнить то, чем файл называют также, но Вы все еще смогли бы сделать все в файл внутри, пока Вы знаете имя файла или если Вы - корень, чтобы сделать
sudo ls безотносительно /