2014-03-12 55 views
1

这个删除须藤权限可能是一个非常简单的问题。我很抱歉,如果它是重复的。 我想知道如何删除一个特定命令的sudo权限。我创建了安装一堆.deb软件包的脚本,它需要sudo来做到这一点,但在这一个命令需要没有sudo权限运行,所以我会怎么做呢?我使用的是Ubuntu,这是一个bash脚本。一个命令

我打电话给我的脚本:ROS_install

这里是脚本的一部分:

sudo dpkg -i /home/forklift/Desktop/ROS/ros-hydro-laser-proc_0.1.3-0precise-20131015-2054-+0000_amd64.deb 

sudo dpkg -i /home/forklift/Desktop/ROS/ros-hydro-urg-c_1.0.403-0precise-20131010-0128-+0000_amd64.deb 

      sudo rosdep init 
sleep 2 
      rosdep update 

命令 “rosdep更新” 的需求没有sudo权限运行。我认为它已经存在,但每次运行脚本时都会收到警告,并在安装后被锁定在命令之外。

回答

0

而不是给更高权限的整个剧本,只是给他们到需要它们的实际命令。也就是说,而非

$ sudo my_script 

修改my_script只在那些需要它的命令使用sudo。举例来说,如果这是你的脚本:

command1 
command2 
command3 
command4 
command5 

command3是非sudo命令,修改你的脚本读取

sudo command1 
sudo command2 
command3 
sudo command4 
sudo command5 

在这个过程中,想到是否command1实际上需求到与sudo一起运行,或者它可以在没有运行的情况下运行。这样,您应该能够极大地减少脚本中实际需要使用sudo运行的命令的数量。

+0

目前这就是我所拥有的。但是当涉及到那个特定的命令时,它会给我发出一个警告,说“你不应该用sudo运行这个命令”,即使sudo没有写在那个命令前面。也许我在做别的事情 – user244985

+0

请发布脚本的相关部分,如果不是全部的话。 – chepner

+0

我刚刚为你添加了脚本的那部分内容 – user244985

1

我假设你在呼唤你的脚本,如:

sudo script.sh

而且你不希望所有的脚本中的命令以root身份运行。

如果你的脚本是这样的:

apt-get install perl 
apt-get install python 
mv trash /home/user/ 

而你只想要运行的前两个命令为根,你可以指定第三个像一个特定的用户:

su -c "mv trash /home/user/" user

在哪里user是你想要运行该命令的用户名。

这将允许你在母公司层面进行单次通话须藤当你调用脚本。

如果您不希望用户名硬编码,您可以使用像logname这样的命令来获取您登录的用户的用户名。

1

如果你的命令具有完全权限运行,它也有特权,降级自己的特权,是好是一个命令的时间,通过运行su

touch /privileged 
su -c 'cp /privileged /tmp/not' nobody 
相关问题