怎么让desktop文件以sudo命令ubuntu运行程序命令

您的浏览器已经禁用了脚本,这会严重影响您正常使用本站的功能,请开启!
当前位置: &
sudo命令用来以其他身份来执行命令,预设的身份为root。在/etc/sudoers中设置了可执行sudo指令的用户。若其未经授权的用户企图使用sudo,则会发出警告的邮件给管理员。用户使用sudo时,必须先输入密码,之后有5分钟的有效期限,超过期限则必须重新输入密码。
sudo(选项)(参数)
-b:在后台执行指令;
-h:显示帮助;
-H:将HOME环境变量设为新身份的HOME环境变量;
-k:结束密码的有效期限,也就是下次再执行sudo时便需要输入密码;。
-l:列出目前用户可执行与无法执行的指令;
-p:改变询问密码的提示符号;
-s&shell&:执行指定的shell;
-u&用户&:以指定的用户作为新的身份。若不加上此参数,则预设以root作为新的身份;
-v:延长密码有效期限5分钟;
-V :显示版本信息。
指令:需要运行的指令和对应的参数。
配置sudo必须通过编辑/etc/sudoers文件,而且只有超级用户才可以修改它,还必须使用visudo编辑。之所以使用visudo有两个原因,一是它能够防止两个用户同时修改它;二是它也能进行有限的语法检查。所以,即使只有你一个超级用户,你也最好用visudo来检查一下语法。
visudo默认的是在里打开配置文件,用vi来修改文件。我们可以在编译时修改这个默认项。visudo不会擅自保存带有语法错误的配置文件,它会提示你出现的问题,并询问该如何处理,就像:
&&& sudoers : syntax error, line 22 &&
此时我们有三种选择:键入&e&是重新编辑,键入&x&是不保存退出,键入&Q&是退出并保存。如果真选择Q,那么sudo将不会再运行,直到错误被纠正。
现在,我们一起来看一下神秘的配置文件,学一下如何编写它。让我们从一个简单的例子开始:让用户Foobar可以通过sudo执行所有root可执行的命令。以root身份用visudo打开配置文件,可以看到类似下面几行:
specification
# User privilege specificationroot
ALL=(ALL)ALL
我们一看就明白个差不多了,root有所有权限,只要仿照现有root的例子就行,我们在下面加一行(最好用tab作为空白):
foobar ALL=(ALL)
保存退出后,切换到foobar用户,我们用它的身份执行命令:
[foobar@localhost ~]$
ls: /root: 权限不够
[foobar@localhost ~]$ sudo ls /root
anaconda-ks.cfg Desktop .log install.log.syslog
好了,我们限制一下foobar的权利,不让他为所欲为。比如我们只想让他像root那样使用ls和,把那一行改为:
foobar localhost=
/sbin/ifconfig,
再来执行命令:
[foobar@localhost ~]$ sudo
-5 /etc/shadow
Sorry, user foobar is not allowed to execute '/usr/bin/head -5 /etc/shadow'
root on localhost.localdomain.
[foobar@localhost ~]$ sudo /sbin/ifconfigeth0
Linkencap:Ethernet HWaddr 00:14:85:EC:E9:9B...
现在让我们来看一下那三个ALL到底是什么意思。第一个ALL是指网络中的主机,我们后面把它改成了主机名,它指明foobar可以在此主机上执行后面的命令。第二个括号里的ALL是指目标用户,也就是以谁的身份去执行命令。最后一个ALL当然就是指命令名了。例如,我们想让foobar用户在linux主机上以jimmy或rene的身份执行命令,这样编写配置文件:
linux=(jimmy,rene)
但这还有个问题,foobar到底以jimmy还是rene的身份执行?这时我们应该想到了sudo -u了,它正是用在这种时候。 foobar可以使用sudo -u jimmy kill PID或者sudo -u rene kill PID,但这样挺麻烦,其实我们可以不必每次加-u,把rene或jimmy设为默认的目标用户即可。再在上面加一行:
Defaults:foobar
runas_default=rene
Defaults后面如果有冒号,是对后面用户的默认,如果没有,则是对所有用户的默认。就像配置文件中自带的一行:
另一个问题是,很多时候,我们本来就登录了,每次使用sudo还要输入密码就显得烦琐了。我们可不可以不再输入密码呢?当然可以,我们这样修改配置文件:
foobar localhost=NOPASSWD:
/bin/, /bin/ls
再来sudo一下:
[foobar@localhost ~]$ sudo ls /rootanaconda-ks.cfg Desktop install.log
install.log.syslog
当然,你也可以说&某些命令用户foobar不可以运行&,通过使用!操作符,但这不是一个好主意。因为,用!操作符来从ALL中&剔出&一些命令一般是没什么效果的,一个用户完全可以把那个命令拷贝到别的地方,换一个名字后再来运行。
日志与安全
sudo为安全考虑得很周到,不仅可以记录日志,还能在有必要时向系统管理员报告。但是,sudo的日志功能不是自动的,必须由管理员开启。这样来做:
/var/log/sudo
vi /etc/syslog.conf
在syslog.conf最后面加一行(必须用tab分割开)并保存:
local2.debug
/var/log/sudo
重启日志守候进程,
把得到的syslogd进程的PID(输出的第二列是PID)填入下面:
kill &HUP PID
这样,sudo就可以写日志了:
[foobar@localhost ~]$ sudo ls /rootanaconda-ks.cfg
Desktop install.log
install.log.syslog
$cat /var/log/sudoJul 28 22:52:54 localhost sudo:
TTY=pts/1 ; =/home/ USER= =/bin/ls /root
不过,有一个小小的&缺陷&,sudo记录日志并不是很忠实:
[foobar@localhost ~]$ sudo cat /etc/shadow & /dev/null
cat /var/log/sudo...Jul 28 23:10:24 localhost sudo:
foobar : TTY=pts/1 ;
PWD=/home/ USER= COMMAND=/bin/cat /etc/shadow
重定向没有被记录在案!为什么?因为在命令运行之前,shell把重定向的工作做完了,sudo根本就没看到重定向。这也有个好处,下面的手段不会得逞:
[foobar@localhost ~]$ sudo ls /root & /etc/shadowbash: /etc/shadow: 权限不够
sudo 有自己的方式来保护安全。以root的身份执行sudo-V,查看一下sudo的设置。因为考虑到安全问题,一部分环境变量并没有传递给sudo后面的命令,或者被检查后再传递的,比如:PATH,HOME,SHELL等。当然,你也可以通过sudoers来配置这些环境变量。
最近更新的命令
在Linux命令大全(man.linuxde.net)可以查询您所需要的Linux命令教程和相关实例。如果您觉得本站内容对您有所帮助,请推荐给更多需要帮助的人。Mac OS X 启用超级用户 sudo -s 获得系统权限 Mac终端命令
  OSX 采用的Unix文件系统,所有文件都挂在跟目录& /& 下面,所以不在要有Windows 下的盘符概念。比如什么&C:&你在桌面上看到的硬盘都挂在 /Volumes 下。
  比如接上个叫做&XX&的移动硬盘,桌面上会显示出一个硬盘图标,它实际在哪里呢?
  在终端里执行:&ls /Volumes/XX&, 看看显示出的是不是这个移动硬盘的内容。
  驱动所在位置: /Systme/Library/Extensions
  用户文件夹位置: /User/用户名
  桌面的位置: /User/用户名/Desktop
  根目录位置是 / 核心 Mach_kernel 文件通配符为星号 *
  注意:在 Unix系统中是区别大小写字符的,A.txt 不等于 a.txt。根目录标志 / 不是可有可无,cd /System 表示转到跟目录下的System中,而cd System 表示转到当前目录下的 System中。
  进入命令行操作模式
  再图形界面下,用finder 打开 应用程序》实用程序》终端
  如果连图形界面都进不去了(比如安错了显示驱动),开机时按 F8,用-s参数启动,然后输入命令 mount -uw /
  获得权限
  为了防止误操作破坏系统,再用户状态下时没有权限操作系统重要文件的,所以先要取得root权限:&sudo -s&
  然后输入密码,输入密码时没有任何回显,连星号都没有,只管输完回车就行了。
  以下是一些常用命令~
  清理系统 -----使用以下命令:sudo periodic daily然后回车,输入管理员密码即可。如果把daily换成weekly,则运行的是每周的清理。换成monthly,就是做每月的清理。如果直接输入:sudo periodic daily weekly monthly 然后回车。就等于把三个清除一起做了
  列出文件 ---- ls
  例: 想看看跟目录下有什么,
  想看看驱动目录下有什么,
  ls /System/Library/Extensions
  参数 -w 显示中文,-l 详细信息, -a 包括隐藏文件
  转换目录 ---- cd
  例:想查看驱动目录下的文件
  cd /System/Library/Extensions
  建立新目录 ---- mkdir
  例:在驱动目录下建一个备份目录 backup
  mkdir /System/Library/Extensions/backup
  在桌面上建一个备份目录 backup
  mkdir /User/用户名/Desktop/backup
  拷贝文件 ---- cp
  例:想把桌面的Natit.kext 拷贝到驱动目录中
  cp -R /User/用户名/Desktop/Natit.kext /System/Library/Extensions
  参数R表示对目录进行递归操作,kext在图形界面下看起来是个文件,实际上是个文件夹。
  把驱动目录下的所有文件备份到桌面backup
  cp -R /System/Library/Extensions/* /User/用户名/Desktop/backup
  移动文件 ---- mv
  例:想把AppleHDA.Kext 移到桌面
  mv /System/Library/Extensions/AppleHDA.kext /User/用户名/Desktop
  想把AppleHDA.Kext 移到备份目录中
  mv /System/Library/Extensions/AppleHDA.kext /System/Library/Extensions/backup
  删除文件 ---- rm
  例:想删除驱动的缓存
  rm -rf /System/Library/Extensions.kextcache
  rm -rf /System/Library/Extensions.mkext
  参数-rf 表示递归和强制,千万要小心使用,如果执行了 &rm -rf /& 你的系统就全没了
  更改文件权限 ---- chmod
  例:把驱动目录下所有文件设定到root读写,其他用户只读
  chmod -R 755 /System/Library/Extensions
  参数R 表示递归,755表示各用户的权限
  脚本文件名 ---- sh
  例:修改驱动后所有需要的操作存成一个脚本,以后修改了驱动后只要运行一次这个脚本就可以了.
  1. 终端中运行nano /clean
  2. 把下列代码粘贴到 nano 中
  rm -rf /System/Library/Extensions.kextcache
  rm -rf /System/Library/Extensions.mkext
  chown -R root:wheel /System/Library/Extensions
  chmod -R 755 /System/Library/Extensions
  diskutil repairpermissions /
  kextcache -k /System/Library/Extensions/
  3. Ctrl +O 存盘,Ctrl+X 退出
  4. 以后只要动了驱动,就在终端中运行一次 sh /clean
  看晕了没?这只是列了其中一部分呢,呵呵,举一个具体的常用例子说一下,我会尽可能用上以上的命令~
  (记得每次操作前 sudo -s 获得系统权限)
  例:比如说我们下载了一个显卡驱动 Weiphone.zip,在桌面解压得到了一个Weiphone.kext,该怎么做呢?步骤如下:
  答: 1.先备份所有驱动,这好像是习惯问题,但往往良好的习惯可以解决很多不必要的问题,
  方法:mkdir /User/用户名/Desktop/backup 在桌面上建立备份文件夹
  cp -R /System/Library/Extensions/* /User/用户名/Desktop/backup 备份驱动文件
  2.安装
  方法:cp -R /User/用户名/Desktop/Weiphone.kext /System/Library/Extensions 把它拷贝到系统驱动目录位置
  sh /clean 执行清理脚本,操作完成
  这一步经常会出现问题,原因可能有很多,但我肯定的是你自已的问题,呵呵~补救方法:
  方法:开机按F8,用 -s 参数启动
  执行 mount -uw /
  rm -rf /User/用户名/Desktop/Weiphone.kext 删除这个驱动
  sh /clean 执行清理脚本,操作完成
  重启,回到原先状态了,显卡没特效怎么行呢,需要修改 Natit的 Info. plist 文件才行.
  cp -R /User/用户名/Desktop/Weiphone.kext /System/Library/Extensions 把它拷贝到系统驱动目录位置
  nano /System/Library/Extensions/Weiphone.kext/Info.plist
  编辑完成后 用 Ctrl +O 存盘,Ctrl+X 退出
  sh /clean 执行清理脚本,操作完成
  重启,这回对了,显卡特效都有了,该弄声卡了,天知道会出什么事,得把现有成果保护好。
  mkdir /User/用户名/Desktop/gooddrivers 专为有效驱动建个目录
  cp -R /System/Library/Extensions/Weiphone.kext /User/用户名/Desktop/gooddrivers 备份
  编辑完成后 用 Ctrl +O 存盘,Ctrl+X 退出
  sh /clean 执行清理脚本,操作完成
  成功了,也把修改好的驱动备份一下把。
  -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
  以下这个方法是给哪些经常折腾电脑的同学们的~
  问:如果我们将驱动全给弄乱了怎么办?
  答:没关系,前提我们做好了备份了所有驱动文件
  开机按F8,用 -s 参数启动
  执行 mount -uw /
  rm -rf /System/Library/Extensions/* 既然乱了,通通干掉
  cp -R /User/用户名/Desktop/backup/* /System/Library/Extensions/ 把原始驱动拷贝回来
  cp -R /User/用户名/Desktop/gooddrivers/* /System/Library/Extensions/ 把修改好的驱动拷贝回来
  sh /clean 执行清理脚本,操作完成
  问:Mac OS X 启用超级用户的方法?
  答:先扫盲,名词解释:Root user,又名超级用户,是一个权力最高的Unix 账户,Root 的账户能在整个系统里任何部份进行任何&操作&,包括:拷贝档案、移动/移除档案、执行程序等。所以,通常 Root 的账户都只会指派给高级专业的用户使用。因此,苹果把Root user 隐藏在Mac OS X 里。
  但有时候我们不得不启用Root用户以便于实现某些操作,可以通过以下三种方法把启动Root账户。
  还是要乱幌拢root user没什么事最好不要乱弄,相当于做内科手术,搞不好就会大事。
  方法一:
  把Mac OS X 的安装光盘放入到光驱中,用光盘启动系统,在安装菜单里选择&Password Reset&选项,便能更改你的密码和启动超级用户模式。(把这工具拷贝到硬盘中是不能启动的,一定要从光盘启动才有效。) 建议指数***
  方法二:
  在Mac OS X里启动Terminal(在&应用程序/实用工具&的文件夹中),输入以下命令:
  sudo passwd Root
  系统会实时要求输入 Root user的新密码,然后再输入一次,以确保密码正确。 建议指数*****
  方法三:
  启动NetInfo Manager应用程序(在&应用程序/实用工具&的文件夹中),再依照以 下步骤:
  1. 从菜单中选择&域&&&用户&&&启动Root用户&
  2. 点按窗口底部的&锁状&按钮,然后输入在安装过程中提供的用户名称和密码注册。
  3. 从窗口下半部份的列表中选择 * 号一栏,再输入 Root user 已加密的新密码。
  可在 Terminal 里输入以下的「htpasswd」命令来产生加密的新密码:
  [localhost:~] currentuser% htpasswd -nb anylogin yourpassword
  [return]
  [localhost:~] currentuser% anylogin : pu9fQgdzVHRB2
  pu9fQgdzVHRB2 就是已加密的新密码
  4. 点按窗口底部的&锁状&按钮,然后储存更改和离开 NetInfo Manager。
  现在可以在 Terminal 里试试 Root user 的新密码 建议指数****
  问:如何通过终端命令删除Finder中无法删除的文件
  答:这里我先介绍一个经常性的问题。有人常常因为某种原因。比如死机、文件下载一半意外退,这时经常有文件无法删除,系统提示你权限不够。这个时候我们就可以利用一行简单的命令进行删除。
  1.打开终端应用程序
  2.输入命令:sudo rm -r -f &你要删除的文件&
  还要注意终端命令是区分大小写的,全部小写。
  3.把你要删的文件或者文件夹用mouse拖进终端窗口,好多个也可以一起拖。
  4.然后在终端中回车
  5.输入当前管理员用户密码。如果没有密码就直接回车。注意不是root账号的密码。
  6.终端中没有任何提示信息表明成功删除
  注意:如果用这个命令还无法删除,有两种可能性:一是你删除的是系统正在使用的临时文件之类的。二是有可能你的硬盘目录出现问题。这时请先用磁盘工具检查一下你的硬盘。
  解释:sudo命令:任何命令前都可以加上sudo,sudo表示是管理员权限,可直接管理系统中较重要的文件,一般使用需要询问密码。输入管理员密码后,才能完成操作。
  关机命令 ---- sudo shutdown -h now
  有些时候系统出问题关机不成功可以试试用命令行进行关机,毕竟裸关电源不好。最初我的机器有时死机我就是用命令行关机的。诡异的很自从刚买机器的时候死过2次机就再也没有斯过了。终端中还可以使用halt命令配合其他参数实现关机,但推荐shutdown~
  隐藏文件命令 ---- 隐藏文件命令:好像Mac下有插件可以显示隐藏文件,至于隐藏文件的插件我没听说过。但我窃以为既然要隐藏文件其目的就是不喜欢别人发现,当然还是复杂点比较好。mv命令是用来移动文件的,但是如果还在同一个路径下则为重命名,通常Mac中以&.&开头的文件为隐藏文件,所以我们可以用mv命令来实现文件的隐藏。比如说有个文件名为Tool,我想隐藏,则应该到Tool的路径下,例如Tool在Program文件夹下,则应到Program文件夹下使用
  mv Tool .Tool
  则实现Tool的隐藏。同理mv .ToolTool就能实现隐藏Tool的显示。这里提到的到Program文件夹下当然就要用cd命令。在Linux/Unix系统中,最上一层的目录为&/&称之为根目录,任何目录总是在根目录之下的,例如Program可能是&/home/Program/Tool&,这样我们只需要
  cd /home/Program
  就能对Tool进行隐藏操作了。&cd .&表示本级目录即操作不会发生变化,&cd ..&表示回到父目录,比如&cd/home/Program&后&cd ..&表示到home文件夹下。显示隐藏文件,则要显示某个文件夹下的隐藏文件,可用&cd&到该文件夹下利用命令
  则可以看到该文件夹下的所有文件即包含隐藏文件。
  以上内容仅供参考,部分内容转自Kiss&Cry的博客,在此感谢~
  到中饭时间了,关掉屏幕,送上一个小技巧:control+shift+Eject,(eject就是我们键盘右上角哪个打开光盘的的哪个键),任意键恢复~ 本文网址 //20955.html
更多相关资讯
推荐 精华文章
声明:本站所有文章内容均由网友提供或转载于互联网,版权归为作者所有
若有文章侵犯了您的权益,请马上联系删除。
苏ICP备号-4linux(7)
Java(18)
在Linux下临时执行一些高权限命令需要用到sudo,但是sudo命令在运行时要求输入用户密码,这在手工操作的时候没什么问题,但若放在程序中调用sudo命令就比较麻烦,特别是若要在后台服务程序(如Java Servlet)中执行sudo命令的话,是没有可以是输入密码的地方的,这就要找个办法,能够自动给sudo命令提供密码,或者索性让sudo命令不需要密码也能执行。
1. 直接传递sudo密码
首先尝试了自动给sudo传输密码,方法如下:
echo \&password\& | sudo -S exec-cmd这是利用linux的“管道”功能将密码通过标准输入传递给sudo,这就要求sudo命令带有-S参数,这个参数告诉sudo从标准输入stdin中获取密码,并且将输出信息写入到stderr设备中,而不是通过终端(Terminal)传递输入输出。这个命令在终端窗口中执行正常,但是放到Java代码中却没见效果。代码如下:
import java.io.IOE
import java.io.InputStreamR
import java.io.LineNumberR
public class LogicVolume
private static void runCmd(String cmd) throws IOException, InterruptedException
System.out.println(cmd);
Process process = Runtime.getRuntime().exec(cmd);
InputStreamReader ir = new InputStreamReader(process.getInputStream());
LineNumberReader input = new LineNumberReader(ir);
while((line = input.readLine()) != null)
System.out.println(line);
protected static String sudoCmd = &sudo &;
* @param args
* @throws IOException
* @throws InterruptedException
public static void main(String[] args) throws IOException, InterruptedException
testExecuteCommand();
private static void testExecuteCommand() throws IOException, InterruptedException
String cmd = LogicVolume.sudoCmd + &ls -l /home/kingfox&;
LogicVolume.runCmd(cmd);
执行的结果是把echo后面的字符串输出了一遍,没有真正执行sudo命令,看来是错误的方法。
2. 利用bash调用sudo
后来在网上查了资料,说是可以启动bash来执行sudo,于是把代码改写如下:
import java.io.IOE
import java.io.InputStreamR
import java.io.LineNumberR
* @author kingfox
public class LogicVolume
private static void runCmds(String[] cmds) throws IOException, InterruptedException
for(String cmd : cmds)
System.out.print(cmd);
System.out.print(' ');
Process process = Runtime.getRuntime().exec(cmds);
InputStreamReader ir = new InputStreamReader(process.getInputStream());
LineNumberReader input = new LineNumberReader(ir);
while((line = input.readLine()) != null)
System.out.println(line);
protected static String sudoCmd = &echo \&Abcd123456\& | sudo -S &;
* @param args
* @throws IOException
* @throws InterruptedException
public static void main(String[] args) throws IOException, InterruptedException
testExecuteCommand();
private static void testExecuteCommand() throws IOException, InterruptedException
String cmds[] = {&/bin/bash&, &-c&, sudoCmd + &ls -l /home/kingfox&};
LogicVolume.runCmds(cmds);
执行结果如下:
看来这是可以正常运行的。
3. 取消sudo密码
还有一种彻底的方法,可以不要用密码,方法是修改/etc/sudoers文件,在其中加上一行:
ALL=(ALL) NOPASSWD:ALL其中,username是当前试图执行sudo的用户的用户名。
这样修改之后,在终端中执行sudo命令就不再需要密码了,而上面的程序中sudoCmd的赋值也可以改成这样:
protected static String sudoCmd = &sudo &;不过这种做法可能会导致潜在的安全隐患,所以建议还是使用第2中种方法为好。
下面是一个完整的运行sudo命令的Java类:
import java.io.IOE
import java.io.InputStreamR
import java.io.LineNumberR
* 这个类用于在Java程序中构建和执行Linux中的sudo命令。
1. 执行buildCommands(...)方法构造sudo命令串。有两种方法可以构造sudo命令串:
若调用builderCommands(String cmd)方法构造sudo命令串,则此前应先修改/etc/sudoers文件,
在其中添加一行:
ALL=(ALL) NOPASSWD:ALL
其中,&username&是需要运行这个程序的用户名。
若不想修改/etc/sudoers文件,则需要调用builderCommands(String cmd, String passwd)方法
构造sudo命令串,
注意:无论使用哪种方法,形参cmd中均值包含需要以sudo方式执行的命令,不包含&sudo&命令本身。
2. 调用run(String[] cmds)执行由buildCommands返回的命令串数组。
1. 修改/etc/sudoers文件,在其中添加一行:
ALL=(ALL) NOPASSWD:ALL
其中,&username&是需要运行这个程序的用户名。
2. 调用run(String cmd)方法执行命令。
注意:形参cmd中仅包含需要以sudo方式执行的命令字符串,不要包含&sudo&命令本身。
* @author kingfox
public class SudoExecutor
public static void run(String cmd) throws IOException, InterruptedException
String sudoCmd = &sudo & +
System.out.println(sudoCmd);
Process process = Runtime.getRuntime().exec(sudoCmd);
InputStreamReader ir = new InputStreamReader(process.getInputStream());
LineNumberReader input = new LineNumberReader(ir);
while((line = input.readLine()) != null)
System.out.println(line);
public static void run(String[] cmds) throws IOException, InterruptedException
/* __debug_code__
for(String cmd : cmds)
System.out.print(cmd);
System.out.print(' ');
System.out.println();
Process process = Runtime.getRuntime().exec(cmds);
InputStreamReader ir = new InputStreamReader(process.getInputStream());
LineNumberReader input = new LineNumberReader(ir);
while((line = input.readLine()) != null)
System.out.println(line);
* @param cmd
public static String[] buildCommands(String cmd)
// to use this method, you should modify /etc/sudoers
String[] cmds = {shellName, shellParam, sudoCmd + & & + cmd};
public static String[] buildCommands(String cmd, String sudoPasswd)
String[] cmds = {shellName, shellParam, &echo \&& + sudoPasswd + &\& | & + sudoCmd + & -S & + cmd};
protected static String sudoCmd = &sudo&;
protected static String shellName = &/bin/bash&;
protected static String shellParam = &-c&;
* @param args
* @throws InterruptedException
* @throws IOException
public static void main(String[] args) throws IOException, InterruptedException
SudoExecutor se = new SudoExecutor();
se.testExecuteCommand();
private void testExecuteCommand() throws IOException, InterruptedException
String cmd = &cat /etc/sudoers&;
SudoExecutor.run(cmd);
// should modify /etc/sudoers
SudoExecutor.run(buildCommands(cmd));
// should modify /etc/sudoers
SudoExecutor.run(buildCommands(cmd, &Abcd123456&));
// don't need modify /etc/sudoers
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:78609次
积分:1112
积分:1112
排名:千里之外
原创:34篇
(3)(1)(9)(3)(1)(1)(1)(9)(2)(1)(3)}

我要回帖

更多关于 dos命令运行程序 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信