web-dev-qa-db-ja.com

Linuxマシンの完全なRW権限を持つext4フォーマットのUSBドライブを作成するにはどうすればよいですか?

USBスティックをext4にフォーマットして、他の一般的なLinux以外のフォーマットドライブ(FAT32exFATNTFS)と同じように使用したい。

つまり、USBスティックを自分のLinuxマシンのいずれかに接続し、それに読み書きできるようにしたい権限を調整する必要なしにchmodまたはchownもの。

コマンドラインコマンドではなく、GPartedのようなGUIパーティションソフトウェアを使用したいのですが、解決策は歓迎します。

このような投稿は重複するフラグ天国であると確信していますが、6〜10 SOおよびgoogleからのフォーラム投稿を参照した後、私は質問に対する簡単な解決策を見つけることができませんでした。すべてがユーザーごとに権限を調整することでしたが、NTFSと同じように便利なext4ドライブを使用できないだけかもしれません。

14
Alnitak

UNIXスタイルのファイルシステムと同様に、ext4には標準のUnixファイルの所有権とアクセス許可の規則が含まれています。つまり、ユーザーはUID番号で識別され、各ユーザーは1つ以上のグループに属し、各グループはGID番号で識別されます。各ファイルには、所有者UIDと1つのグループ所有者GIDがあります。 3つの古典的なUnixファイルのアクセス権セットは次のとおりです。

  • 所有者のUID番号で識別される、所有者の1セットの権限
  • グループのGID番号で識別される、グループ所有者の1セットの権限
  • 他のすべての人に1セットの権限

権限を調整する必要なくスティックにアクセスできるようにするには、スティック上に作成されたファイルとディレクトリに、制限のない権限が自動的に付与されるようにする必要があります。問題は、作成されたすべての新しいファイルのアクセス許可がumask値によって制御されていることです。USBスティックでファイルを作成するために、この値を000に変更し続ける必要はありません。通常の使用では、デフォルト値(通常は002または022)に設定します。単一のミスにより、ワイドオープンの権限を持つ重要な構成ファイルを作成することになり、ユーザーアカウントのセキュリティを侵害したり、その他の小さな問題を引き起こす可能性があります。

通常のユーザーのUID番号がすべてのLinuxシステムで同じであることを確認でき、その1人のユーザー(もちろんルート)のアクセスのみに関心がある場合は、USBスティックをext4にフォーマットするだけで済みます。初めてマウントし、ファイルシステムの使用を開始する前に、ルートディレクトリの所有権を通常のユーザーアカウントに割り当てます。

/dev/sdX1がファイルシステムを作成するUSB​​スティックのパーティションであり、<username>がユーザー名であるとすると、USBスティックを使用するように設定するときにこれを行うことができます。

Sudo mkfs.ext4 /dev/sdX1
Sudo mount /dev/sdX1 /mnt
Sudo chown <username>: /mnt
Sudo umount /mnt

ただし、一致するUID/GID番号を保証できない場合や、USBスティックを使用する可能性のある複数のユーザーがいる場合は、もう少し複雑な操作を行う必要がありますが、ext4を作成した後は1回限りの操作が必要です。スティック上のファイルシステム。

USBスティックファイルシステムのルートディレクトリにデフォルトACLを設定する必要があります。これにより、すべての新しいファイルまたはディレクトリの全員にフルアクセスを割り当てます。また、スティックがACLサポートを有効にしてマウントされるようにするには、tune2fsを使用して、ファイルシステムメタデータに格納されているデフォルトのマウントオプションを調整する必要があります。

Sudo mkfs.ext4 /dev/sdX1
Sudo tune2fs -o acl /dev/sdX1
Sudo mount /dev/sdX1 /mnt
Sudo chown <username>: /mnt
chmod 777 /mnt
setfacl -m d:u::rwx,d:g::rwx,d:o::rwx /mnt
Sudo umount /mnt

すべてのシステムがext4ファイルシステムのACLをサポートし、使用するリムーバブルメディアマウントツールがaclマウントオプションを無視することを選択しないとすると、すべてのファイルが作成されたUSBスティックが必要になります。権限は-rw-rw-rw-になり、作成されたすべてのサブディレクトリはdrwxrwxrwx+になります。プラス記号は、サブディレクトリにACLがあることを示します。スティックのルートディレクトリに設定されたカスタムのデフォルトの権限セットは、サブディレクトリにも継承され、同じように動作します。

所有者のUID/GIDは、ファイルシステムにファイルを作成したユーザーのUIDおよびプライマリGIDと一致しますが、ファイルとディレクトリのアクセス許可が緩和されているため、それほど問題にはなりません。

私が予期する可能性がある唯一の問題は、USBスティックへのcopyingファイルがデフォルトで元のファイルのアクセス許可を複製しようとすることです。この場合、これは望ましくありません。

たとえば、アクセス許可-rw-r--r--を使用してシステムAにファイルを作成し、それをスティックにコピーする場合、一致しないUID番号を使用してスティックをシステムBに移動します。システムBでファイルを読み取ることはできますが、最初に元のファイルを明示的に削除または名前を変更しない限り、スティックでファイルを上書きすることはできません。しかし、ファイルのあるディレクトリへの書き込みアクセス権がある限り、それを行うことができます。

これは実際に便利な機能です。複数のシステムで同じファイルを変更すると、One True Fileを上書きするのではなく、毎回新しいバージョンのファイルを保存するようになります...ファイルが重要な場合は、実際には良いことかもしれません。

19
telcoM