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


11

マウントされたNFS共有のみに読み取りアクセス権があります。

NASに「スカッシュマッピングなし」が設定されていると、Ubuntuの通常ユーザーは共有にアクセスPermission deniedしようとすると取得し、を使用した場合cdのみ読み取りアクセス権を取得できますsudo
スカッシュの「すべてのユーザーを管理者にマップ」設定を使用すると、クライアントの通常ユーザー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有効な書き込みアクセスを使用するというエラーで投稿しました)でマウントされたNFS共有のファイルを開くことはできますが、ファイルにsudo vi /mnt/nfs/Files/Data/test.file変更を書き込むことはできませんsudo:w!コマンドのviエラーメッセージは次のとおりです。
"test.file" E212: Can't open file for writing


NFSは、ユーザーID(UID)に対してアクセス許可をチェックします。ローカルマシン上のユーザーのUIDは、サーバー上でアクセスしようとしているファイルの所有者のUIDと一致する必要があります。サーバーに移動し、ファイルのアクセス許可を確認します。どのUID(で調べるid username)に属し、どの許可が設定されていますか?
ネフェンテ

cd通常のユーザーとしてマウントすることさえできますか?はいの場合、以下をお勧めします。私の疑いを確認または反論するには、次の手順を実行します。クライアントcdでマウントを実行しますls -n。ファイルの所有者とグループがそれぞれのIDでリストされます。あなたはそれをしなければならsudoないでしょう。id (no sudo!)の出力とともに、質問に1行または2行の出力を追加します。cd通常のユーザーとしてマウントすることさえできない場合は、エクスポートするディレクトリの権限を確認する必要があります。サーバー。
ネフェンテ

私はcd普通のユーザーとしてマウントに入れることができませんでした。サーバーでSquashを使用してアクセス許可を強制することは、アクセス許可を付与する一時的な修正として機能します。サーバーのアクセス許可とid username
marsilea

ありがとう、私はそれがよりよく使用することスカッシュとの正しい方法だけではなく、ブルートフォースNFSと思います..サーバー上の「管理者へのすべてのユーザーの地図」を
marsilea

場合によります。クライアントとユーザーを信頼していますか?そうしないと、NFSv3は結局のところ適切ではありません。クライアントにルートアクセスできる人はだれでもUIDを偽装できるからです。適切な認証が必要な場合は、SMBを使用した方が良いでしょう。NFSv4での認証には、かなり複雑なKerberosの実行が必要です。しかし、それでもあなたの出力は私を困惑させます...マウントポイントはであると思います/mnt/nfs/Files。にFiles属しますがroot、許可は誰でも何でもできるようにします。ユーザーとしてそのディレクトリを入力するのに苦労する理由は私には意味がありません。おそらく関連する行を投稿し/etc/exportsますか?
ネフェンテ

回答:


11

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が必要です。アクセスするファイルは、1026755に属し、パーミッションが755ですuid=1000。クライアントのユーザーはを持っています。GIDも一致しないため、ワールド許可のみが取得されます。したがって、書き込みアクセスはできません。

これを解決するには、次のいずれかを実行できます。

  • NASで、ファイルの所有者をに変更します1000。その特定のアカウントを作成する必要があるかもしれません。これが他のサービスにどのように影響するかはわかりません。

  • ローカルユーザーのUIDをに変更します1026

  • サーバー上のファイルにアクセスするのは自分だけなので、すべての要求が適切なUIDから送信されているようにサーバーに見せかけることができます。そのため、NFSにはオプションがありますall_squash。で指定された匿名ユーザーにすべてのリクエストをマッピングするようサーバーに指示しますanonuid,anongid

    all_squash,anonuid=1026,anongid=100のエクスポートにオプションを追加し/etc/exportsます。

注意してください、これは作るために、しかし、誰もがそのファイルの所有者に効果的に輸出を取り付け!

ファイルをいたずらしないと完全に信頼していない人やクライアントとネットワークを共有する場合は、認証を提供するファイル共有の方法を検討する必要があります。私の意見では、Sambaはそれを達成する最も簡単な方法です。


NFSを選択したのは、Ubuntuクライアントの外部USBドライブにrsyncでNASをバックアップできるようにしたいので、LinuxからLinuxへの利点があると考えたためです(SynologyのDSMシステムはUSBドライブへの同期を提供しません) 、ファイルの所有権と許可情報を保持します。徹底的な回答と、ガイダンスに感謝します。
marsilea

0

やるshowmount -e 10.1.1.214エクスポートオプションを参照してください。Permission deniedエラーはNFSサーバー自体から発生しています。オプションを変更しようとrw,user,autoしますdefaults

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.