ext4外付けハードドライブに対するユーザー権限をコンピュータ間で移植できますか?

ext4外付けハードドライブに対するユーザー権限をコンピュータ間で移植できますか?

コンピュータ間で移動する可能性が最も高い外部USB 3ディスクドライブ(2TB容量)があります。ディスクには、GUIDパーティションテーブルとext4パーティションがあります。プロセスを昇格しないと、ディスクに書き込むことはできません(sudo)。

現時点では、次の方法のいずれかまたは両方を試してみたいと思い、それぞれの方法の欠点が気になります。

  1. chmod 777 /mnt/externalDrive
  2. chown nobody:nogroup /mnt/externalDrive

777 権限を与えて user1(UID:1005) がここに書き、次に user7 の UID:1005 を使用する別のコンピュータにディスクを移動するとどうなりますか。 user7はこのコンピュータ上のファイルの所有者になりますか?chown -R nobody:nogroup /mnt/externalDrive定期的にディスクを実行する必要があるようです。

明らかに悪い習慣だと思うことはありますか?ディスクにはビデオ、音楽、写真が含まれている可能性が高く、これらの一部は金融データのように保護する必要はありません。

ベストアンサー1

これは、特にマルチユーザーシステムがある場合のマルチユーザーシステムの問題です。 ;) いいえ本物好きなことをするのに最適な方法です。私が考えた方法は

  • 外付けドライブを使用するすべてのコンピュータでアカウントに同じUIDを設定します。 (すべてのコンピュータを制御できないため、実用的ではありません。)
  • 所有者/グループ接続がわからないファイルシステムを使用してください(FATやNTFSが考えられました...ああ、いいえ)

最も効果的なアプローチは、一般的な慣行に戻ることです。ほとんどの(少なくとも)Linuxシステムには、次の機能を持つグループがあります。通常一般的なGID。たとえば、ほとんどのLinuxディストリビューションにはGIDがありますusers100グループに個別のユーザーアカウントがある場合は、次のことができます。

  1. ドライブ上のすべてのファイルとディレクトリをこのグループが所有するようにします。
  2. どういうわけか、これらのファイルとディレクトリに対する適切なグループ権限を管理しました。
  3. どういうわけか、適切なグループ所有権を使用して個別に新しいファイルを作成しました。権限。

最初と2番目は実装が簡単です(chown、、chmod)。 3番目のポイントは少しトリッキーです。

「グループ所有権」部分は比較的簡単です。ドライブのすべてのディレクトリにSGIDビットを設定します。ディレクトリに適用される SGID ビットは、カーネルに BSDish 方式で動作するよう指示します。 BSDは、ファイル/ディレクトリを作成したプロセスのデフォルトグループではなく、特定のディレクトリグループに作成された各ファイル/ディレクトリを作成します(Linuxと同様)。ただし、親ディレクトリの所有者がします。

権限部分が少し難しいです。新しく作成されたファイル/ディレクトリの権限は(他の何よりも)影響を受けます。umaskこれはどのビットを知らせるビットマスクです。いいえ明示的に指定しない場合に設定されます。umaskたとえば、共通値はです022。これは、「グループ」と「その他」の書き込みビットが通常設定されてはならないことを意味します。グループの書き込み権限を消去したくないことを示すためにこれをに変更することができますが、umask欠点はこの値をディレクトリベースに設定できず、通常はデフォルトグループの書き込み権限を設定したくないことです。002あなたが作成するすべてのファイルに対する権限。

これはACLを使用して解決できます。 ACLでは、このACLセットを使用して、ディレクトリ内に作成されたすべてのファイルとディレクトリに適用される権限maskセットを設定できます。defaultしたがって、問題に対する考えられる解決策の1つは、

  • 外付けドライブを使用するすべてのシステムがユニバーサルグループのメンバーであることを確認してください。
  • ドライブ上のすべてのファイルとディレクトリをこのグループが所有するようにし、すべてのディレクトリにSGIDビットを設定します。
  • マスクとデフォルトの権限を含めるようにすべてのディレクトリのACLを変更し、カーネルにそれぞれの新しいファイル/ディレクトリを作成するように指示し、グループに対する書き込み権限を設定します。

詳細については、およびsetfacl(1)を参照してください。acl(5)

おすすめ記事