我做了一个简单的bash脚本,需要在整个脚本中保持它的超级用户权限.不幸的是,但是可以理解的是,脚本sudo在sleep发生时会丢失其权限.对我不好:
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在整个脚本中保持不变?
谢谢
想以root身份运行bash脚本但是延迟了.怎么能实现这个?
sudo "sleep 3600; command" , or
sudo (sleep 3600; command)
Run Code Online (Sandbox Code Playgroud)
不起作用.
作为一个简单的例子,在用户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函数的命令工作正常.有没有办法让别名也起作用?
我正在尝试编写一个运行以下命令的脚本:
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用户切换到.
当我设置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',或者我做错了什么?
如果我们以管理员身份打开msysgit,我们可以像使用root一样使用它.但是,在没有管理员权限的情况下打开通常更容易.例如,对于管理员权限,您通常必须转到Windows资源管理器,"开始"菜单/屏幕等,并且您无法从任务栏执行此操作.有时,我懒得做这一切,但我想在Bash中获得管理员权限.Git Bash 是否有sudo- 或者su- 类似的命令或脚本等?进入cmd.exe,PowerShell等等,然后做一些类似的runas工作,如果没有别的.
我知道这个问题在各个网站上被多次询问,但我找不到任何建议如何解决我的问题.我在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 Command的Tools- > Options- > C/C++我的,内容如下脚本弹出窗口:
#!/bin/bash
PROG=$(which gdb)
sudo $PROG "$@"
Run Code Online (Sandbox Code Playgroud)
此脚本在命令行中运行良好.但是,当我尝试从NetBeans调试我的程序时,我得到以下弹出窗口:
所以,第一个问题就消失了,第二个问题就出现了.在这种情况下,我看到了一些清除断点的建议 - 它对我没有帮助.
任何想法接下来要尝试什么?
(gdb版本是GNU gdb(Ubuntu/Linaro 7.4-2012.04-0ubuntu2.1)7.4-2012.04)
我有一个根服务器,我通过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权限我在服务器上做不了多少.知道如何解决这个问题吗?
我正在尝试执行一个简单Bash Script的PHP脚本.我从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) 我的问题类似于这个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,所以即使这是一个简单的解决方案,但它不是我可以使用的.