Одиночные кавычки не гнездятся. Поскольку у вас есть одинарные кавычки в команде sed, используйте двойные кавычки для внешнего набора. Затем обязательно экранируйте \$a
, чтобы она не интерпретировалась как переменная оболочки с именем $a
.
sudo su - root -c "sed -i '\$a\\PermitRootLogin yes' /etc/ssh/sshd_config"
Однако вы можете избежать проблем с цитированием, избавившись от всего бизнеса su -
. sudo
уже дает вам root доступ, не нужно объединять его с su
. После того, как вы это сделаете, вам больше не нужны два набора кавычек, и проблема полностью исчезнет.
sudo sed -i '$a\PermitRootLogin yes' /etc/ssh/sshd_config
Кстати, sed немного сложен, если все, что вы хотите сделать, это добавить строку текста. Он скопирует исходный файл во временный файл, добавит строку к копии, а затем заменит оригинал копией. Вы можете избежать этих издержек, используя >>
или tee -a
, любой из которых добавит строку на место без всего копирования.
sudo sh -c 'echo "PermitRootLogin yes" >> /etc/ssh/sshd_config'
sudo tee -a /etc/ssh/sshd_config <<< 'PermitRootLogin yes' > /dev/null