Я пытался установить SSL-сертификат (GoDaddy), следуя их инструкциям для nginx на Centos. Zip-файл, который я скачал из GoDaddy, содержит 3 файла - первичный сертификат, промежуточный сертификат и файл PEM.
У меня есть root-доступ для моего Ubuntu VPS.
Но когда я использую
sudo cat f84e19a2f44c6386.crt gd_bundle-g2-g1.crt >> coolexample.crt
, я получаю
bash: coolexample.crt: Permission denied.
Попытайтесь войти в систему как суперпользователь с
sudo -s
и затем попробуйте свою команду снова без sudo в начале.
причина, почему это не работает, состоит в том, потому что перенаправление сделано оболочкой а не кошкой. См. этот ответ для получения дополнительной информации: https://askubuntu.com/a/230482
Когда sudo cat a
выполняется, файл , содержание было считано и распечатано на stdout с sudo
полномочия. Перенаправление текста было обработано оболочкой и будет добавлено в файл b (так как >>
использовался). В данном случае кажется, что файл не имел разрешения, которое будет изменено несуперпользователем.
, Хотя выполняя оболочку, поскольку корень с помощью sudo su
, sudo -i
или sudo -s
, кажется, хорошая идея преодолеть это ограничение, , но это не предлагается. Это могло бы произойти, который оболочка выполняла с sudo
полномочия и невольно не выходя из корневой оболочки, некоторая другая команда используется. И если та команда вводится с опечаткой, она может нанести серьезный ущерб системе.
В таких случаях, cat
вывод может быть передан по каналу, и tee
может использоваться. Это - утилита, которые читают вход из стандартного входа и выводов в файл и стандартный вывод. Так как Вы хотите добавить файл, -a
, опция может использоваться. Поэтому команда будет похожа:
sudo cat f84e19a2f44c6386.crt gd_bundle-g2-g1.crt | sudo tee -a coolexample.crt
я предположил, что f84e19a2f44c6386.crt и gd_bundle-g2-g1.crt не имел полномочий, которые будут считаны обычными пользователями .