私が使用しているXFCEは、ノートブックのキーボードバックライト制御キーをサポートしていません。
制御できるスクリプト(/etc/acpi/asus-keyboard-backlight.sh
)が見つかりましたが、rootとして実行する必要があります。
キーボードバックライトを変更するたびにルートパスワードを入力したくありません。
パスワードを要求せずにrootとして実行するようにキーボードショートカットを設定するにはどうすればよいですか?
答え1
sudo
を使用して追加を実行した後にvisudo
実行できますYOURUSER ALL=(ALL) NOPASSWD:ALL
。これにより、sudo
ユーザーにパスワードの入力を求められません。
答え2
Bashを呼び出してスクリプトを実行する小さなCプログラムを作成します。プログラムをコンパイルして少し変更して、suid
Bash(およびスクリプト)を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
ラッパーを実行できることを意味します。これにより、s
inは有効なユーザーIDが0になることを意味します。
多くのユーザーが同じグループに属する共有環境でこれを実行している場合は、そのファイル専用の特別なグループを作成し、そのグループにユーザーのみを追加できます。たとえば、LDAPを使用してログインし、すべてのユーザーがドメインユーザーグループに属することができます。 「JulieOnly」というローカルグループを作成し、そのグループにユーザーのみを追加できます。次にchown
ラッパーをroot:JulieOnly
。