アプリケーションが特定のファイルにアクセスする必要がある場合の正しいアプローチは何ですか?

アプリケーションが特定のファイルにアクセスする必要がある場合の正しいアプローチは何ですか?

今日、私は興味深いシナリオに直面しました(少なくともLinux初心者の私にとって)。ドローンをLinux PCに接続しました。ドローン構成ソフトウェア(Betaflight)をドローンに接続できません。クイックGoogle検索で問題を解決しました。デフォルトでは、ドローンをUSBケーブルで接続すると、ファイルが作成され、権限が付与され/dev/ttyUSB0ます660。ファイルの所有者はroot、ファイルのグループはですuucp。したがって、簡単な解決策は、このファイルを666

rこのファイルの権限を追加しました。wみんな、これはとてもそうだと思います。あるいは、uucpそれは重要なグループなので、愚かなように見えるBetaflightをグループに追加したり、悪いように見えるsudoで実行したりすることができると思いました。

この問題を処理する正しい方法は何ですか?論理的には、rwBetaflightがこの特定のファイルにアクセスできるように特別にルールを追加するのが妥当です。 「Linux方式」とは何か疑問に思います。私はランダムなアプリケーションが私のOSに過度にアクセスしたくないし、どんなアプリケーション/ユーザーも特定のファイルにアクセスしたくありません。

ベストアンサー1

Unix&Linux へ Andrzej を歓迎します。

付与する権限を最小限に抑えるには、以下をお勧めします。

  1. 専用グループを作成します(名前を指定しますdrone)。addgroup drone
  2. /dev/ttyUSB0グループに変更drone:chgrp drone /dev/ttyUSB0
  3. ドローン設定ソフトウェア(と呼ばれる/usr/bin/foo)をこのグループに変更し、droneこのsetgidビットを有効にします。chgrp drone /usr/bin/foo; chmod g+s /usr/bin/foo
  4. other構成ソフトウェアの実行を無効にし、user1ファイルACLを使用してそれを実行するための専用ユーザー(私たちが呼び出す)権限を付与するオプションがあります。chmod o-x /usr/bin/foo; setfacl -m u:user1:r-x /usr/bin/foo

sudo3と4は、専用ユーザーがグループとして構成ソフトウェアを実行できるようにする使用に置き換えることができますdrone。以下を追加できます/etc/sudoers

user1 ALL=(:drone) /usr/bin/foo

次に、次のように使用しますuser1sudo -g drone foo

おすすめ記事