从 bash_profile 移动 sudo 命令

从 bash_profile 移动 sudo 命令

我使用的是 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。有什么更好的方法可以解决这个问题?

  • 一个想法是将这些线路移到不同的地方,但是移到哪里呢?
  • 还有其他想法吗?

谢谢,

答案1

除了使用 SUID 位,您还可以允许无密码 sudo/etc/sudoers对于您的或中的这一个命令(和这个特定的用户)/etc/sudoers.d/ifconfig

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

答案2

重要提示:如果您发现此过程存在安全问题,或者有更好更安全的方法,请发表评论。我将不胜感激。

根据@AFH 评论的建议,我这样做了,并且有效:

首先,我复制ifconfig到一个新文件夹。

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

之后,我应用了SETUID

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

最后,我修改了.bash_profile,删除了sudo命令

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

相关内容