編集後にファイルの所有権を維持するにはどうすればよいですか?


11

私の質問は、新しく作成されたファイルについて尋ねることを除いて、これと似ています。

私のUnixボックスでは、ユーザーalicebob、およびtomcatはグループtomcatに属しています

Tomcatサーバーの構成ファイルは、ユーザーtomcatとグループtomcatに所有されています。

アリスとボブがファイルを編集できるように、このファイルの権限をグループごとに読み取りと書き込みができるように変更しました。

ただし、編集後、ファイルを最後に編集したユーザーがファイルを所有することに気付きました。

Q: AliceとBobが所有権を変更せずにファイルを編集できるように権限を変更することはできますか?

とにかくファイルを編集するとファイルの所有権はどのように変わりますか?


tomcatが引き続きファイルを所有することを保証することが目標ですか、それとも次のことを保証することが目標です。tomcatサーバーが引き続き機能します。アリスとボブは両方ともファイルの編集を続けることができ、そのセキュリティは維持されますか?
ctrl-alt-delor

1
質問の表現方法に基づいて、tomcatサービスはユーザー「tomcat」の下で実行されていると想定します。Tomcatを悪用すると、意図しないサーバーのビットを公開するように独自の設定が書き換えられる可能性があるため、これはおそらく望ましくありません。設定を書き込むことができる別のグループを使用することを検討する必要がありますが、Tomcatグループは読み取りはできますが書き込みはできません。
Ed Neville

回答:


17

作成されるファイルのユーザーは、エディターの動作によって異なります。一部のエディターは、ファイルを切り捨て、(inodeを変更せずに)ファイルを上書きして保存します。また、一部の編集者はファイルの名前を別の名前(通常はfileto file~)に変更し、元の名前で新しいファイルを作成します。元のファイルを変更すると所有者は同じになり、新しいファイルを作成すると、新しいファイルは作成プロセスのUIDによって所有されます。

私はDebianの上で持って、編集者nanojoe、同様にnviしてvim(最小限のバージョンではvim-tiny)その場で上書きするように見えます。私が思うにvim、Emacsはおそらく何をするかで設定可能です。


スティーブンは、アトミック更新についてコメントしています。インプレースでの再作成の問題は、ファイルが長さゼロに切り捨てられてから書き込まれることです。すべてのデータが書き込まれる前に、別のプロセスがそれを開いて読み取る可能性があります。

アトミック更新は、言うようfile.newに新しいバージョンを作成し、次にに名前file.newを変更することによって行われfileます。バックアップファイルを残して、を作成しfile.new、リンクしてfileからfile~、に名前file.newを変更できますfile。名前を変更すると、名前でファイルにアクセスするすべてのプロセスが古いバージョンまたは新しいバージョンのいずれかを取得します。もちろん、開いているファイルハンドルは、開いたままにしていたファイルを指し、ファイルの一貫したビューを提供します。


ファイルのアクセス許可の観点から、同じファイル(inode)を保存するには、ファイル自体(ディレクトリではなく)への書き込みアクセスが必要です。ファイル名を変更して新しいファイルを作成するには、ディレクトリ(ただし元のファイルへの書き込み)への書き込みアクセスが必要です)。

(名前の変更と再作成は、誰かが共有ディレクトリでファイルを作成または変更したが、グループにそのファイルへの書き込みアクセス権を与えるのを忘れた場合に、ファイルのアクセス許可を修正する方法でもあります。)


6
作成と名前の変更は、POSIXセマンティクスを使用してファイルがアトミックに更新されるようにする唯一の方法でもあります。
Stephen Kitt

いい説明。
Mian Asbat Ahmad

13

説明によってilkkachu使用されているエディタが保存新しいファイルを作成した場合、その後、制御する方法はありません所有者ファイルのは。ただし、おそらく本当に気にしているのは、Tomcatがファイルを読み取り可能な状態に保つことです。あなたは彼らのグループがtomcat(そして彼らが彼らのグループによって読むことができる)確保することによってそれを行うことができ、それはsetgidディレクトリのビットを設定することによって新しいファイルに強制することができます:

chmod g+s .

したがって、bobファイルを再作成するエディターを使用してファイルを編集する場合、編集されたファイルは最終的に所有されbob:tomcat、Tomcatは(umask少なくとも通常は)ファイルを読み取ることができます。親ディレクトリがtomcatグループによって書き込み可能である限り、そのグループ内のすべてのユーザーは、ディレクトリ内のファイルを編集できます(ファイルを再作成する場合のみ)。

ただし、プロセスの変更を検討することをお勧めします。Tomcatがファイルを読み取る場所でファイルを直接編集してはいけません。理想的には、ファイルは何らかのVCSで管理され、別のプロセス(場合によっては自動化)で展開されます。そうすれば、これらすべての所有権の問題を回避できます...


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