相关疑难解决方法(0)

vim"用sudo写"技巧如何工作?

很多人可能已经看到了允许你在需要root权限的文件上写的命令,即使你忘了用sudo打开vim:

:w !sudo tee %
Run Code Online (Sandbox Code Playgroud)

问题是我不知道这里到底发生了什么.

我已经想到了这个: w是为了这个

                                                        *:w_c* *:write_c*
:[range]w[rite] [++opt] !{cmd}
                        Execute {cmd} with [range] lines as standard input
                        (note the space in front of the '!').  {cmd} is
                        executed like with ":!{cmd}", any '!' is replaced with
                        the previous command |:!|.
Run Code Online (Sandbox Code Playgroud)

所以它将所有行作为标准输入传递.

!sudo tee部件tee使用管理员权限调用.

为了让所有人有意义,%应输出文件名(作为参数tee),但我找不到有关此行为的帮助的参考.

tl; dr有人可以帮我剖析这个命令吗?

vim sudo

1347
推荐指数
7
解决办法
35万
查看次数

如何使用sudo将输出重定向到我无权写入的位置?

我已经在我们的一个开发RedHat linux盒子上获得了sudo访问权限,而且我似乎发现自己经常需要将输出重定向到我通常没有写入权限的位置.

麻烦的是,这个人为的例子不起作用:

sudo ls -hal /root/ > /root/test.out
Run Code Online (Sandbox Code Playgroud)

我刚收到回复:

-bash: /root/test.out: Permission denied
Run Code Online (Sandbox Code Playgroud)

我怎样才能让它发挥作用?

linux permissions sudo permission-denied io-redirection

843
推荐指数
12
解决办法
22万
查看次数

从PHP运行Python脚本

我正在尝试使用以下命令从PHP运行Python脚本:

exec('/usr/bin/python2.7 /srv/http/assets/py/switch.py arg1 arg2');

但是,PHP根本不会产生任何输出.错误报告设置为E_ALL并且display_errors已启用.

这是我尝试过的:

  • 我用过python2,/usr/bin/python2python2.7不是/usr/bin/python2.7
  • 我还使用了相对路径而不是绝对路径,它也没有改变任何东西.
  • 我试着使用的命令exec,shell_exec,system.

但是,如果我跑

if (exec('echo TEST') == 'TEST')
{
    echo 'exec works!';
}
Run Code Online (Sandbox Code Playgroud)

它完美无缺,shutdown now而且什么都不做.

PHP具有访问和执行文件的权限.

编辑:感谢亚历杭德罗,我能够解决问题.如果您遇到同样的问题,请不要忘记您的网络服务器可能/希望不会以root用户身份运行.尝试以您的网络服务器用户或具有类似权限的用户身份登录,并尝试自行运行命令.

php python linux exec archlinux

103
推荐指数
7
解决办法
28万
查看次数

Jenkins sudo:没有tty存在,也没有使用NOPASSWD指定的askpass程序

我花了几天时间设置文件/etc/sudoers,以便能够向用户授予root权限jenkins.我在我的服务器上安装了Jenkins,因为我主持了几个项目,包括symfony,ionic,neo4j等等......问题是我无法用离子构建项目,我得到这个错误:sudo: no tty present and no askpass program specified.这是我/的内容etc/sudoers文件:

#
# This file MUST be edited with the 'visudo' command as root.
#
# Please consider adding local content in /etc/sudoers.d/ instead of
# directly modifying this file.
#
# See the man page for details on how to write a sudoers file.
#
Defaults    env_reset
Defaults    mail_badpass
Defaults    secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"

# Host alias specification

# User alias specification

# Cmnd alias specification

# User …
Run Code Online (Sandbox Code Playgroud)

debian sudo tty sudoers jenkins

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

sudoers NOPASSWD:sudo:没有tty存在且没有指定askpass程序

我添加了这样的用户:

$ adduser --system --home /no/home --no-create-home --group --disabled-password --disabled-login testuser
Run Code Online (Sandbox Code Playgroud)

将用户添加到组:

$ adduser testuser testgroup
Run Code Online (Sandbox Code Playgroud)

为sudoers添加了行(visudo):

testuser    ALL=(ALL) NOPASSWD: ALL
%testgroup         ALL=(ALL:ALL) NOPASSWD: ALL
Run Code Online (Sandbox Code Playgroud)

当我尝试使用以下内容运行bash脚本时:

#!/bin/sh
sudo -u testuser /usr/bin/php /usr/local/bin/script.php
Run Code Online (Sandbox Code Playgroud)

但是当我运行这个脚本时,我在日志中收到错误:

sudo: no tty present and no askpass program specified
Run Code Online (Sandbox Code Playgroud)

编辑:requiretty不在sudoers文件中.

linux bash sudo tty

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

不能SUDO SU了,"没有tty存在且没有指定askpass程序"

我有一个根服务器,我通过root用户禁用了登录,并创建了另一个位于sudoer列表中的用户.所以,当我想在服务器上工作时,我会:

ssh myusername@IP_ADDRESS
Run Code Online (Sandbox Code Playgroud)

在服务器上:

sudo su
Run Code Online (Sandbox Code Playgroud)

输入我的密码以获得root权限.这个工作正常6个月了.今天我在做的时候得到了这个消息sudo su:

sudo: no tty present and no askpass program specified
Run Code Online (Sandbox Code Playgroud)

黑客正在发生什么?这个错误意味着什么,为什么我会得到它?没有root权限我在服务器上做不了多少.知道如何解决这个问题吗?

linux ssh sudo

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

Capistrano"没有tty存在且没有指定askpass程序"

我跑cap production deploy,我不断收到以下错误sudo: no tty present and no askpass program specified/usr/bin/env sudo mkdir -pv /home/[user]/apps/[app name] as [user@myIP]

我不知道如何解决这个问题.

Capfile:

require 'capistrano/setup'
require 'capistrano/deploy'
require 'capistrano/rvm'
require 'capistrano/bundler'
require 'capistrano/rails/migrations'
require 'capistrano/passenger'
require 'capistrano/safe_deploy_to'
Dir.glob('lib/capistrano/tasks/*.rake').each { |r| import r }
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

postgresql ubuntu capistrano ruby-on-rails

7
推荐指数
1
解决办法
5278
查看次数

Linux、Eclipse CDT 以 su 身份运行

我正在使用 Eclipse CDT 编写应用程序。该应用程序使用第三方 API,它需要以 sudo 身份运行,以便打开原始套接字等。

在命令行中,我可以运行类似的程序

su
./program
Run Code Online (Sandbox Code Playgroud)

但是在Eclipse CDT环境下,按Ctrl+F11(Run->Run Last Launched)就不行了,估计是我的Linux GUI登录不是su。

无论如何,我可以在 Eclipse CDT 中以 su(使用 su 密码)身份运行吗?

谢谢。

c++ eclipse

6
推荐指数
1
解决办法
2681
查看次数

从plink.exe在windows上执行sudo命令[windows]

如果我执行plink命令

plink user@192.168.1.12 sudo nano/etc/hosts

在提示时输入密码,我收到了

sudo:没有tty存在且没有指定askpass程序

抱歉,请再试一次.

sudo:没有tty存在且没有指定askpass程序

抱歉,请再试一次.

sudo:没有tty存在且没有指定askpass程序

抱歉,请再试一次.

sudo:3次密码尝试不正确

如何从plink执行sudo命令?还是有其他选择吗?

linux windows bash ubuntu putty

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

从 php exec() 运行 vcgencmd

当我vcgencmd measure_temp在终端中运行时,它会给出 CPU 的温度读数。

但是当我在 php 中使用相同的命令时,exec('vcgencmd measure_temp 2>&1')它在浏览器中出现以下错误:

VCHI 初始化失败

如何vcgencmd从php执行命令?

php shell-exec

4
推荐指数
1
解决办法
2390
查看次数

如何在私人服务器上使用docker-machine?

我想在运行CentOS7的服务器上安装docker主机(如果重要的话,它在我的PC上的Virtualbox中运行).

我知道有多个云提供商(亚马逊,谷歌,DigitalOcean等)的驱动程序,但如果我想使用自己的私人服务器,我无法弄清楚该做什么.

我尝试使用--driver generic客户操作系统的IP,以及我创建和使用的SSH密钥ssh-keygen,ssh-copy-id但我得到了

$ docker-machine create -d generic --generic-ip-address=<IP> --generic-ssh-key ~/.ss
h/id_rsa --generic-ssh-user <user> centos

Running pre-create checks...
Creating machine...
(centos) Importing SSH key...
Waiting for machine to be running, this may take a few minutes...
Detecting operating system of created instance...
Waiting for SSH to be available...
Detecting the provisioner...
Provisioning with centos...
Error creating machine: Error running provisioning: exit status 1
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?

这与我在Virtualbox中安装CentOS的事实有关吗?

linux docker docker-machine

4
推荐指数
1
解决办法
1534
查看次数

为什么这个 while 循环不循环?

我有以下 bash 脚本deploy.sh

\n\n
#!/usr/bin/env bash\n\n# Some useful resources:\n# while read ip user pass; do : http://unix.stackexchange.com/questions/92664/how-to-deploy-programs-on-multiple-machines\n# -o StrictHostKeyChecking=no: http://askubuntu.com/questions/180860/regarding-host-key-verification-failed\n# -T: http://stackoverflow.com/questions/21659637/how-to-fix-sudo-no-tty-present-and-no-askpass-program-specified-error\n# echo $pass |: http://stackoverflow.com/questions/11955298/use-sudo-with-password-as-parameter\n\nwhile read ip user pass; do \n  echo $ip\n  sshpass -p "$pass" ssh $user@$ip  -o StrictHostKeyChecking=no -T "\n  echo \'yo\'\n  "\n  echo \'done\'\ndone < servers.txt\n
Run Code Online (Sandbox Code Playgroud)\n\n

servers.txt包含:

\n\n
53.12.45.74 my_username my_password\n54.12.45.74 my_username my_password\n57.12.45.74 my_username my_password\n\xe2\x80\x8c\xe2\x80\x8c \n
Run Code Online (Sandbox Code Playgroud)\n\n

根据我的理解,while read ip user pass; do [\xe2\x80\xa6] done < servers.txt应该循环servers.txt.

\n\n …

bash loops

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

sudo:使用 plink 时找不到命令

嗨,我创建了一个批处理文件(run.bat),执行后在plink 的帮助下将我连接到 UNIX 服务器。但问题从这一点开始,我必须在连接到我的服务器后执行一个脚本,该脚本包含一个命令sudo -l。执行后,我收到了主题中提到的错误,有人可以帮助我解决这个问题吗??

批处理文件-:

"C:\Program Files\PuTTY" plink -ssh -pw Tos@12Ts w44dvftyw@caa1607UX009.wvd.abcd.net /opt/sieb/w44dvftyw/run.sh
Run Code Online (Sandbox Code Playgroud)

脚本文件(run.sh)-:

#!/bin/bash
sudo -l
Run Code Online (Sandbox Code Playgroud)

它说

须藤:找不到命令

但是当我在 UNIX 服务器上正常运行我的脚本时,它运行没有问题。我在这里缺少什么使它以这种方式工作请帮助。

unix bash

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