sudo 命令的桌面快捷方式

sudo 命令的桌面快捷方式

我想创建一个桌面快捷方式来关闭笔记本电脑上的保护模式。为此,我需要运行以下命令: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_aliaspkexec 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 选项中。)

相关内容