/
全体をコピーしようとしています 他の場所へのディレクトリ。 cpを再帰的に実行すると、次のような一部のファイルで失敗します。-
/ # ls -lrt /sys/module/nf_conntrack_ipv4/uevent
--w------- 1 root root 4096 Mar 7 06:29 /sys/module/nf_conntrack_ipv4/uevent
/ #
/ # cat /sys/module/nf_conntrack_ipv4/uevent
cat: can't open '/sys/module/nf_conntrack_ipv4/uevent': Permission denied
/ # cp /sys/module/nf_conntrack_ipv4/uevent /tmp
cp: can't open '/sys/module/nf_conntrack_ipv4/uevent': Permission denied
w
だけでファイルを作成した場合 パーミッションとそれをコピー/キャットしようとすると、そこに問題は見られませんでした。ただし、上記のような一部のファイルでは、rootユーザーとして使用しようとしても、コピーしたり、catしたりすることができません。また、奇妙なことに、上記のファイルのサイズは4096と記載されており、これはディレクトリのサイズと似ています。これは特別なファイルですか?
私はここで何かが欠けていると思います、そしてそのようなファイルまたはそのような振る舞いについてもっと知るためにいくつかの入力が必要です。そのようなファイルの内容を猫にすることが許可されていない理由を理解するのを手伝ってください。
承認された回答:
通常のファイルシステム(例: ext4
、w
しかない場合 ファイル内の権限があると、読み取ることができなくなります(cat
)それ、あなたは読む必要があります(r
)そのためのビット。 root
に注意してください 許可ビットに関係なく、任意のファイルを読み取ることができます。
さて、/sys
特別なsysfs
のマウントポイントです Linuxカーネルによって提供されます。これは実際には仮想ファイルシステムであり、通常のファイルシステムとは動作が異なります。 /sys
システムのデバイス関連情報が含まれています。
/sys
で何かを変更する カーネルの内部データ構造を直接変更するため、カーネルが何を許可または拒否するかによって異なります。
/sys/module/nf_conntrack_ipv4/uevent
の場合 、w
しかありません 所有者に設定されたビット(root
)、r
を追加しても root
のビット (これは非常に悪い考えです )、ファイルの読み取り中にI / Oエラーが発生するのは、設計上、カーネルがnf_conntrack_ipv4
のueventを誰も読み取れないようにするためです。 モジュール。