/etc/ssh/sshd_config
有沒有辦法透過終端機中的一個指令來改變「PermitRootLogin」的值?
我想更改此文件的值而不打開它,並將“PermitRootLogin”的值從 yes 更改為 no。
答案1
完全可以使用sed
、匹配行並更改值來做到這一點:
sed -i '/^PermitRootLogin/s/yes/no/' /etc/ssh/sshd_config
^PermitRootLogin
匹配以以下開頭的行PermitRootLogin
s/yes/no
將選項的值從“是”變更為“否”
答案2
我想將“PermitRootLogin”的值從 yes 更改為 no。
在這種情況下,我將使用 Perl(即與字段一起使用並且可以就地編輯的東西;Sed 在第一個失敗,AWK 在第二個失敗):
sudo perl -i -lane '/^PermitRootLogin/?print("@F[0] no"):print($_)' /etc/ssh/sshd_config
% grep ^PermitRootLogin /etc/ssh/sshd_config
PermitRootLogin without-password
% sudo perl -i -lane '/^PermitRootLogin/?print("@F[0] no"):print($_)' /etc/ssh/sshd_config
[sudo] password for user:
% grep ^PermitRootLogin /etc/ssh/sshd_config
PermitRootLogin no
答案3
您可以使用 sed 更改它們,使用 -i 選項
sed -i -e 's/old/new/g' file
有關詳細信息,請參閱 man sed
答案4
open()
任何以任何方式處理文件的程序都必鬚髮出read()
系統調用,這可以通過strace
.沒有這些系統呼叫就不可能開啟文件
您的問題似乎是詢問是否可以在沒有文字編輯器的情況下編輯文件。正如其他人所表明的那樣,這是可能的。我在這裡的一點貢獻如下:
awk '/^PermitRootLogin/{$2="yes"}1' /etc/ssh/sshd_config > /tmp/sshd_config && mv /tmp/sshd_config /etc/ssh/sshd_config
基本上使用 AWK ,我們找到適當的行,將字段 2 (“否”)替換為“是”,將所有內容輸出到 tmp 文件並使用mv
.
請記住,該設定檔的所有權屬於 root ,因此您需要sudo
存取權限(sudo
在先前新增mv
)