Ich habe ein Mobilfunkmodem an meinen Server angeschlossen, mit dem ich Benachrichtigungs-E-Mails versenden möchte, wenn das Festnetz ausfällt.
Um den normalen Netzwerkzugriff und diesen außergewöhnlichen Mobilfunkmodemzugriff gut zu trennen, habe ich einen Netzwerk-Namespace erstellt und das Netzwerkgerät dort als einziges Gerät erstellt. Um ein Programm zu haben, benutze ich einfach das Zellenmodem ip netns exec
.
Die Falte ist, dass ich jedem Benutzer erlauben möchte, jedes gewünschte Programm im Namespace auszuführen, aber netns exec
root benötigt. Meine Lösung lautet wie folgt:
/ usr / local / sbin / _oob_shim:
#!/bin/sh
cmd_line="$@"
/bin/ip netns exec oob \
/usr/bin/sudo -u "#$SUDO_UID" -g "#$SUDO_GID" /bin/sh -c "$cmd_line"
/ etc / sudoers:
ALL ALL=NOPASSWD: /usr/local/sbin/_oob_shim
Ich denke, die einzige Möglichkeit, den Shim auszuführen, ohne bereits root zu sein oder das root-Passwort zu kennen, ist über sudo, und ich kann darauf vertrauen, dass sudo $ SUDO_UID und $ SUDO_GID auf die richtigen Werte setzt.
Öffne ich mich einem erheblichen Risiko? Oder sollte ich sagen, dass mir offensichtliche Einschränkungen fehlen?
sudo /usr/local/sbin/_oob_shim -u root cat /etc/shadow
es sich um ein Loch in Ihrer vorgeschlagenen Version handelt. Sie haben völlig Recht mit dem Zitat, ich werde damit beginnensudo -u "#$SUDO_UID" -g "#$SUDO_GID" -- "$@"
und weiter nach Sicherheitslücken suchen.