Перемещение команды sudo из bash_profile

777
JonDoe297

Я использую Mac OS X El Capitan. Из-за Eclipse Che, мне нужны эти строки на.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 

Досадно писать пароль каждый раз, когда я открываю новое окно терминала из-за sudoкоманды. Какой может быть лучший подход, чтобы это исправить?

  • Одна идея состоит в том, чтобы переместить эти строки в другое место, но где?
  • Любая другая идея?

Спасибо,

0
Я использую Linux, поэтому не могу проверить следующее, но вы можете попробовать использовать бит SETUID в `ifconfig`, как в` sudo chmod -v +04000 $ (which ifconfig) `. Если OSX позволяет, это должно давать привилегии root при каждом запуске ifconfig. Если это слишком сильно снижает безопасность, вы можете скопировать `ifconfig` в локальный, приватный каталог, добавить в копию SETUID и использовать это в своем файле запуска` bash`: очевидно, вам нужно сделать это как `root` , AFH 8 лет назад 0

2 ответа на вопрос

2
KMZ

Вместо использования бита SUID вы можете разрешить sudo без пароля для этой одной команды (и этого конкретного пользователя) в вашем /etc/sudoersили /etc/sudoers.d/ifconfig:

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

IMPORTANT: If you find a security issue with this procedure, or there is a better and secure way to do it, please, comment. I would appreciate it.

Following the advice from @AFH's comment, I did this and it worked:

First, I copied ifconfig to a new folder.

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

After that, I applied the SETUID

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

Finally, I modified .bash_profile, removing the sudo command

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