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 execroot 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/shadowes 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.