我想创建一个桌面快捷方式来关闭笔记本电脑上的保护模式。为此,我需要运行以下命令:echo 0 | sudo tee /sys/bus/platform/drivers/ideapad_acpi/VPC2004:00/conservation_mode 我创建了一个桌面条目,但我不知道如何以超级用户身份运行它。这样它什么也不做。我找到的最接近的是 pkexec,但它不起作用。
答案1
使用别名。在您的 /home/user 目录中有一个名为 的文件.bashrc
。
将其放在文件末尾,并在末尾留一个空行。
alias name_of_alias='your_command_from_the_question_here'
保存文件,然后从终端运行source .bashrc
。
现在您可以name_of_alias
自由地将其用作命令。在命令行中单独输入它。要在桌面链接中使用它,您需要使用:bash -c "name_of_alias"
。
您确实需pkexec
要这样做,如果它不想使用弹出bash -c
,请将其添加到命令的前面或仅使用别名尝试。
例如pkexec name_of_alias
或pkexec bash -c name_of_alias
其中一个肯定会起作用。
替代 pkexec
/alias
:
这不安全,并且不适用于生产用途!它将使密码明显模糊,并且可以供个人使用。
#!/bin/bash
if [ "$#" -eq 0 ]; then
echo "Usage: $0 your_commands_here"
exit 1
fi
command="$1"
password=$(yad --title="SU Password" --skip-taskbar --window-icon="input-keyboard" --on-top --geometry="300x150" --borders=15 --image="input-keyboard" --text-align=center --text="Enter Password:" --entry --separator="" --item-separator="" --hide-text)
exit_code=$?
if [[ $exit_code -ne 0 ]]; then
exit 1
fi
# Decode the base64-encoded password
decoded_password=$(echo "$password" | base64 -d)
# Execute the command with sudo and the decoded password
fld1=$(echo "$decoded_password" | sudo -S -p "" -k "$command")
exit 0
保存到:yad_sudo.sh
将模式更改为可执行:chmod +x yad_sudo.sh
用法:./yad_sudo.sh your_commands_here
使用此快捷方式:
bash -c /path/to/script/yad_sudo.sh echo 0 | sudo tee /sys/bus/platform/drivers/ideapad_acpi/VPC2004:00/conservation_mode
答案2
要么配置您的桌面图标以在终端中运行该命令,以便 sudo 可以在某处询问您的密码,要么在 sudoers 文件中添加一个条目,说明您可以在没有密码的情况下以 root 身份运行所需的命令。
调试此类问题的一个好方法是将输出重定向(stdout 和 stderr)添加到文件中,以便您在尝试该命令后可以检查它。例如:
执行> / tmp / mylogfile 2>&1;设置-x; ...
(您可能需要将整个脚本放入 bash -c 选项中。)