マウントされたNFS共有のみに読み取りアクセス権があります。
NASで「スカッシュマッピングなし」が設定されていると、Ubuntuの通常ユーザーは、共有にcd
しようとするとPermission denied
を取得し、Sudo
を使用して読み取りアクセスのみを取得できます。
squashの[すべてのユーザーを管理者にマップ]設定を使用すると、クライアントの通常ユーザーはcd
にアクセスでき、共有への読み取りアクセスのみが許可されます。 Sudo
を使用すると、書き込みは許可されません。
Synology NAS:DS214> id username
uid=1026(username) gid=100(users) groups=100(users),101(administration)
スカッシュなし(マッピングなし)DS214> cat /etc/exports
/volume1/Files 10.1.1.2(rw,async,no_wdelay,no_root_squash,insecure_locks,sec=sys,anonuid=1025,anongid=100)
すべてのスカッシュ(すべてのユーザーを管理者にマップ)DS214> cat /etc/exports
/volume1/Files 10.1.1.2(rw,async,no_wdelay,all_squash,insecure_locks,sec=sys,anonuid=1024,anongid=100)
Ubuntuクライアント:$ cat /etc/fstab
10.1.1.214:/volume1/Files /mnt/nfs/Files nfs rw,user,auto 0 0
$ id username
uid=1000 gid=1000(username) groups=1000(username), <etc>
$ ls -n /mnt/nfs
drwxrwxrwx 9 0 0 4096 Sep 25 01:28 Files
$ ls -n /mnt/nfs/Files
drwxr-xr-x 11 1026 100 4096 Sep 24 22:05 Data
(元々Sudo
が有効な書き込みアクセスを使用しているというエラーで投稿しました)Sudo vi /mnt/nfs/Files/Data/test.file
でマウントされたNFS共有のファイルを開くことはできますが、Sudo
でもファイルに変更を書き込むことはできません。 :w!
コマンドのviエラーメッセージは次のとおりです。"test.file" E212: Can't open file for writing
NFSv2/3は、UIDとGIDのみに基づいて許可を処理します。サーバー上のファイル許可は、クライアント上のユーザーIDおよびグループIDと照合されます。そのため、NFSv <4は、ユーザーがクライアントマシンにルートアクセスできる環境では設計上安全ではありません。その場合、UIDのなりすましは簡単です。
NFSv4は、Kerberos5を介したクライアントおよびユーザー認証を提供することに注意してください。ユーザー名とパスワードによる認証が必要な場合、純粋なLinux環境であっても、Kerberosを設定する代わりにSamba(SMB/CIFS)に頼る方がはるかに簡単ですが、多くの場合です。
少なくともルート権限の昇格を防ぐために、デフォルトでNFS共有はオプションroot_squash
でエクスポートされ、root (uid=0, gid=0)
からanonuid
およびanongid
に送られるすべてのクライアント要求をマップします。この動作はno_root_squash
でオーバーライドでき、エクスポートへのルートアクセスを許可します。
ここには、別の欠点があります。 NFSを適切に機能させるには、基本的にすべてのマシンで同じUID/GIDが必要です。アクセスしたいファイルは1026
に属し、パーミッション755を持っています。クライアントのユーザーはuid=1000
を持っています。 GIDも一致しないため、ワールド許可のみが取得されます。したがって、書き込みアクセスはできません。
これを解決するには、次のいずれかを実行できます。
NASで、ファイルの所有者を1000
に変更します。その特定のアカウントを作成する必要があるかもしれません。これが他のサービスにどのように影響するかはわかりません。
ローカルユーザーのUIDを1026
に変更します。
サーバー上のファイルにアクセスするのは自分だけなので、すべての要求が適切なUIDからのものであるとサーバーに見せかけることができます。そのために、NFSにはオプションall_squash
があります。 anonuid,anongid
で指定された匿名ユーザーにすべての要求をマップするようサーバーに指示します。
all_squash,anonuid=1026,anongid=100
のエクスポートにオプション/etc/exports
を追加します。
注意してくださいただし、これによりanyoneエクスポートが事実上それらのファイルの所有者になります!
ファイルをいたずらしないと完全に信頼していない人やクライアントとネットワークを共有する場合は、認証を提供するファイル共有の方法を検討する必要があります。私の意見では、Sambaはそれを達成する最も簡単な方法です。
showmount -e 10.1.1.214
を実行して、エクスポートオプションを確認します。 Permission denied
エラーは、NFSサーバー自体から発生しています。オプションをrw,user,auto
からdefaults
に変更してみてください。