マシン間で移動される可能性が最も高い外付けUSB 3ディスクドライブ(容量2TB)があります。ディスクにはGUIDパーティションテーブルとext4パーティションがあります。プロセスを昇格しない限り、ディスクに書き込むことができません(Sudo
)。
現在、私は次のいずれかまたは両方を試すことを考えています、そしてそれぞれの短所を知りたいです-
chmod 777 /mnt/externalDrive
chown nobody:nogroup /mnt/externalDrive
777のアクセス許可を与え、user1(UID:1005)がそれに書き込み、後でuser7がUID:1005である別のコンピューターにディスクを移動すると、どうなりますか? user7はそのコンピューター上のファイルの所有者になりますか?定期的に実行する必要があるようですchown -R nobody:nogroup /mnt/externalDrive
ディスク上。
私が明らかに悪い習慣を検討しているものはありますか?ディスクにはビデオ、音楽、写真が含まれている可能性が高く、財務データのように保護する必要はありません。
特に、複数のシステムがある場合、マルチユーザーシステムの問題です。 ;)ありません本当にあなたが望むことをするための素晴らしい方法。頭に浮かぶアプローチは
最も効果的なアプローチは、一般的な方法に戻ることです。ほとんどの(少なくとも)Linuxシステムでは、通常共通のGIDを持つグループがいくつか存在します。たとえば、users
は、ほとんどのLinuxディストリビューションでGID _100
_になります。このグループにそれぞれのユーザーアカウントを持たせることができれば、
最初と2番目のポイントは簡単に達成できます(chown
、chmod
)。 3番目のポイントは少しトリッキーです。
「グループ所有権」の部分は比較的簡単です。ドライブのすべてのディレクトリにSGIDビットを設定できます。ディレクトリに適用されるSGIDビットは、BSDのように動作するようにカーネルに指示します。BSDは、ファイル/ディレクトリを作成するプロセスのプライマリグループ(Linuxのように)によって所有されない特定のディレクトリグループの下に作成されたすべてのファイル/ディレクトリを作成しますが、親ディレクトリの所有者。
許可ビットは少し難しいです。新しく作成されたファイル/ディレクトリのアクセス許可は、(特に)umask
の影響を受けます。ビットマスクは、明示的に指定されていない場合に設定するビットnotを指定します。たとえば、一般的なumask
値は_022
_です。これは、「グループ」と「その他」の書き込みビットは通常設定されないことを意味します。 umask
を_002
_に変更して、グループの書き込み権限をクリアしたくないことを伝えることができますが、欠点は、この値をディレクトリベースで設定できないことです。通常は、作成するすべてのファイルにプライマリグループの書き込み権限を設定する必要はありません。
これはACLを使用して解決できます。ACLでmask
およびdefault
権限セットを設定できます。これは、このACLが設定されたディレクトリ内に作成されたすべてのファイルとディレクトリに適用されます。だからあなたの問題の1つの可能な解決策は
詳細については、setfacl(1)
およびacl(5)
を参照してください。
別の同様の質問 があり、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は直接使用され、「不明」に変換されます。
ファイルの所有者とグループは番号として保存されます。したがって、ファイルは、システムに接続しているユーザーが(またはまったく)関係なく、uid = 1005によって所有されます。
ユーザー/グループをnobodyに変更しても問題は解決しません。次に、nobodyユーザー(またはnobodyグループのメンバー)のみがファイルへのアクセスを許可されます。
残念ながら、ext4で権限チェックを無効にする方法はないと思います。たとえば、次を参照してください ext3またはext4ファイルシステムのファイル権限を無効にすることは可能ですか?
Andreas Wieseすべてのホストに共通のグループ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は完全なソリューションを提供するために使用されます。
以下も参照してください。