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


16

外付けの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にディスク上で実行する必要があるように思えます。

私が明らかに悪い慣習と考えているものはありますか?ディスクには、ビデオ、音楽、画像が含まれている可能性が高く、財務データのように保護する必要はありません。


私はあなたに従うかどうかわかりません。外部ドライブにアクセス許可を設定しようとしましたか?
ラメシュ14

1
はい。それは良いことですか?
ローLord。

回答:


19

特に複数のシステムがある場合は、マルチユーザーシステムの問題です。;)あなたがしたいことをする本当に良い方法はありません。頭に浮かぶアプローチは

  • 外部ドライブを使用しているすべてのマシンのアカウントに同じUIDを持っている(ほとんどの場合、すべてのマシンが制御されているわけではないため、実際には実行できません)
  • 所有者/グループconecptを認識しないファイルシステムを使用する(FATまたはNTFSが頭に浮かぶが…aaah、いいえ)

最も効果的なアプローチは、一般的な慣行に戻ることです。ほとんどの(少なくとも)Linuxシステムでは、通常共通のGID を持つグループがいくつかあります。たとえば、ほとんどのLinuxディストリビューションでusersGID 100があります。このグループにそれぞれのユーザーアカウントを管理できれば、

  1. このグループが所有するドライブ上のすべてのファイルとディレクトリを作成します
  2. なんとかしてそれらのファイルとディレクトリに適切なグループ許可を与えることができます
  3. どういうわけか、適切なグループ所有権の応答で作成された新しいファイルを管理することができます。許可。

最初と2番目のポイントは簡単に達成できます(chownchmod)。3番目のポイントgetは少し複雑です。

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

許可ビットは少し難しいです。新しく作成されたファイル/ディレクトリのアクセス権がある(とりわけ)の影響を受けumask、ビットビットマスクの占いではないセットに明示的に記述されていない場合。umaskたとえば022、一般的な値はです。つまり、「グループ」と「その他」の書き込みビットは通常設定しないでください。あなたは、あなたを変えることができるumask002あなたは書き込み権限がグループのためにクリアする必要はありませんが、欠点は、あなたが、この値は、ディレクトリベースの設定ができないということであり、あなたが通常のために書き込み権限を持っている必要はありません言って、作成するすべてのファイルのプライマリグループセット。

これは、ACLを使用して解決することができます:ACLでユーザーが設定できるmaskdefault、このACLを設定したディレクトリ内に作成されたすべてのファイルとディレクトリに適用されるアクセス許可セットを、。あなたの問題の1つの可能な解決策は

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

参照してくださいsetfacl(1)、そしてacl(5)より多くの詳細については。


1
そこext4は、彼のとgidマッピングに漂っパッチたspinics.net/lists/linux-fsdevel/msg57240.htmlは ...、私はそれが通じ来ているとは思わない
Rmano

10

同様の質問もう1つあり、bindfsが提案されています。

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

OSXユーザーはnoowners、次のようなマウントオプションを推奨します。

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


bindfsはかなり遅いです。おそらくそれはFUSEファイルシステムだからでしょう。
ナビン

4

ファイルの所有者とグループは数字として保存されます。そのため、ファイルは、接続しているシステム上のユーザー(またはまったくユーザー)に関係なく、uid = 1005によって所有されます。

ユーザー/グループをnobodyに変更しても問題は解決しません。その後、nobodyユーザー(またはnobodyグループのメンバー)のみがファイルへのアクセスを許可されます。

残念ながら、ext4で権限チェックを無効にする方法はないと思います。たとえば、ext3またはext4ファイルシステムでファイルのアクセス許可を無効にすることはできますか?を参照してください


2

アンドレアス・ウィーゼは、すべてのホストに共通のグループIDがある場合、setgidビットとACLで問題を解決できると言います

Linuxディストリビューション全体で事前定義されたグループIDを質問しますか?

独自の調査により、このようなグループはすべての触れられたディストリビューションに存在することがわかりました。Debian 、Ubuntu、RedHat、Fedora、CentOS、Suse、FreeBSD、OpenBSD、NetBSD、MacOSX、Solarisのsysグループ共有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は完全なソリューションを提供するために使用されます。

こちらもご覧ください:

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