Einen Sudo-Befehl aus bash_profile verschieben

796
JonDoe297

Ich verwende Mac OS X El Capitan. Wegen Eclipse Che brauche ich diese Zeilen weiter.bash_profile

export DOCKER_VM_IP=$(docker run --rm --net host alpine sh -c "ip a show eth0" | grep 'inet ' | cut -d/ -f1 | awk '{ print $2}') sudo ifconfig lo0 alias $DOCKER_VM_IP 

Es ist ärgerlich, das Kennwort zu schreiben, wenn ich aufgrund eines sudoBefehls ein neues Terminalfenster öffne . Was könnte der bessere Ansatz sein, um dies zu beheben?

  • Eine Idee ist, diese Zeilen an einen anderen Ort zu verschieben, aber wo?
  • Irgendeine andere Idee?

Vielen Dank,

0
Ich verwende Linux, daher kann ich Folgendes nicht testen, aber Sie könnten versuchen, das SETUID-Bit unter `ifconfig 'zu verwenden, wie in sudo chmod -v +04000 $ (welches ifconfig)`. Wenn es OSX erlaubt, sollte dies root-Berechtigungen geben, wenn `ifconfig` ausgeführt wird. Wenn dies die Sicherheit zu stark verringert, können Sie "ifconfig" in ein lokales, privates Verzeichnis kopieren, der Kopie die SETUID hinzufügen und diese in Ihrer `bash '-Startdatei verwenden: Offensichtlich müssen Sie dies als" root "tun . AFH vor 7 Jahren 0

2 Antworten auf die Frage

2
KMZ

Anstatt SUID-Bit zu verwenden, können Sie kennwortlose Sudo für diesen einen Befehl (und diesen bestimmten Benutzer) in Ihrem /etc/sudoersoder zulassen /etc/sudoers.d/ifconfig:

youruser yourhost = (root) NOPASSWD: /sbin/ifconfig lo0 alias * 
0
JonDoe297

WICHTIG: Wenn Sie bei diesem Verfahren ein Sicherheitsproblem finden oder es einen besseren und sichereren Weg gibt, kommentieren Sie es bitte. Ich würde es schätzen.

Dem Ratschlag von @ AFH folgend, tat ich dies und es hat funktioniert:

Zuerst habe ich ifconfigin einen neuen Ordner kopiert .

$ cd /Users/username $ mkdir sbin $ sudo chown username:staff ./sbin $ sudo chmod 700 ./sbin $ cd sbin $ cp /sbin/ifconfig . 

Danach habe ich die SETUID angewendet

$ sudo chown root:wheel ./ifconfig $ sudo chmod +s ./ifconfig 

Schließlich habe ich .bash_profileden sudoBefehl geändert und den Befehl entfernt

export DOCKER_VM_IP=$(docker run --rm --net host alpine sh -c "ip a show eth0" | grep 'inet ' | cut -d/ -f1 | awk '{ print $2}') ~/sbin/ifconfig lo0 alias $DOCKER_VM_IP