起動時に自動的に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起動時に実行を停止することもできます。

おすすめ記事