Letsencrypt permission denied
Wygenerowałeś darmowy certyfikat Let's Encrypt. Dodałeś go do serwera. Uruchamiasz serwer i dostajesz komunikat "fopen:Permission denied" lub podobny ? Jest prosty sposób aby sobie z tym poradzić.
Dlaczego dostaję komunikat o braku dostępu ?
Właścicielem katalogu /etc/letsencrypt i znajdującym się w nim plików jest root. Server jest natomiast uruchamiany z uprawnieniami innego użytkownika. Użytkownik ten nie ma dostępu do odczytu certyfikatu.
Jak to naprawić ?
Jako przykład podam usługę mosquito na Raspberry Pi ale równie dobrze może to być Apache, Express.js na node, mailu.io itp. Cokolwiek co potrzebuje dostępu do certyfikatu. Musimy tylko wiedzieć, któremu użytkownikowi nadać uprawnienia. Tu będzie to użytkownik mosquitto. Będę potrzebował polecenia:
setfacl
W moim przypadku nie jest ono domyślnie zainstalowane więc muszę je pobrać.
sudo apt install acl
Teraz wystarczy wykonać polecenie, które nada użytkownikowi uprawnienia r i x do wszystkiego, co znajduje się w katalogu /etc/letsencrypt. Jak ktoś chce to może być bardziej precyzyjny. Na potrzeby tego artykułu powinno to jednak wystarczyć:
setfacl -R -m u:mosquitto:rx /etc/letsencrypt/
Oznaczenia:
- -R - rekursywny
- -m - modyfikacja
- u:mosquitto - użytkownik mosquitto
- :rx - uprawnienia r i x
Poprawność wykonania można sprawdzić komendą:
getfacl /etc/letsencrypt/