Linuxでのディレクトリ権限の問題

Linuxでのディレクトリ権限の問題

私のLinuxサーバーにNFS共有ディレクトリがあります。

ls: cannot access file: Permission denied
ls: cannot access res: Permission denied
total 20
d????????? ? ?       ?           ?            ? file
drwx------ 2 root    root    16384 May 19  2015 lost+found
drwxr-x--- 9 lma     lum 4096 Feb 18  2020 lum
d????????? ? ?       ?           ?            ? res

権限を変更しようとするとrootユーザーカタログファイルに

chmod 775 file
chmod: cannot access `file': Permission denied

chown root:root file
chown: cannot access `file': Permission denied

エラーが発生しましたPermission denied。ディレクトリの権限を変更する方法を教えてください。

答え1

エクスポートオプションを使用してNFS共有をエクスポートしない限り、NFSクライアントホストのUID 0()はno_root_squashNFSサーバー(または一部のオペレーティングシステム)のUID 65534にマップされます。これにより、クライアントホストのrootユーザーがNFS共有に悪意のあるsetuid-root実行可能ファイルを生成し、それを使用して同じ共有を使用する他のNFSクライアントまたはNFSサーバー自体へのrootアクセス権を違法に取得するのを防ぎます。 。rootnobodynfsnobody

奇妙な疑問符は、ユーザーにnobody読み取り権限がありますが、x問題のディレクトリへのアクセス権がないことを示している可能性があります。この組み合わせは、ユーザーが通常のlsディレクトリの一覧を読み取ることができ、ディレクトリ内のファイルにアクセスできないことを意味します。したがって、stat(2)これらのファイルのサイズ/所有権/権限情報を取得するためのすべてのシステムコールも失敗します。

andは正常に表示されますが、疑問符を表示するディレクトリのfile合計のみが、クライアントホストのrootユーザーグループメンバーシップ、サーバーシステムのACLまたはSELinuxの使用、またはこれらの要素の組み合わせによって発生する可能性があります。reslost+foundlum

これが問題であれば、NFSでは解決する方法はありません。 NFSサーバーシステムにログインし、ローカルでファイルシステムにアクセスする必要があります。

理想的には、NFSサーバー上のユーザーが共有から何も所有しないようにroot(明示的に読み取り専用またはすべてのクライアントがアクセスできない場合を除き)、NFS共有ディレクトリのグループ割り当てを設計する必要があります。

クライアント/サーバー接続全体で所有権を保持する必要がある場合は、NFSサーバー上のファイル内の共有定義にエクスポートオプションを追加してから共有を再エクスポートするだけですroot。ただし、これを行うには、マウントオプションを使用してNFSサーバーに共有を含むファイルシステムをマウントする必要があります。no_root_squash/etc/exportsnoexec,nosuid

関連情報