起動時にudisks-glueを実行し、ドライブを特定のユーザーとしてマウントするにはどうすればよいですか?

起動時にudisks-glueを実行し、ドライブを特定のユーザーとしてマウントするにはどうすればよいですか?

作成しようとしています。ユディックス接着剤Raspbian Raspberry Piで作業しています。 SSH経由で手動で起動すると正常に動作しますudisks-glue。しかし、起動時に自動的に起動するようにしたいと思います。

だからスクリプト私のためにデーモンを始めました/etc/init.d/udisks-glue(指示に従って)。ここ)。正常に動作しますが、ディスクはdrwx------root権限()でマウントされています。pi代わりに、このスクリプトにユーザーとしてデーモンを起動させることはできますかroot

私が試したこと

1) 上記のスクリプトを修正して置き換えます。

DAEMON="/usr/bin/udisks-glue" 

そして

DAEMON="exec su - pi -c /usr/bin/udisks-glue"

この実行に失敗しました。

2)この行をカスタムスクリプトへの参照に置き換えてexec su - pi -c /usr/bin/udisks-glueハードドライブを接続すると、マウントされません。しかし、正しく実行されるプロセスが現れました。を見て(両方ともrootとして実行している場合)、手動で起動すると上記と同じ出力が表示されますps aux | grep [u]disksudisks-gluepiudisks-daemonpsudisks-glue

3) 編集を試みて/etc/rc.local行を追加しました。

su pi -c "/usr/bin/udisks-glue &"

udisks-glueこれは、として実行されますが、pi機能しない(2)と同じ結果になります。

4)によるとこのページ、rootとしてudisks-glueを実行しますが、すべての人にインストール権限を与えます。これはFATファイルシステムで機能しますが、ext4もマウントできません。 (piとにかく、マウントをユーザーが所有したいです。)

答え1

私は持っています同じ問題先日。

解決策:

  1. 設定を編集してください。/etc/polkit-1/localauthority/50-local.d/50-mount-as-pi.pkla次の内容でファイルを作成します。

    [Media mounting by pi]
    Identity=unix-user:pi
    Action=org.freedesktop.udisks.filesystem-mount
    ResultAny=yes
    
  2. 初期化スクリプトを修正してください。

    • 実行したいユーザーを含む変数を追加しますudisks-glue

      NAME=udisks-glue
      PIDFILE=/var/run/udisks.pid
      DAEMON="/usr/bin/udisks-glue"
      DAEMONUSER=pi <-- add this line
      
    • start-stop-daemon変数を使用するように呼び出しを変更します$DAEMONUSER

      start) 
          log_daemon_msg "Starting Automounter" "$NAME"
      --> start-stop-daemon --start --exec $DAEMON --chuid $DAEMONUSER
          log_end_msg $?
          ;;
      stop)  
          log_daemon_msg "Stopping Automounter" "$NAME"
      --> start-stop-daemon --stop --exec $DAEMON --user $DAEMONUSER
          log_end_msg $?
          rm -f $PIDFILE
          ;;
      

      (注:-- -p $PIDFILE最初の呼び出しからその部分を削除しました。通常のユーザーアカウントに書き込み権限がない可能性があるため、上記の操作を実行するか、/var/run変数$PIDFILEを通常のユーザーが書き込むパスに変更するだけです。)

あなたがとった措置についてのコメント:

  1. これはうまくいきません。この変数は呼び出し時にパラメータ$DAEMONとして使用されます。この主張は--execstart-stop-daemon実行可能ファイルexecと同時に内蔵ケース

  2. これを行うと、初期化スクリプトが破損します。この方法で起動すると機能しますが、停止は実際のデーモンプロセス()を停止するのと同じようudisks-glueには機能しません。それ以外に、デーモンモードで起動すると、デバッグメッセージは生成されません。対話型シェルで次のコマンドを実行する場合:start-stop-daemon/path/to/your/helper/script.sh/usr/bin/udisks-glueudisks-glue

    # su pi -c "/usr/bin/udisks-glue -f"
    

    次の内容が表示されることがあります。

    Device file /dev/sdb1 inserted
    Trying to automount /dev/sdb1...
    Failed to automount /dev/sdb1: Not Authorized
    Device file /dev/sdb inserted
    

    これは、ドライブがマウントされない理由を説明できます。

  3. 事実2と同じです。追加の注意:デフォルトはデーモン化されている&ため、末尾のアンパサンド()は重複しています。udisks-glue

  4. 同様にudisks-glue、フォアグラウンドで実行すると、FATではなくファイルシステムの問題を説明できます。

    Device file /dev/sdb1 inserted
    Trying to automount /dev/sdb1...
    Failed to automount /dev/sdb1: Mount option dmask=0 is not allowed
    Device file /dev/sdb inserted
    

    また、ext4マウントポイントの所有者を変更するには、chownインストール後に所有者を変更する必要があります。

関連情報