我一直在使用 Google Cloud debian 虚拟机,并且使用 sudo 执行超级用户任务完全没有问题(sudo 不要求输入密码)。
今天我像往常一样通过 SSH 连接,当我尝试sudo 某些操作时,它开始要求输入密码:
We trust you have received the usual lecture from the local System
Administrator. It usually boils down to these three things:
#1) Respect the privacy of others.
#2) Think before you type.
#3) With great power comes great responsibility.
[sudo] password for -----:
Run Code Online (Sandbox Code Playgroud)
根据文档,它不应要求输入密码,因为已经是 SSL 密钥身份验证的连接。
我想编写一个脚本,在其中需要从不同的计算机获取文件的内容192.168.0.2而不输入密码,因此我使用sshpass以下命令:
sshpass -p "password" ssh -o StrictHostKeyChecking=no user@192.168.0.2 " ls /root/path/of/file"
Run Code Online (Sandbox Code Playgroud)
输出 :
ls: cannot access '/root/path/of/file': Permission denied
Run Code Online (Sandbox Code Playgroud)
我明白了,因为我没有以root用户身份登录。所以我尝试了:
sshpass -p "password" ssh -o StrictHostKeyChecking=no user@192.168.0.2 "sudo ls /root/path/of/file"
Run Code Online (Sandbox Code Playgroud)
输出 :
sudo: no tty present and no askpass program specified
Run Code Online (Sandbox Code Playgroud)
我应该怎么办?
我正在编写一个使用 sudo 权限运行的 python 脚本。在某个时候,我想向用户发送通知。我注意到notify-send不能作为root用户工作,所以我尝试通过执行以实际用户身份运行它su $SUDO_USER -c notify-send ...,但这也不起作用。
以下第一个函数在没有 sudo 权限的情况下运行时有效。当使用 sudo 运行时,它们都不起作用。知道为什么吗?
def notify(message):
subprocess.run(['notify-send', '-i', 'utilities-terminal', 'Notification Title', message],
stdout=subprocess.PIPE,
stderr=subprocess.PIPE,
check=True)
def notifySudo(message):
subprocess.run(['su', os.environ['SUDO_USER'], '-c', 'notify-send', '-i', 'utilities-terminal', 'Notification Title', message],
stdout=subprocess.PIPE,
stderr=subprocess.PIPE,
check=True)
Run Code Online (Sandbox Code Playgroud) 我尝试在启动时使用终端以 sudo 身份运行可执行文件,但遇到一些问题。我在其他答案中找不到解决方案,所以我打开了这个。我使用的是 Raspberry Pi 3 B+ 以及 Raspbian Stretch 桌面版和从 Raspberry Pi 官方网站下载的推荐软件。
我有一个需要使用 sudo 运行的可执行文件(我使用 Pigpio 库通过 SPI 与另一个硬件进行通信,如果我不使用 sudo 运行该可执行文件,则 Pigpio 将无法工作)。我想要实现的是,当 Pi 完成启动图形界面时,它将运行 LXTerminal 并执行“sudo home/pi/myfolder/myprogram”。
我试过了:
sudo nano ~/.config/autostart/myprogram.desktop
[Desktop Entry]
Encoding=UTF-8
Type=Application
Name=myprogram
Exec=lxterminal -e "sudo /home/pi/myfolder/myprogram"
Terminal=true
sudo chmod a+r ~/.config/autostart/myprogram.desktop
Run Code Online (Sandbox Code Playgroud)
还尝试过:
sudo nano /etc/xdg/lxsession/LXDE-pi/autostart
lxterminal --command="sudo /home/pi/myfolder/myprogram"
Run Code Online (Sandbox Code Playgroud)
这两种方法都在启动时打开了lxterminal,但没有执行我的程序。谁能帮我吗?
我想在 NodeJs 应用程序中执行以下 shell 命令。如果我手动完成工作,命令如下:
sudo su
password
1 command that needs a root access
exit
Run Code Online (Sandbox Code Playgroud)
任何想法或代码片段都会有帮助
我试图在我的 Ubuntu VPS 上设置 Github actions runner,在步骤 3 中我必须设置 config.sh 文件,我得到的错误为:Must not run with Sudo并且该过程失败。我的 root 帐户受密码保护,但我不明白这里的问题是什么。但我正在寻找的是如何解决这个问题。我实际上并没有部署一个严肃的应用程序,这只是为了练习。
我想将一些文本附加到特权文件/root/.profile.我使用以下脚本来执行此操作.
sudo echo"blabla">> /root/.profile
它仍然在申请被拒绝的情况下抱怨.这样做的正确方法是什么?我使用bash4上ubuntu12.04
因此,当我尝试设置我的git帐户时,我似乎有点无法使用sudo跟随教程,这就是我输入的内容
458 git credential-osxkeychain
459 curl -s -O http://github-media-downloads.s3.amazonaws.com/osx/git-credential-osxkeychain
460 git credential-osxkeychain
461 which git
462 sudo mv git-credential-osxkeychain /usr/bin/git
463 git config --global credential.helper osxkeychain
464 sudo git config --global credential.helper osxkeychain
Run Code Online (Sandbox Code Playgroud)
现在每当我尝试任何类型的git命令时,我都会收到消息
-bash: /usr/bin/git: Permission denied
Run Code Online (Sandbox Code Playgroud)
任何帮助将非常感谢.
sudo 命令可以按以下方式使用
sudo -u <user_name> <command/script>
Run Code Online (Sandbox Code Playgroud)
但我想知道如何包含密码,因为我想避免用户交互.另外,作为管理员,我不想为sudo命令禁用密码提示.我怎样才能做到这一点.我试过了man sudo,但没多大帮助.