标签: sudo

如何从需要SUDO的php调用shell脚本?

我有一个文件是一个bash脚本,需要SUDO才能工作.

我可以使用SUDO从命令行运行它但我会被提示输入SUDO密码.

我想从php运行这个脚本,shell_exec但如果我调用SUDO,它不像命令行,我可以提示输入密码.有没有办法通过sudo调用传递sudo的密码?

我怎样才能做到这一点?

php bash sudo shellexecute

45
推荐指数
3
解决办法
5万
查看次数

sudo cat << EOF>文件不起作用,sudo su呢

我在bash的命令提示符下尝试了以下内容:

sudo cat << EOF > /etc/yum.repos.d/some-name.repo
#Content
#....
#...
EOF
Run Code Online (Sandbox Code Playgroud)

它抱怨说:

-bash: /etc/yum.repos.d/some-name.repo: Permission denied
Run Code Online (Sandbox Code Playgroud)

然后我做了sudo su并尝试了除了sudo之前的完全相同的东西cat,它没有任何问题.上面我错过了什么?

bash shell sudo

44
推荐指数
5
解决办法
3万
查看次数

尝试使用sudo将文件附加到root拥有的文件时,权限被拒绝

当我尝试使用sudo将文件中的数据附加到另一个文件时,这是导致"权限被拒绝"的shell命令:

sudo cat add_file >> /etc/file
Run Code Online (Sandbox Code Playgroud)

文件at /etc/fileroot(即我)拥有,其权限是rw-r--r--.我应该root暂时让它成功还是有解决方法sudo

linux bash shell command-line sudo

43
推荐指数
4
解决办法
3万
查看次数

什么sudo -H做什么?

尝试用pip安装virtualenv之后

$ pip install virtualenv
Run Code Online (Sandbox Code Playgroud)

我得到了一个允许拒绝错误

IOError: [Errno 13] Permission denied: '/Library/Python/2.7/site-packages/virtualenv.py'
Run Code Online (Sandbox Code Playgroud)

所以我用sudo来安装virtualenv

$ sudo pip install virtualenv
Run Code Online (Sandbox Code Playgroud)

但随后出现了警告:

目录'/ Users/petertao/Library/Caches/pip/http'或其父目录不归当前用户所有,并且已禁用缓存.请检查该目录的权限和所有者.如果用sudo执行pip,你可能需要sudo的-H标志.

目录'/ Users/petertao/Library/Caches/pip'或其父目录不归当前用户所有,并且已禁用缓存轮.检查该目录的权限和所有者.如果用sudo执行pip,你可能需要sudo的-H标志.

sudo的-H标志有什么作用?

python terminal sudo pip virtualenv

42
推荐指数
1
解决办法
2万
查看次数

从python脚本以超级用户身份运行命令

因此,我正在尝试使用子进程从python脚本中以超级用户身份运行进程.在ipython shell中就像是

proc = subprocess.Popen('sudo apach2ctl restart',
                        shell=True, stdin=subprocess.PIPE,
                        stdout=subprocess.PIPE,
                        stderr=subprocess.PIPE)
Run Code Online (Sandbox Code Playgroud)

工作正常,但一旦我把它插入脚本,我开始得到:sudo: apach2ctl: command not found.

我猜这是由于sudo在ubuntu上处理环境的方式.(我也尝试sudo -E apche2ctl restartsudo env path=$PATH apache2ctl restart与无济于事)

所以我的问题基本上是,如果我想以apache2ctl restart超级用户身份运行,在需要时提示用户输入超级用户密码,我应该怎么做呢?我无意在脚本中存储密码.

编辑:

我已经尝试将命令作为字符串传递并标记为列表.在python解释器中,使用字符串我将正确地获得密码提示(仍然不像我原来的问题那样在python脚本中工作),列表只是给出了sudo的帮助屏幕.

编辑2:

所以我收集的是,当shell = True时,Popen将使用一些命令作为字符串,这需要

proc = subprocess.Popen(['sudo','/usr/sbin/apache2ctl','restart'])
Run Code Online (Sandbox Code Playgroud)

没有'shell = True'让sudo工作.

谢谢!

python sudo subprocess

41
推荐指数
6
解决办法
10万
查看次数

sudo在php exec()

我不知道这里的交易是什么......

所以我想运行一个AppleScript: sudo osascript myscript.scpt

这在终端中工作正常,但是当我通过PHP执行时却没有exec(); 什么都没发生.控制台说

no tty present and no askpass program specified ; TTY=unknown ; …
Run Code Online (Sandbox Code Playgroud)

我做了我的研究,似乎我错过了sudo命令的密码.我尝试了几种不同的方法来解决这个问题,包括:

  • %admin ALL=(ALL) ALL/etc/sudoers
  • proc_open()不是exec()

似乎没有一个工作,因此驱使我CrAzY!

基本上,是否有一种明确的方式让PHP执行简单的终端命令?

编辑:澄清,myscript.scpt是一个简单的AppleScript,它改变了屏幕上的UI(对于一个更大的项目).从理论上讲,osascript myscript.scpt应该足够了,但是sudo出于某种原因需要从系统中调用一些响应.如果sudo可以以某种方式消除,我不认为我会有这个权限问题.

php linux sudo

41
推荐指数
3
解决办法
11万
查看次数

让Haskell的hsenv在Ubuntu 13上工作

我正在努力GHC开发Ubuntu.做了以下事情:

sudo apt-get install ghc
sudo apt-get install cabal-install
cabal update
cabal install hsenv
Run Code Online (Sandbox Code Playgroud)

然后我尝试创建一个hsenv环境并得到以下内容:

xx@xx-VirtualBox:~/scm/t1$ hsenv
Creating Virtual Haskell directory structure
Installing GHC
Initializing GHC Package database at /home/xx/scm/t1/.hsenv/ghc_pkg_db
Copying necessary packages from original GHC package database
  Failed to copy optional package ghc-binary from system's GHC: 
    /usr/bin/ghc-pkg process failed with status 1
  Using user-wide (~/.cabal/packages) Hackage download cache directory
Installing cabal config at /home/xx/scm/t1/.hsenv/cabal/config
Installing activate script
Installing cabal wrapper using /home/xx/scm/t1/.hsenv/cabal/config at /home/xx/scm/t1/.hsenv/bin/cabal
Skipping …
Run Code Online (Sandbox Code Playgroud)

ubuntu sudo haskell

37
推荐指数
1
解决办法
766
查看次数

让sudo和nohup一起工作

Linux新手在这里.

我有一个perl脚本,它需要两个命令行输入.我试图在后台运行它但这就是我得到的:

[~user]$ nohup sudo ./ascii_loader_script.pl 20070502 ctm_20070502.csv &
[2] 19603
[~user]$ nohup: appending output to `nohup.out'
Run Code Online (Sandbox Code Playgroud)

系统返回"nohup:将输出附加到'nohup.out'"后,不会出现新提示.然后只要我输入其他命令,shell就会告诉我进程已停止:

[~user]$ nohup sudo ./ascii_loader_script.pl 20070502 ctm_20070502.csv &
[2] 19603
[~user]$ nohup: appending output to `nohup.out'
ls
ascii_loader_script.pl  format_wrds_trd.txt  nohup.out  norm_wrds_trd.cfg
[2]+  Stopped                 nohup sudo ./ascii_loader_script.pl 20070502 ctm_20070502.csv
Run Code Online (Sandbox Code Playgroud)

我看过这篇文章并试图在执行命令之前做"sudo date".仍然有同样的事情. http://www.sudo.ws/pipermail/sudo-users/2003-July/001648.html

linux sudo nohup

37
推荐指数
4
解决办法
4万
查看次数

没有sudo访问权限,无法安装Python

我在服务器中解压缩,配置并使用make作为安装包.

但是,我无法使用make install.我收到了错误

[~/wepapps/python/Python-2.6.1]# make install
/usr/bin/install -c python /usr/local/bin/python2.6
/usr/bin/install: cannot create regular file `/usr/local/bin/python2.6': Permission denied
make: *** [altbininstall] Error 1
Run Code Online (Sandbox Code Playgroud)

我用它运行文件夹

chmod +x Python-2.6.1
Run Code Online (Sandbox Code Playgroud)

我仍然得到同样的错误.

如何在没有sudo访问权限的情况下运行make install

python installation sudo

36
推荐指数
2
解决办法
3万
查看次数

Bash脚本需要sudo密码

我正在创建一个Bash安装程序脚本,它为OSX和Linux编译和安装一些库.因为我的脚本中的一些命令("make install","apt-get install","port install"等)需要sudo,我需要用户提供密码.

目前,只要第一个sudo命令即将执行,就会要求用户输入密码,但由于这通常是在编译阶段之后,因此在启动脚本和输入密码之间总会有一段时间.

我想在脚本的开头放入密码输入+检查.另外,我很好奇这是否真的是一种安装系统库的好方法.

或者我可以在不需要sudo的本地沙箱位置安装库,但是我必须告诉apt-get和macports安装他们的库以外的默认值/ usr/local /和/ opt/local ,我不知道该怎么做,也不知道这是一个聪明的想法.

bash sudo

36
推荐指数
2
解决办法
2万
查看次数