标签: sudo

Shell脚本 - Sudo权限随着时间的推移而丢失

我做了一个简单的bash脚本,需要在整个脚本中保持它的超级用户权限.不幸的是,但是可以理解的是,脚本sudosleep发生时会丢失其权限.对我不好:

sudo echo "I am sudo!" # Asks for passwords
sleep(60)
sudo echo "I am sudo!" # Need to enter password again.
Run Code Online (Sandbox Code Playgroud)

我想过sleep用一个让sudo保持活着的while循环来替换它,但是我很确定有更好的选择可以使sudo-permissions在整个脚本中保持不变?

谢谢

bash shell ubuntu sudo

7
推荐指数
4
解决办法
6335
查看次数

使用sudo运行延迟命令

想以root身份运行bash脚本但是延迟了.怎么能实现这个?

sudo "sleep 3600; command" , or
sudo (sleep 3600; command)
Run Code Online (Sandbox Code Playgroud)

不起作用.

bash sudo gnu-coreutils

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

我为用户〜/ .bashrc添加了别名,但是"sudo -u user -i'alias_name'"仍然报告"找不到命令"?

作为一个简单的例子,在用户foo的〜/ .bashrc中有一个别名;

alias ll='ls -l'
Run Code Online (Sandbox Code Playgroud)

使用sudo我可以看到别名已设置;

bar@laptop:~$ sudo -u foo -i alias ll
alias ll=`ls -l'
Run Code Online (Sandbox Code Playgroud)

但是,我实际上不能使用别名;

 bar@laptop:~$ sudo -u foo -i ll
 -bash: ll: command not found
Run Code Online (Sandbox Code Playgroud)

作为bash函数的命令工作正常.有没有办法让别名也起作用?

linux bash alias sudo

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

su将密码传递给脚本

我正在尝试编写一个运行以下命令的脚本:

sudo su
runmqsc_result=`su -c "runmqsc QMGR < /home/rob/query_queue.txt" -m "mqm"`
Run Code Online (Sandbox Code Playgroud)

但是,我的问题是这些命令是由sudoers文件中的用户作为shell脚本的一部分运行的.但是,显然sudo su要求运行它的用户的密码.

我需要做的是将密码传递给sudo su,以便脚本自动运行.我怎样才能做到这一点?

ps:我无法更改运行"runmqsc"的权限...它必须作为用户mqm运行,需要从root用户切换到.

sudo sudoers

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

'whoami'在mac终端上不起作用

当我设置Node js环境时,我经常会遇到npm权限错误,因为它无法访问/ node-modules /.在这个问题的帮助下(npm抛出没有sudo的错误),我设法改变了所有权.但是,我必须输入我的用户名,而不是像示例中的'whoami'.

sudo chown -R 'whoami' ~/.npm
chown: whoami: illegal user name
Run Code Online (Sandbox Code Playgroud)

这是否意味着mac不支持'whoami',或者我做错了什么?

unix macos sudo node.js

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

msysGit sudo-like命令

如果我们以管理员身份打开msysgit,我们可以像使用root一样使用它.但是,在没有管理员权限的情况下打开通常更容易.例如,对于管理员权限,您通常必须转到Windows资源管理器,"开始"菜单/屏幕等,并且您无法从任务栏执行此操作.有时,我懒得做这一切,但我想在Bash中获得管理员权限.Git Bash 是否有sudo- 或者su- 类似的命令或脚本等?进入cmd.exe,PowerShell等等,然后做一些类似的runas工作,如果没有别的.

windows sudo su msysgit git-bash

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

在NetBeans 8.0中调试需要sudo运行的C++程序

我知道这个问题在各个网站上被多次询问,但我找不到任何建议如何解决我的问题.我在NetBeans 8.0中使用GCC 4.8.1并且需要(可视)调试访问原始设备的程序,因此我需要通过sudo运行它.

我的项目属性设置是:

  • 运行 - >运行命令="sudo $ {OUTPUT_PATH}"
  • 运行 - >控制台类型="外部终端"
  • 运行 - >外部终端类型="默认"

所有其他设置都是默认设置,包括Debug -> Debug Command空的.

因此,当我在NetBeans中运行它时程序运行正常- sudo要求输入密码然后程序继续.但是,我无法 在NetBeans中调试它 - 调试器输出下面的文本并停止.

调试器外部终端

有任何想法吗?请不要建议以root身份运行NetBeans - 这对我来说太麻烦了.

(我在Xubuntu 3.11,它guest OS在Mac上的VMWare Fusion VM中运行)

2015/09/16更新:

据多方意见(从网上)我试图取代Debug CommandTools- > Options- > C/C++我的,内容如下脚本弹出窗口:

#!/bin/bash
PROG=$(which gdb)
sudo $PROG "$@" 
Run Code Online (Sandbox Code Playgroud)

此脚本在命令行中运行良好.但是,当我尝试从NetBeans调试我的程序时,我得到以下弹出窗口:

NetBeans消息

所以,第一个问题就消失了,第二个问题就出现了.在这种情况下,我看到了一些清除断点的建议 - 它对我没有帮助.

任何想法接下来要尝试什么?

(gdb版本是GNU gdb(Ubuntu/Linaro 7.4-2012.04-0ubuntu2.1)7.4-2012.04)

c++ debugging sudo gdb netbeans

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

不能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万
查看次数

无法从PHP执行Bash脚本

我正在尝试执行一个简单Bash ScriptPHP脚本.我从HTML5前端页面收集数据,传递ajax给PHP脚本,获取变量,然后将这些变量传递给.sh脚本,但我有以下消息:

./test_bash.sh: line 13: ./test.txt: Permission denied
Run Code Online (Sandbox Code Playgroud)

我试图更改权限chmod 777 test_bash.sh,试图修改sudoers.d文件,试过这个:shell_exec("echo password_for_the_user | sudo -S command_to_execute");...但是Bash script无法写入test.txt文件.

这是我的基本代码,首先是PHP code:

<?php 
$var1 = json_decode($_POST['var1']); //from front-end html5
$var2 = json_decode($_POST['var2']);
$var3 = json_decode($_POST['var3']);

$response = shell_exec("./test_bash.sh $var1 $var2 $var3 2>&1");

echo "$response";
?>
Run Code Online (Sandbox Code Playgroud)

其次,Bash代码:

#!/bin/bash

var1=$1;
var2=$2;
var3=$3;

echo "$var1";
echo "$var2";
echo "$var3";

echo $var1 $var2 …
Run Code Online (Sandbox Code Playgroud)

php ajax bash html5 sudo

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

如何在terraform中运行sudo命令?

我的问题类似于这个git hub帖子,但遗憾的是它尚未解决:

https://github.com/hashicorp/terraform/issues/550

我想要一种简单的方法来provisioner "remote-exec" { }为我的terraform脚本块中运行的命令赋予sudo权限.

我来自一个ansible背景,它有一个sudo: yes选项,允许任何命令ansible运行--ask-sudo-pass在我的ansible-playbook运行命令中使用可选项时使用sudo权限运行命令.我想在provisioner "remote-exec"我的terraform脚本中执行类似的操作.

这是provisioner "remote-exec"我想要运行的块:

  provisioner "remote-exec" {
    inline = [
      "sudo apt-get update",
      "sudo apt-get install -y curl"
    ]
  }
Run Code Online (Sandbox Code Playgroud)

当我在我的运行中运行时,我terraform apply看到此命令的输出中出现以下行:

openstack_compute_instance_v2.test.0 (remote-exec): [sudo] password for myUserName:
openstack_compute_instance_v2.test.1 (remote-exec): [sudo] password for myUserName:
openstack_compute_instance_v2.test.2 (remote-exec): [sudo] password for myUserName:
Run Code Online (Sandbox Code Playgroud)

然后它只给了我无数的这些:

openstack_compute_instance_v2.test.0: Still creating... 
openstack_compute_instance_v2.test.1: Still creating... 
openstack_compute_instance_v2.test.2: Still creating... 
Run Code Online (Sandbox Code Playgroud)

那么如何解决这个问题并让terraform运行sudo命令呢?

注意:我的provisioner "remote-exec"块的连接不能是root,所以即使这是一个简单的解决方案,但它不是我可以使用的.

sudo provisioning terraform

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

标签 统计

sudo ×10

bash ×4

linux ×2

ajax ×1

alias ×1

c++ ×1

debugging ×1

gdb ×1

git-bash ×1

gnu-coreutils ×1

html5 ×1

macos ×1

msysgit ×1

netbeans ×1

node.js ×1

php ×1

provisioning ×1

shell ×1

ssh ×1

su ×1

sudoers ×1

terraform ×1

ubuntu ×1

unix ×1

windows ×1