我已经在我们的一个开发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)
我怎样才能让它发挥作用?
我需要在配置文件的末尾添加以下行:
include "/configs/projectname.conf"
Run Code Online (Sandbox Code Playgroud)
到一个名为的文件 lighttpd.conf
我正在考虑使用sed这个,但我无法弄清楚如何.
如果该行尚不存在,我将如何仅插入它?
我有一个新的Ubuntu 12.04 VPS.我正在尝试编写一个完成整个LAMP安装的安装脚本.我遇到问题的地方是在/etc/hosts文件中附加一行.我当前的hosts文件如下所示:
127.0.0.1 localhost Venus
# The following lines are desirable for IPv6 capable hosts
::1 ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
Run Code Online (Sandbox Code Playgroud)
我希望它看起来像这样:
127.0.0.1 localhost Venus
192.241.xx.xx venus.example.com venus
# The following lines are desirable for IPv6 capable hosts
::1 ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
Run Code Online (Sandbox Code Playgroud)
我sed使用append(\a)命令尝试了各种命令.出于某种原因,Ubuntu要么只是hosts在终端中回显文件的内容,要么根本不做任何事情.如何使用bash脚本正确地将第二行注入文件?
我有两个简单的脚本,当我不希望它尝试在每次登录/网络转换时进行连接时,可以启用/禁用Cisco AnyConnect。一切都很好,但我也想在主机文件中添加一行。我对大多数命令使用“ echo $ password | sudo -S”的原因是因为此脚本是从Mac OS X的脚本菜单运行的。终端窗口未打开以解决sudo密码提示。
#!/bin/bash
#Start_AnyConnect.command
password=`/usr/bin/osascript <<EOT
with timeout of (30 * 60) seconds
tell application "Finder"
activate
set myReply to text returned of (display dialog "Enter your password to authorize AnyConnect startup script" default answer "" with hidden answer)
end tell
end timeout
EOT`
echo $password | sudo -S echo -e "127.0.0.1\twpad.company.com" >> /etc/hosts
sleep 2
echo $password | sudo -S mv "/Library/LaunchAgents_Disabled/com.cisco.anyconnect.gui.plist" "/Library/LaunchAgents/com.cisco.anyconnect.gui.plist"
echo $password | sudo -S mv "/Library/LaunchDaemons_Disabled/com.cisco.anyconnect.vpnagentd.plist" "/Library/LaunchDaemons/com.cisco.anyconnect.vpnagentd.plist" …Run Code Online (Sandbox Code Playgroud) 我刚刚遇到这个奇怪的问题,我似乎无法深究它.我正在尝试将配置文件添加到/etc/sudoers.d/但获得权限被拒绝.在下面的示例中,文件"tweedle"不存在,并且:
drwxr-xr-x 2 root root 4.0K Jan 2 18:27 sudoers.d/
Run Code Online (Sandbox Code Playgroud)
所以这是命令:
$ sudo echo "tweedle ALL=(ALL) ALL" > /etc/sudoers.d/tweedle
-bash: /etc/sudoers.d/tweedle: Permission denied
Run Code Online (Sandbox Code Playgroud)
当我将它分成两个命令时,它甚至不起作用:
$ sudo touch /etc/sudoers.d/tweedle
$ sudo echo "poodle" > /etc/sudoers.d/tweedle
Run Code Online (Sandbox Code Playgroud)
当我在本地测试它时,同样的问题:
$ cd ~
$ mkdir -m 755 tweedle
$ sudo chown root:root tweedle
$ sudo echo "battle" > ~/tweedle/beetle
-bash: /home/spanky/tweedle/beetle: Permission denied
$ sudo touch tweedle/beetle
$ sudo echo "battle" > tweedle/beetle
-bash: tweedle/beetle: Permission denied
Run Code Online (Sandbox Code Playgroud)
没有sudo,一切都很好:
$ cd ~
$ mkdir poodle
$ …Run Code Online (Sandbox Code Playgroud) 我想将一些命令附加到 ${HOME}/.bashrc 文件中。
我做了一个脚本来做到这一点。
# file name : setup_bash
bashrc_path="${HOME}/.bashrc"
comment="test"
sudo echo "${comment}" >> "${bashrc_path}"
Run Code Online (Sandbox Code Playgroud)
并运行它
bash setup_bash
Run Code Online (Sandbox Code Playgroud)
它会导致错误。
setup_bash: line 19: /home/user/.bashrc: Permission denied
Run Code Online (Sandbox Code Playgroud)
第 19 行在 (sudo echo ...)。
接下来我尝试了以下代码,
sudo bash setup_bash
Run Code Online (Sandbox Code Playgroud)
它导致成功。
它们有什么区别?请教我。
我正在尝试在需要 sudo 权限的目录中创建和填充文件。
编辑:似乎基于测试了建议的类似帖子。
sudo su -c "echo 'put in file' > file_name"
echo "Some text" | sudo tee /etc/file
Run Code Online (Sandbox Code Playgroud)
都将在需要 sudo 权限的目录中创建一个文件