ls -la は mount --bind フォルダに対する正しい権限を表示しません。

ls -la は mount --bind フォルダに対する正しい権限を表示しません。

私の問題を理解するには、次の手順をお読みください。

次のコマンドを実行します。

mkdir ~/src
mkdir ~/destination

sudo mount ~/src ~/destination --bind -o ro

srcdestinationフォルダはフォルダにバインドされてマウントされます。 nautilusでdestinationフォルダを見ると読み取り専用です。ただし、このコマンドはフォルダとll同じファイル権限を提供します。srcdestination

その理由は何ですか? 「ターゲット」フォルダの実際の権限をどのように確認できますか? Nautilusはどのように読み取り専用として表示できますか?

答え1

これには2つのタスクがあります。

  1. ディレクトリ権限。
  2. インストールオプション。

ディレクトリ権限は、マウントが読み取り専用であるという事実とは無関係です。したがって、lsフォルダに割り当てられたアクセス許可は、フォルダのマウント方法に関係なく引き続き一覧表示されます。

同様に、を使用してフォルダをマウントすると、noexec内部lsの実行可能ファイルはまだ実行可能としてマークされます。インストールフォルダを使用するnoexecか、あなたの場合に応じてroファイルとディレクトリの権限を変更しないでください。

しかし、ファイルマネージャはよりスマートに見え、ディレクトリが読み取り専用でマウントされていることがわかります。明らかに、これを調べるために許可ビットを照会するだけでは十分ではありません。


コメントから: "私のユースケースでは、シェルコマンドを使用してインストール権限を読みたいのです。"

オプションなしでコマンドを実行すると、mount現在マウントされているすべてのパーティションとそのマウントオプションが出力されます。

$ mount
sysfs on /sys type sysfs (rw,nosuid,nodev,noexec,relatime)
proc on /proc type proc (rw,nosuid,nodev,noexec,relatime)
udev on /dev type devtmpfs (rw,nosuid,relatime,size=32841600k,nr_inodes=8210400,mode=755)
devpts on /dev/pts type devpts (rw,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode=000)
tmpfs on /run type tmpfs (rw,nosuid,noexec,relatime,size=6572324k,mode=755)
(etc.)

インストールオプションは括弧内にリストされています。

現在マウントされているファイルシステムを調べることもできます/etc/mtab。ファイル形式は次/etc/fstabのとおりです。

awk '{ print $2, $4 }' /etc/mtab

たとえば、マウントポイントとマウントオプションのみを取得します。

関連情報