起動時に自動的にsudoコマンドを実行する

起動時に自動的にsudoコマンドを実行する

Asus Zenbookのスクリーンパネルバックライトを調整するために、私が見つけたカーネルモジュールを使用しました。ここで。彼の指示によると、明るさを調整する簡単なコマンドでキーバインドショートカットを作成するには、再起動するたびにコマンドが必要で、毎回パスワードが必要なので、「rc.local」に追加する必要がscreenpad xあります。sudo chmod a+w '/sys/class/leds/asus::screenpad/brightness'自動実行では、起動するたびにコマンドを実行し、パスワードを入力せずにWindowsのドライバで正常に動作するため、カスタムキーボードショートカットをすぐに使用できます。

私はParrot OSでLinuxを初めて使用します。私が収集したところでは、rc.localを使用することはお勧めできません。systemd、cronjobを使用するか、GUI実行アプリケーションメニューを使用してプロセスとして実行する必要があります。

私はこれを行うためにsystemdまたはcronjobを使用する方法を完全に失いました。 「screenpad-perms.sh」というファイルを作成し、/usr/local/binに入れてみました。私が読んだ内容には、次の行だけが含まれています。

#! /bin/bash

sudo chmod a+w '/sys/class/leds/asus::screenpad/brightness'

それからchmod +x screenpad-perms.sh。最後に、GUIを開いてアプリケーションを自動起動し、それをログインスクリプトとして追加しました。

PCを再起動しましたが、動作しません。パスワードを手動で入力して入力しないと、screenpad x入力時に権限拒否エラーが発生sudo chmod a+w '/sys/class/leds/asus::screenpad/brightness'して実行されないようです。

私はLinuxに初めてアクセスし、この画面が機能したいので、もう一度申し訳ありません。私がここで何を見逃しているのでしょうか?

答え1

システムがsystemdを使用している場合、これは実行したい操作に最適なオプションです。 systemdデバイスはすでにrootとして実行されているため、sudoは必要なく、ログインせずに起動時に実行するように設定できます。

以下はsystemdに関する情報へのリンクです。https://www.digitalocean.com/community/tutorials/understanding-systemd-units-and-unit-files

systemdユニットファイルはMicrosoftファイルと多少似ています*.INI。彼らはすでにそれに[SectionHeadings]従いDirective=Valueました。

必要な手順は次のとおりです。

  1. ルートシェル(sudo bash)をロードしたり、ほとんどのコマンドをsudoルートとして実行したい場合は、プレフィックスを使用してください。

  2. 実行するシステムサービスユニットのシェルスクリプトを作成します。通常、ファイルをルート/usr/local/sbinと呼びます。/usr/local/sbin/fix-backlight.sh

    /usr/local/sbin/fix-backlight.sh 編集

editor目的のエディタを実行すると仮定すると、ファイルが存在しない場合はファイルが生成されます。)

  1. ファイルに(#!〜しなければならないファイルの最初の行です):

    #!/bin/bash
    chmod a+w '/sys/class/leds/asus::screenpad/brightness'

  2. 引き続きエディタを保存して閉じます。その後、セキュリティ上の理由から、ファイルをルートでのみ読み取り/書き込み/実行可能にします。

    chmod 0700 /usr/local/sbin/fix-backlight.sh

  3. systemdユニットファイルを作成します(通常は存在しますが、/etc/systemd/system他の場所もあります。詳細については上記のリンクを参照してください)。

    /etc/systemd/system/fix-backlight.service 編集

  4. ファイルエディタで、次のように入力します。

    [Unit]
    Description="screenpad x" バックライトコマンドの権限を変更する
    [Service]
    ExecStart=/usr/local/sbin/fix-backlight.sh
    [Install]
    WantedBy=multi-user.target

  5. エディタを保存して終了します。テストユニット:

    systemctlがバックライトの修理を開始します。サービス

  6. すべてがうまくいき(ルートではなく)、シェルの「screenpad x」コマンドが機能している場合は、起動時にデバイスが起動するようにします。

    systemctlを使用するとバックライトの修理が可能です。

  7. その後、再起動して、すべてが正しく機能していることを確認してください。 (そうではなく、隣の猫を吹き飛ばすと犬のせい!)

必要に応じてsystemctl disable fix-backlight.service起動時に実行を停止することもできます。

答え2

おそらく、この特定のcmdにパスワードが必要なくなるように、sudoersファイルでこのcmdを有効にする必要があります。 Sudoersは、sudo関連の問題を管理できる構成ファイルです。

sudo EDITOR=nano visudo

visudoを介してnanoを使用してファイルを編集するには(推奨)以下を追加します。

[YOUR_USERNAME] ALL=(ALL) NOPASSWD:/bin/chmod u+w /sys/class/leds/asus::screenpad/brightness

角かっこなしでユーザー名を挿入し、次のコマンドを実行してchmodの正しい場所を追加します。

which chmod

私にはい/bin/chmod

デフォルトでは、ログインしている人なら誰でもパスワードプロンプトなしでこのコマンドを実行できますが、注意してください。 sudoersファイルは非常に重要であり、ファイルを保存するときに小さなミスを犯すとシステムが破損する可能性があります。そのため、visudo設定ファイルはエラーで保存されないため、それを編集するために使用する必要があります。このように再起動するたびにMacを変更するので、私に適しています。

関連情報