Estou escrevendo um programa para configurar novas Debian
instalações, mas não consigo sed
fazer o que quero. Quero adicionar novos usuários sshd_config
comoallowed users
mas recebo isso: Este é o resultado que recebo agora:
6
7 AllowUsers user
8 AllowUsers something78
9 AllowUsers something7
10 AllowUsers something78
11 AllowUsers something79
12 AllowUsers something78
13 AllowUsers something7
14 AllowUsers something78
onde deveria estar: O resultado esperado é este:
AllowUsers user
AllowUsers something7
AllowUsers something78
AllowUsers something79
Aqui está o código:
setUPsshd()
4 {
5 if grep "Port $PORT" /etc/ssh/sshd_config
6 then
7 echo "sshd already set, skipping!"
8 else
9 #/bin/cp -f "$CURRENTDIR"/sshd_config /etc/ssh/sshd_config
10 sed -i "s/Port 22/Port $PORT/" /etc/ssh/sshd_config
11 for user in `awk -F: '$3 > 1000 { print $1 }' /etc/passwd`
12 do
13 sed -i "/AllowUsers/a AllowUsers $user" /etc/ssh/sshd_config
14 done
15 USERNAME=`awk -F: '$3 == 1000 { print $1 }' /etc/passwd`
16 if ! grep "AllowUsers $USERNAME" /etc/ssh/sshd_config
17 then
18 sed -i "/AllowUsers/a AllowUsers $USERNAME" /etc/ssh/sshd_config
19 fi
20 echo "chmod 644 /etc/ssh/sshd_config"
21 echo "/etc/init.d/ssh restart"
22 fi
23 }
Aqui está a saída de depuração:
+ PORT=22301
+ setUPsshd
+ grep 'Port 22' /etc/ssh/sshd_config
+ /bin/cp -f /tmp/svaka/sshd_config /etc/ssh/sshd_config
+ sed -i 's/Port 22/Port 22301/' /etc/ssh/sshd_config
++ awk -F: '$3 > 1000 { print $1 }' /etc/passwd
+ for user in `awk -F: '$3 > 1000 { print $1 }' /etc/passwd`
+ sed -i '/AllowUsers/a AllowUsers something79' /etc/ssh/sshd_config
+ for user in `awk -F: '$3 > 1000 { print $1 }' /etc/passwd`
+ sed -i '/AllowUsers/a AllowUsers something7' /etc/ssh/sshd_config
++ awk -F: '$3 == 1000 { print $1 }' /etc/passwd
+ USERNAME=something78
+ grep 'AllowUsers something78' /etc/ssh/sshd_config
+ sed -i '/AllowUsers/a AllowUsers something78' /etc/ssh/sshd_config
+ echo 'chmod 644 /etc/ssh/sshd_config'
chmod 644 /etc/ssh/sshd_config
+ echo '/etc/init.d/ssh restart'
/etc/init.d/ssh restart
PERGUNTA:
Como adiciono os usuários AllowedUsers
no sshd_config
sem as duplicatas? também você sabe o que está acontecendo no meu código?
adiciona um "AllowUsers $user" após cada linha AllowUsers existente.
Eu simplesmente substituiria os seds por um
A saída não é como eu pedi originalmente, mas funciona, então foi assim que eu fiz:
Esta linha encontra a linha com o padrão
AllowUsers
e substitui a linha inteira pela novaAllowUsers $users
Esta linha anexa o texto
AllowUsers $users
após o6th line
se o arquivo ainda não contiverAllowUsers
um aviso de que está escrito em duas linhas:Agora o programa escreve
sshd_config
desta forma,AllowUsers
é usado uma vez com umaspace
lista separada de usuários: