2016-11-07 35 views
2

我想在Linux中将一个命令列入黑名单或将其添加到sudo以避免意外输入。如何在Linux中黑名单命令?

我试图解决我的RVM出于某种原因,类型:

rvm reset

而且失去了所有的gemsets。

我想将此行为更改为sudo rvm reset,并可能添加一条说明此命令将执行的操作的注释。

+0

'搭配chmod 700 \'这RVM \'' –

回答

1
chown root `which rvm` 
chmod 0700 `which rvm` 

限制宝石delete命令使用这样的事情:

chown -R root `rvm gemdir` 
sudo chmod -R 0755 `rvm gemdir` 

即使CHMOD也许是不必要的。但是,您需要使用sudo来安装新的gemset。

+0

但是,这将使每一个RVM指挥权须藤?不知道我是否需要像“rvm gemset list”那样简单地完成任务。更感兴趣的东西,可以搞砸你的环境,而不是阅读'删除'方面。这就像'〜'中的'sudo ls'。 – tomordonez

+0

是的,因为这个命令改变了rvm文件的所有权和rwx权限,所以对于该命令的所有调用都需要root权限。 – nopasara

+0

还有另一种方法...如果您的gemsets文件将其所有权更改为root并且限制写入其他群组。所以rvm将无权删除它们。但是这将需要chown和chmod来处理任何新的gemset。 – nopasara

2

我会换一个外壳函数各地RVM:

rvm() { 
    case $1 in 
     reset) 
      echo "danger Will Robinson" >&2 
      echo "run 'command rvm reset' if you really want it" >&2 
      ;; 
     *) command rvm "[email protected]" ;; 
    esac 
} 
+0

这是一个很好的建议,因为它只影响在终端中交互式运行命令。它不会意外地影响您或其他用户的任何工具,脚本和服务。 –

+0

谢谢@ glenn-jackman。我如何实现这一点?在rvm的二进制文件或如何? – tomordonez

+0

只需将其添加到〜/ .bashrc中,然后添加'source〜/ .bashrc' –