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)

答え2

持つ別の同様の質問そして、Bindfsを使用することをお勧めします。

mkdir /home/$user/sda1
bindfs -u $user -g $group /mnt/sda1 /home/$user/sda1

OSXユーザーに推奨されるnoownersインストールオプションは次のとおりです。

ボリューム全体の所有権フィールドを無視します。これにより、すべてのオブジェクトがユーザーID 99とグループID 99の所有として表示されます。ユーザID99は現在有効なユーザIDと解釈されるが、グループID99は直接使用され、「不明」に変換される。

答え3

ファイルの所有者とグループはデジタルで保存されます。したがって、ファイルが接続されているシステムのユーザー(またはユーザーがまったく存在しない)に関係なく、uid = 1005はファイルを所有します。

ユーザー/グループを[なし]に変更しても問題は解決しません。これにより、誰もいないユーザー(または誰もグループのメンバー)だけがこのファイルにアクセスできます。

残念ながら、ext4の権限検証を無効にする方法はないと思います。例えばext3またはext4ファイルシステムでファイル権限を無効にできますか?

答え4

アンドレアス・ヴィジェすべてのホストに共通グループIDがあると仮定すると、setgidビットとACLを使用して問題を解決できます。

私は質問するLinuxディストリビューションに事前定義されたグループIDがありますか?

直接調査した結果、Debian、Ubuntu、RedHat、Fedora、CentOS、Suse、FreeBSD、OpenBSD、NetBSD、MacOSX、sysSolarisのグループ共有IDなど、関連するすべてのディストリビューションにこれらのグループが存在することがわかりました。3

これで:

$ sudo chgrp -R sys /mnt/data/dir
$ sudo chmod -R g+s /mnt/data/dir
$ sudo setfacl -R -m g:sys:rwx /mnt/data/dir
$ sudo setfacl -R -d -m g:sys:rwx /mnt/data/dir

そしてこの味はこんな感じです。

$ sudo adduser user sys

あなたはuserそれに任意のファイルを読み書きすることができます/dir

ほとんどの作業はsetgid役に立ちますが、残念ながら通常は制御できませんumask。したがって、ACLを使用して完全なソリューションを提供してください。

また見なさい:

関連情報