作为超级用户的字符串命令
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
解决方案就足够了。
我发现如果你想以超级用户身份执行命令,你需要添加以下内容:
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
解决方案就足够了。