新しい会話を開始

Solved!

ソリューションへ移動

1 Rookie

 • 

15 メッセージ

73

2025年4月18日 04:46

Unity NFSサーバー 書き込みをした場合の所有者を全て「nodody」にする方法

Unity Unity XT 380F(5.5.0.0.5.259)を利用しており、NFSサーバーの設定をしています。

NFSクライアント(Linuxサーバー/CentOS7、Rocky Linux9)から書き込みをした場合に
所有者がすべて「nobody」になるようにしたいのですが、どうすれば良いでしょうか?


Linuxサーバー(CentOS7など)でNFSサーバーを構築する場合は「/etc/exports」に「all_squash」の設定をすることで可能かと思いますが、
UnityのNFSサーバーにて同等の設定を行う方法が分かりません。


現状、「ホストアクセス」の設定で「読み取り/書き込み」に設定して、
NFSクライアント(Linuxサーバー/root)から書き込みを行うと「許可がありません」のエラーとなってしまいます。


また、「ホストアクセス」の設定で「読み取り/書き込み、rootを許可」に設定して、
rootにて書き込みを行うと所有者は「nobody」にはならず、「root」になってしまいます。


以下のQAを確認しましたが、

・[Unity 480F]NFS共有でのsquash設定の可否について
https://www.dell.com/community/ja/conversations/%E3%82%B9%E3%83%88%E3%83%AC%E3%83%BC%E3%82%B8-%E3%82%B3%E3%83%9F%E3%83%A5%E3%83%8B%E3%83%86%E3%82%A3/unity-480fnfs%E5%85%B1%E6%9C%89%E3%81%A7%E3%81%AEsquash%E8%A8%AD%E5%AE%9A%E3%81%AE%E5%8F%AF%E5%90%A6%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6/647f9f04f4ccf8a8de3c0ad6?keyword=all_squash


以下の仕様ということかと思います。

「読み取り/書き込み」⇒「root_squash」相当。
「読み取り/書き込み、rootを許可」⇒「no_root_squash」相当。


そのため、「all_squash」相当の設定はUnityではできないのでしょうか?


よろしくお願いします。

Community Manager

 • 

7.2K メッセージ

2025年5月1日 03:19

Nakacさん

 

ご返信を有難うございます。

前半の手順に関してはおそらく問題ないとは思いますが(後述資料参照)後半の以下の部分に関しては念のため移行前にテストすることをお勧めします。


・Unityをリプレースする。
 →Webアプリサーバーはrootで起動したままだが問題ない。
  rootで書き込んだ場合の所有者は全て「3000」となる。

 ↓

・Webアプリを起動するユーザーをrootから「匿名UID」で設定したUID「3000」に変更する。
 →NFS上の所有者(UID)は全て「3000」のため、問題ない。


参考:Dell EMC Unity™ Family Configuring NFS File Sharing 

Page28
By default, users can set bit s in the execute portion of the owner or group permissions of a file. Users can then set the setuid and setgid Unix permission bits. This allows users to run the executable with the privileges of the file's owner (such as root). De-select Allow SUID if you do not want users to have this ability.

 

Community Manager

 • 

7.2K メッセージ

2025年4月21日 00:34

Nakacさん

 

残念ながらall_squash設定はセキュリティ上の問題からサポートされていない、
というサポート案件での回答がありました。(社内のDiscussionでも同様でした。)

 

以下に関しては‘Read/Write’もしくは‘Read-Only’の設定であるとRootユーザはsquashedされるのでExportのマウントができないのが仕様になります。(‘Read/Write Root’ もしくは ‘Read-Only Root’にすればsquashはDisableになります)

 

現状、「ホストアクセス」の設定で「読み取り/書き込み」に設定して、
NFSクライアント(Linuxサーバー/root)から書き込みを行うと「許可がありません」のエラーとなってしまいます。

1 Rookie

 • 

15 メッセージ

2025年4月22日 02:50

@ayas​さん、
ご回答ありがとうございます。

Unityでは「all_squash」に相当する設定はできないとのこと、了解しました。

現在、運用中のUnityがあるのですが、近々に保守が切れるため、新規に購入したUnityへのリプレースを予定してしています。

現在のUnityの状況とやりたいことは以下の通りです。


■現在、稼働中のUnity(リプレース対象)について
・NFSサーバーとして稼働させており、複数のWebアプリサーバーがUnityにNFSマウントし、NFS上のファイルにアクセスできるようにしている。

 WebアプリによるNFSへのアクセスは読み取りだけでなく書き込みも行っている。

・Unityの「ホストアクセス」の設定は「読み取り/書き込み、rootを許可」にしており、Webアプリサーバーはrootで起動している。そのため、NFS上のファイルの所有者は全て「root」である。

※NFS上には現在、約400万のファイルがあり、今後も増える予定。

■今後やりたいこと
・現在、Webアプリサーバーはrootで起動しているが、セキュリティの観点からroot以外のユーザーで起動させる形に変更したい。その場合、NFS上のファイルの所有者が「root」では書き込みができないため、「nobody」に変更したいと考えた。

■考えていた進め方
・リプレース用のUnityのNFSは「all_squash」相当の設定とする。

・リプレース作業では、別のLinuxサーバーを経由し、既存のUnityからリプレース用のUnityにRsyncでNFS上のファイルを同期する。
 →この時、リプレース用のUnityにコピーされたファイルの所有者は全て「nobody」になる。

・Unityリプレース後もWebアプリはrootで起動するが、UnityのNFSの設定が「all_squash」相当であれば、Webアプリから書き込んだデータの所有者は全て「nobody」になる。

・その後、Webアプリをroot以外のユーザーで起動するように変更する。
 →root以外のユーザーでNFSに書き込んでも所有者は全て「nobody」のため、問題ない。

■確認したいこと
・今回、Unityでは「all_squash」の設定ができないということが判明したため、上記の「■考えていた進め方」ができない形となりましたが、何か方法はないでしょうか?

・Webアプリを起動するユーザーをroot以外のユーザーに変更するタイミングで、chmodコマンドにて、NFS上のファイルの所有者を全てWebアプリを起動するユーザーに変更するという方法が考えられますが、対象のファイルが約400万もあるため、相当な時間がかかることが予想され、現実的ではないと考えていますが、いかがでしょうか?

よろしくお願いします。

Community Manager

 • 

7.2K メッセージ

2025年4月23日 07:25

Nakacさん

ご返信を有難うございます。


・リプレース作業では、別のLinuxサーバーを経由し、既存のUnityからリプレース用のUnityにRsyncでNFS上のファイルを同期する。
 →Rsyncコマンドのオプション(--chmod) などを使ってパーミッション変更しながらの同期もできそうなのでテストなどができるのであれば確認されてはどうでしょうか。

 


■確認したいこと
・今回、Unityでは「all_squash」の設定ができないということが判明したため、上記の「■考えていた進め方」ができない形となりましたが、何か方法はないでしょうか?
→おっしゃる通りchmod などでの方法しかないのかと。

スクリプトでの対応であれば負荷も軽減するでしょうし、先のRsyncコマンドのオプションなどで検討の余地があると思います。

1 Rookie

 • 

15 メッセージ

2025年4月30日 08:43

@ayasさん、
ご回答ありがとうございます。

「all_squash」相当の設定ができないのは残念ですが、以下の方法で作業を進めることにします。

・リプレース用のUnityには以下の設定をする。
 →「ホストアクセス」の設定は「読み取り/書き込み」とし、
  「全般」の設定で「SUIDを許可」にチェックし「匿名UID」と「匿名GID」に特定の数値(例えば「3000」)を設定する。

 ↓

・既存UnityにrootでマウントしたLinuxサーバーからRsyncにてリプレース用のUnityにファイルを同期する。
 →これによりリプレース用UnityのNFS上の所有者(UID)は全て「3000」となる。

 ↓

・Unityをリプレースする。
 →Webアプリサーバーはrootで起動したままだが問題ない。
  rootで書き込んだ場合の所有者は全て「3000」となる。

 ↓

・Webアプリを起動するユーザーをrootから「匿名UID」で設定したUID「3000」に変更する。
 →NFS上の所有者(UID)は全て「3000」のため、問題ない。

よろしくお願いします。

1 Rookie

 • 

15 メッセージ

2025年5月1日 07:22

@ayas​ さん、
ご確認ありがとうございます。

前半の手順に関してはおそらく問題ないとは思いますが(後述資料参照)後半の以下の部分に関しては念のため移行前にテストすることをお勧めします。

→了解しました。

 テストは既に実施しており、問題なさそうなことを確認しています。

よろしくお願いします。










イベントは見つかりませんでした!

Top