XFCE - rootへのショートカット実行、パスワードは不要

XFCE - rootへのショートカット実行、パスワードは不要

私が使用しているXFCEは、ノートブックのキーボードバックライト制御キーをサポートしていません。

制御できるスクリプト(/etc/acpi/asus-keyboard-backlight.sh)が見つかりましたが、rootとして実行する必要があります。

キーボードバックライトを変更するたびにルートパスワードを入力したくありません。

パスワードを要求せずにrootとして実行するようにキーボードショートカットを設定するにはどうすればよいですか?

答え1

sudoを使用して追加を実行した後にvisudo実行できますYOURUSER ALL=(ALL) NOPASSWD:ALL。これにより、sudoユーザーにパスワードの入力を求められません。

答え2

Bashを呼び出してスクリプトを実行する小さなCプログラムを作成します。プログラムをコンパイルして少し変更して、suidBash(およびスクリプト)をrootとして実行します。

以下は、対応するラッパーの例です。

#include <unistd.h>

int main(void) {
    const char *bin = "/bin/bash";
    const chrar *script = "/tmp/myscrypt.sh";
    char *const argv[] = {bin, script, NULL};
    char *const env[] = {"SHELL=/bin/bash", 
            "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
            "HOME=/root", "LOGNAME=root", "_=/usr/bin/env", NULL};

    execve(bin, argv, env);

    return 0;
}

これでスクリプトが実行されます。rootユーザーとして、根があると信じることを含む/root。これを望まない場合は、ラッパーを修正してください。

したがって、一度コンパイルしてから残ったのは少しだけ提供するだけですsuid

gcc wrapper.c -o wrapper
chown root wrapper
chmod u+wrxs,g+rx,o-wrx wrapper

これにより、ls -l権限が次のように表示されます。

-rwsr-x--- 1 root group [snip] wrapper

これは、グループのユーザーだけがこのgroupラッパーを実行できることを意味します。これにより、sinは有効なユーザーIDが0になることを意味します。

多くのユーザーが同じグループに属する共有環境でこれを実行している場合は、そのファイル専用の特別なグループを作成し、そのグループにユーザーのみを追加できます。たとえば、LDAPを使用してログインし、すべてのユーザーがドメインユーザーグループに属することができます。 「JulieOnly」というローカルグループを作成し、そのグループにユーザーのみを追加できます。次にchownラッパーをroot:JulieOnly

関連情報