对于Linux中的sudo权限,这是一个非常简单的问题,至少看起来应该是这样.
有很多的时候,我只是想将一些东西附加到/etc/hosts或类似的文件,但最终没有能够因为两者>并>>不准,甚至有根.
有没有必要让这项工作无需su或sudo su进入root?
我知道如何使用tee写输出(STDOUT中)aaa.sh到bbb.out,同时还在终端显示它:
./aaa.sh | tee bbb.out
Run Code Online (Sandbox Code Playgroud)
我现在如何写STDERR一个名为的文件ccc.out,同时还显示它?
我正在尝试使用makefile编译一些源代码.在makefile中有一堆需要运行的命令sudo.
当我从终端编译源时,一切正常,并且在第一次sudo运行命令等待密码时暂停make .输入密码后,进行简历并完成.
但我希望能够在NetBeans中编译源代码.所以,我开始了一个项目,并展示了netbeans在哪里可以找到源代码,但是当我编译项目时,它会给出错误:
sudo: no tty present and no askpass program specified
Run Code Online (Sandbox Code Playgroud)
它第一次命中sudo命令.
我在互联网上查找了这个问题,我发现的所有解决方案都指向一件事:禁用此用户的密码.由于这里的用户是root用户.我不想那样做.
还有其他解决方案吗?
我试图在我的arch的pacman.conf文件中自动添加存储库源,但是echo在我的shell脚本中使用该命令.但是,它失败了: -
sudo echo "[archlinuxfr]" >> /etc/pacman.conf
sudo echo "Server = http://repo.archlinux.fr/\$arch" >> /etc/pacman.conf
sudo echo " " >> /etc/pacman.conf
-bash: /etc/pacman.conf: Permission denied
Run Code Online (Sandbox Code Playgroud)
如果我使用vim手动更改/etc/pacman.conf,可以这样做
sudo vim /etc/pacman.conf
Run Code Online (Sandbox Code Playgroud)
并且退出vim :wq,一切正常,我的pacman.conf已经手动更新,没有"Permission denied"投诉.
为什么会这样?我该如何sudo echo上班?(顺便说一下,我也尝试过使用sudo cat但失败的权限也被拒绝了)
我在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,它没有任何问题.上面我错过了什么?
手动说明发球台是"管道配件" - 工具.案件[1]让我困惑:
案件
echo "foo bar" | sudo tee -a /path/to/some/file
Run Code Online (Sandbox Code Playgroud)
2.案件
:w !sudo tee %
Run Code Online (Sandbox Code Playgroud)
从案例中很难理解发球台的逻辑.发球怎么样?
我想做一个简单的重定向.当我做
sudo curl <insert link here> > a.txt
Run Code Online (Sandbox Code Playgroud)
我想把curl输出的所有数据都放到a.txt中.但是,我一直在说错误
a.txt: Permission denied
Run Code Online (Sandbox Code Playgroud)
有人会知道怎么解决这个问题吗?我试过在网上看
sudo bash -c curl <insert link here> > a.txt
Run Code Online (Sandbox Code Playgroud)
并显示相同的错误.任何帮助,将不胜感激!谢谢!
我想用一种方法在Ubuntu 10.4带有结构的远程盒子上更新我的密码.
我希望我fabfile.py看起来像这样:
def update_password(old_pw, new_pw):
# Connects over ssh with a public key authentication
run("some_passwd_cmd --old %s --new %s" % (old_pw, new_pd))
Run Code Online (Sandbox Code Playgroud)
不幸的是,我所知道的唯一一个命令让一个人更改密码passwd,而在Ubuntu 10.4上似乎没有任何方法可以传递新的(或旧的)密码作为参数passwd.
可以使用什么命令来更改Ubuntu 10.4上的用户密码fabric?
编辑:我已经看过了usermod -p,这可能会有效,但手册页不建议这样做.
编辑:由于某种原因usermod -p,无法在面料上工作.
同样,我尝试了一个(有点不安全)mikej的答案,确实解决了这个问题:
# connecting & running as root.
from fabric.api import *
from fabric.contrib import files
files.append("%s\n%s" % (passwd, passwd), '.pw.tmp')
# .pw.tmp:
# PASSWD
# PASSWD
run("passwd %s < .pw.tmp" % …Run Code Online (Sandbox Code Playgroud) 我有一个在 Ubuntu Docker 容器 ( ubuntu-python )中创建的命名管道。我想从主机操作系统将数据发送到此管道,并从容器的管道中读取数据。
容器内:
我使用以下命令在容器内创建了管道
mkfifo stream
然后我使用从流中读取
cat stream
正如预期的那样,该命令似乎挂起,因为它正在等待某些输入
Docker 文件
然后,我使用卷将命名管道共享到主机操作系统
volumes:
- ./audio:/app/audio # stream is inside /app/audio
Run Code Online (Sandbox Code Playgroud)
主机操作系统:
我跑了
sudo bash -c "echo test > stream"
我希望这会写入流,这应该会导致原始cat stream命令取消挂起并 print test,但输入和输出命令继续挂起,表明数据实际上并未移入容器中。我使用的原因bash -c是因为我需要重定向以 root 身份运行。
这一系列在主机操作系统上运行的命令运行得很好,但是一旦我引入了卷以及主机和容器之间的数据移动,它就不再起作用了。如何从主机操作系统将数据写入命名管道并使其显示在容器中?
作为参考,主机是运行 Ubuntu 20.04 的 WSL,但我计划将其部署在运行 Raspbian Lite 的 Raspberry Pi 3B+ 上。我还想将其分发给开源项目的其他用户,因此该解决方案应该与主机无关(至少对于可以实际运行 Ubuntu 容器的主机而言)。
我需要sudo作为一个不同的使用,以执行某个命令.我正在尝试使用strace并将其输出重定向到文件中以供进一步分析.棘手的部分是,作为sudo'ed用户,我没有权限写入我要保存文件的位置.(并且没有sudo'ing我没有权限执行该命令开始) .
那么如何以用户A的身份执行命令,并将其输出重定向为用户B?