2015-01-21 4 views
2

Я пытаюсь выяснить, как включить PermitRootLogin с OSX sed.Использование sed для установки PermitRootLogin на OSX

Я знаю об OSX sed проблема, когда вы должны дать пустую строку в начале.

мне просто нужно регулярное выражение я на самом деле нужно сделать:

если #PermitRootLogin да или нет #PermitRootLogin затем заменить PermitRootLogin yes

У меня есть:

sudo sed -i '' 's/#PermitRootLogin no/PermitRootLogin yes/g' /etc/sshd_config 

Но это не если ##PermitRootLogin yes

+0

удвоенная строка заменить индикатор 's/s /'? –

ответ

2

Версия sed в OS X требует па после -i для суффикса файла резервной копии.

Если вы не хотите, файл резервной копии, вы должны обеспечить явную пустую строку:

sed -i '' 's/^#?PermitRootLogin \(no\|yes\)/PermitRootLogin yes/' /etc/sshd_config 

Без этого аргумента, он принимает команду s/.../.../ как суффикс и /etc/sshd_config команды, как SED редактирования.

Обратите внимание, что некоторое время между Snow Leopard и El Capitan местоположение этого файла конфигурации SSH переместилось с /etc/sshd_config на /etc/ssh/ssh_config.

+0

Хорошо, это делает работу sed правильной, но регулярное выражение еще не работает ... –

+0

В начале команды присутствовал дополнительный 's /'. Кроме того, '' 'необходимо использовать в' sed' для формирования альтернатив. – Barmar

+0

кажется '/ etc/ssh/sshd_config', по крайней мере, 10.12 –

Смежные вопросы