web-dev-qa-db-ja.com

Synology NASのNFS共有への読み取り/書き込みアクセスを取得するにはどうすればよいですか?

マウントされた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

11
marsilea

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はそれを達成する最も簡単な方法です。

10
Nephente

showmount -e 10.1.1.214を実行して、エクスポートオプションを確認します。 Permission deniedエラーは、NFSサーバー自体から発生しています。オプションをrw,user,autoからdefaultsに変更してみてください。

0