作为超级用户的字符串命令

String command as 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 不起作用,我猜是因为其中的“>”。需要进行哪些更改才能使命令正常工作?

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


关于权限问题。你是对的,问题是输出重定向>。您需要知道 shell 将打开输出文件, 而不是 命令 运行 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 解决方案就足够了。