String命令作为超级用户

时间:2015-04-12 16:17:25

标签: linux string terminal command superuser

我发现如果要以超级用户身份执行命令,则需要添加以下内容: echo <password> | sudo -s <command>

首先我想暂停Linux服务器 echo <password> | sudo -s pm-suspend,它工作正常。 现在我想执行命令echo -e "\xff\x01\x00" > /dev/ttyUSB0

echo <password> | sudo -s echo -e "\xff\x01\x00" > /dev/ttyUSB0不起作用,我猜是因为&#34;&gt;&#34;在里面。使命令工作需要进行哪些更改?

1 个答案:

答案 0 :(得分:0)

首先,永远不要使用echo password | ...。在命令行上。这是不安全的,因为密码将保留在历史文件中,而其他用户可以使用ps命令查看密码。如果要在不输入密码的情况下执行sudo命令,可以使用NOPASSWD中的/etc/sudoers选项。检查一下:https://unix.stackexchange.com/questions/18830/how-to-run-a-specific-program-as-root-without-a-password-prompt


关于许可问题。你是对的,问题是输出重定向>。您需要知道shell将打开输出文件, not sudo一起运行的命令。

在这个例子中:

sudo command > output.file

shell尝试打开output.file,然后启动sudo command并将其标准输出设置为打开文件。但是,shell没有root权限。

解决方法可能是使用tee命令,如下所示:

command | sudo tee output.file

但是,我只是授予编辑该文件的适当权限。例如,可以创建一个组,将该文件的组所有权更改为该组。例如:

# Add group
sudo groupadd developers

# Change group ownership of the file
sudo chown root:developers output.file

# make the file writable by the group
sudo chmod g+w output.file

# Finally put you into that group
sudo usermod -a -G developers YOU

但如果您是管理员用户,意味着您可以使用sudo执行每个命令,则上面的tee解决方案就足够了。