USBが接続されているときにudevルールをテストしてきました。
私の質問がこの記事に関連している可能性があると思います。udev ルールを使用してスクリプトを実行できない
スクリプトを正常にトリガして実行する次の udev ルールがあります。
ACTION=="add", SUBSYSTEM=="block", DRIVERS=="usb", ATTRS{idProduct}=="3244", ATTRS{idVendor}=="hghh", ATTR{size}=="7685844", RUN="/home/user/trigger"
スクリプト自体:
#!/bin/bash
date >> /home/user/udev_test.log
date >> /tmp/udev_test.log
手動でトリガーされると、スクリプトは両方のファイルに書き込まれます(ユーザー権限を使用)。トリガーされると、udev
ユーザーディレクトリのファイルだけが日付を取得します。
/tmp/udev_test.log
次の方法で直接書くこともできます。echo "blah" >> /tmp/udev_test.log
アーカイブされた644、664、777を試してみましたが、/tmp/udev_test.log
何の効果もありませんでした。
ユーザー権限で手動で書き込むことができますが、udev
権限が777に設定されていても機能しないのはなぜですか?
答え1
この/tmp
ディレクトリには固定ビットモードと呼ばれる特殊モードがあります。ファイルを所有しているユーザーのみがファイルに書き込むことができます。私のチュートリアルによると:
3.4.2.5。特殊モード
システム管理者が権限の問題を心配しないように、ディレクトリ全体または個々のプログラムに特別なアクセス権を付与できます。 3つの特殊モードがあります。
粘着性のあるビットパターン:ジョブの実行後、コマンドはシステムメモリに保存されます。もともと、これはメモリを節約するためによく使用される機能でした。大規模な操作は一度だけメモリにロードされました。しかし、最近ではメモリの価格が安く管理できる技術が向上し、個々のファイルの最適化機能には使用されなくなりました。ただし、固定ビットはディレクトリ全体に適用される場合には異なる意味を持ちます。この場合、このディレクトリのファイルは、ユーザーがファイルのユーザー所有者である場合、またはファイルに対する適切な権限を持っている場合にのみ変更できます。この機能は、
/var/tmp
誰もがアクセスできる必要がありますが、ユーザーが互いのデータを変更または削除するのには適していないディレクトリなどのディレクトリに使用されます。固定ビットは、t
ファイル権限フィールドの最後に次のように表示されます。mark:~> ls -ld /var/tmp drwxrwxrwt 19 root root 8192 Jan 16 10:37 /var/tmp/
︙
これは役に立ちますか?