クラウドストレージには多くの利点がありますが、データを物理ハードドライブに保存することに勝るものはありません。データをドライブに保存すると、データがどこにあるかが正確にわかり、必要なときにいつでも利用できます。 USBサムドライブなどの外部ポータブルドライブにデータを保存すると、データがどこにあるかがわかるだけでなく、どこにでもデータを持ち運ぶことができます。 Linuxを初めて使用する場合、または外付けドライブでLinuxファイルシステムを使用しようとしている場合は、外付けドライブが混乱したり、権限エラーや競合が発生したり、メタデータが失われたりする可能性があります。
これには2つの「正しい」答えがあります:
ExFAT
以前は、ExFATは、コードを所有しているため、Microsoftからの法的な脅威に満ちたファイルシステムでした。彼らは以前にFATの所有権を擁護するために企業や組織を訴えたことがあり、ExFATでも同じことができるのではないかと一般的に恐れられていました。しかし、最近。 MicrosoftはExFATオープンソースの仕様を作成しました。残念ながら、ドライバーは提供されませんでしたが、Linuxで機能させるための既存のドライブがあり、開発者が完全な仕様にアクセスできるようになったため、改善は避けられません。
ExFATの利点は、クロスプラットフォーム(Windows、Mac、および多くのポータブルデバイスが使用)であり、ファイル権限のオーバーヘッドなしで設計されていることです。 ExFATとしてフォーマットされたドライブを任意のコンピューターに接続でき、すべてのファイルを誰でも利用できます。それが良いか悪いかはユースケースによって異なりますが、ポータブルメディアの場合、それがまさに目的であることがよくあります。
アクセス制御リスト(ACL)
ポータブルドライブでLinuxファイルシステムを使用する場合は、それを実行できますが、ファイルの共有をシームレスにするには、アクセス制御リスト(ACL)を使用する必要があります。
ドライブにファイルまたはディレクトリを作成する場合、システムには、取得するファイルのアクセス許可を決定するデフォルトがあります。ほとんどの場合、これらのデフォルトは理にかなっています。ホームディレクトリにファイルを作成するときは、他のユーザーにそのファイルへのアクセスを許可したくない場合があります。ただし、外付けドライブにファイルを作成する場合は、そのファイルを他の人と共有する必要があるためである可能性が高くなります(その人が別のコンピューターにいる場合でも)。
その他のLinuxリソース
- Linuxコマンドのチートシート
- 高度なLinuxコマンドのチートシート
- 無料のオンラインコース:RHELの技術概要
- Linuxネットワーキングのチートシート
- SELinuxチートシート
- Linuxの一般的なコマンドのチートシート
- Linuxコンテナとは何ですか?
- 最新のLinux記事
ACLを使用してファイル表示のデフォルトのアクセス許可を上書きしたり、スティッキービットを設定してデフォルトのファイル作成モードを制御したりできます。 ACLは、ディレクトリとファイルの拡張属性におけるセキュリティポリシーの層です。これにより、ファイルシステムのアクセス許可が示すものに対する例外を指定できます。特に、これにより、従来のUNIX権限の単一所有者および単一グループモデルを超越することができます。
たとえば、 seth (ID 1000)アカウントは、私のデスクトップに作成されたディレクトリ sethを所有している可能性があります (ID 500)ユーザーIDが異なるため、私のラップトップではそうではありません。
同じことがグループにも当てはまります。グループID1000のディレクトリが1台のコンピュータのディレクトリに割り当てられている場合、ID500または10922のグループは別のコンピュータのディレクトリにアクセスできません。ただし、ACLはセカンダリ所有者とグループをディレクトリとファイルに追加できます。
現在のACLを表示する
一般的なLinuxファイルシステム上のディレクトリとファイルには、デフォルトでACLルールがあります。これらは拡張属性に保存されます。これは、通常は表示されない一種のメタデータです。
ターミナルでそれらを見ることができます:
$ getfacl ./example
# file: /run/media/drive/example
# owner: seth
# group: users
user::rwx
group::rwx
other::r--
コメント行は参考用です。情報を表示しているファイルまたはディレクトリのパス、および所有者とグループが表示されます。次の行は、ファイルまたはディレクトリに適用されるルールを示しています。この例では、ユーザー権限は rwxに設定されています 、 r-xへのグループ 、およびその他の r-x 。これらの権限は、通常のファイルシステムリストに反映されます:
$ ls -lA /run/media/drive
drwxrwxr-- 26 seth users 4096 Jan 16 21:04 example
$ id
uid=1000(seth) gid=100(users) groups=100(users)...
ユーザーがsethである限り (UID 1000)またはグループのメンバー (GID 100)は例と相互作用します ディレクトリ、フルアクセスが許可されます。ただし、他のアカウントは( r )しか読んでいません )許可。
ACLの設定
ACLを変更するには、 setfaclを使用します コマンドを実行するか、ACLをサポートするファイルマネージャーを使用します。 ACLを設定するときは、非常に具体的または非常に一般的にすることができます。
ファイルシステムのアクセス許可設定を変更するには、 chmodのいずれかを使用できます またはsetfacl 。これは非常に一般的なACL設定です。これは、ファイルシステム仕様からUNIXですでに使用可能なアクセス許可に何も追加していないためです。
$ setfacl --modify g::r example
$ getfacl ./example | grep "group::"
group::r--
$ ls -l . | grep example
drwxr--r-- 26 seth users 4096 Jan 16 21:04 example
chmodでも同じ効果が得られます :
$ chmod g+x example
$ getfacl ./example | grep "group::"
group::r-x
$ ls -l . | grep example
drwxr-xr-- 26 seth users 4096 Jan 16 21:04 example
ユーザーとグループの追加
ACLのメリットを実際に享受するには、ネイティブUNIXパーミッションの範囲外のパーミッションにACLを使用する必要があります。 sethとしてデスクトップにログインしている場合 ユーザーIDが1000で、ポータブルドライブ上のディレクトリを sethが使用できるようにする必要があることを知っています。 ラップトップでID500を使用し、 sethを宣言するだけです ユーザーIDが同じではないため、所有者だけでは不十分です。
ユーザーまたはユーザーIDをアクセス制御リストに追加できます:
$ setfacl --modify u:500:rwx example
$ getfacl example
# file: /run/media/drive/example
# owner: seth
# group: users
user::rwx
user:500:rwx
[...]
ユーザーID500に固有の新しいエントリーがリストに追加されました。ドライブを別のLinuxまたはUNIXコンピュータに接続すると、ID500のユーザーが例にアクセスできるようになります。 フォルダ。
アカウント名でユーザーを追加したり、グループ名またはグループIDでグループを追加したりすることもできます。ただし、IDは実際にアクセス許可で重要になるため、混合環境(RHELサーバーとエレメンタリークライアントなど)を使用している場合は、表面上はアカウントの背後に潜んでいるユーザーIDとグループIDを確認する必要があります。同一。
デフォルトのACLルールの設定
アクセス制御を1回限りの設定として扱う場合、さまざまなユーザーアカウントがファイルとディレクトリの作成を開始すると、すぐに問題が発生します。各ユーザーによって作成された新しいファイルまたはディレクトリは、システムのデフォルトの権限(およびACL)を継承します。これは、ラップトップユーザーが seth ID 500を使用すると、ディレクトリにファイルが作成され、デスクトップユーザーの sethには立ち入り禁止になる可能性があります。 ファイルの所有者がUID500に設定されているため、IDは1000です。
デフォルトのACLをディレクトリに適用して、ディレクトリ内に作成されたファイルとサブディレクトリが親ACLを継承するようにすることができます。 –default を使用して、ディレクトリのデフォルトACLを設定できます。 オプション:
$ setfacl --default --modify u:500:rwx example
$ setfacl --default --modify u:1000:rwx example
$ getfacl --omit-header example
user::rwx
user:500:rwx
group::rw-
mask::rwx
other::r-x
default:user::rwx
default:group::rw-
default:group:500:rwx
default:group:1000:rwx
default:mask::rwx
default:other::r-x
ユーザーが例内に新しいディレクトリを作成したとき ディレクトリの場合、継承されたACLはその親と同じです:
$ cd example
$ mkdir penguins
$ getfacl --omit-header penguins
user::rwx
group::rw-
group:500:rwx
group:1000:rwx
mask::rwx
other::r-x
default:user::rwx
default:group::rw-
default:group:500:rwx
default:group:1000:rwx
default:mask::rwx
default:other::r-x
これは、作成されたディレクトリまたはファイルが同じACLを継承するため、ユーザー500または1000がアクセスから除外されることはないことを意味します。
外付けドライブ用の実用的なACL
外付けドライブにLinuxファイルシステムを使用する場合、ポータブルドライブの使用を期待するすべてのユーザーで確実に機能するようにする簡単な方法は、単一の最上位ディレクトリにACLを設定することです。
たとえば、 mydriveというUSBドライブをフォーマットしたとします。 ext4ファイルシステムとして。ラップトップとデスクトップのアカウント、および同僚のアリスがファイルにアクセスできるようにする必要があります。
まず、ドライブの最上位にディレクトリを作成します。
$ mkdir /mnt/mydrive/umbrella
次に、ACLを最上位ディレクトリに適用して、すべての重要なユーザーにアクセスを許可します。
$ setfacl --modify \
u:500:rwx,u:1000:rwx,u:alice:rwx \
/mnt/mydrive/umbrella
最後に、デフォルトのACLを適用して、すべてのディレクトリとファイルが最上位ディレクトリ傘内に作成されるようにします。 同じデフォルトACLを継承します(このコマンドは –modifyの短いバージョンを使用することに注意してください ):
$ setfacl --default -m u:500:rwx,u:1000:rwx,u:alice:rwx \
/mnt/mydrive/umbrella
既存のシステムにデフォルトを適用する
すでに存在する多くのファイルにACL設定を適用する必要がある場合は、検索を使用してそれを実行できます。 コマンド。
まず、すべてのディレクトリを見つけて、ACLルールを適用します。
$ find /mnt/mydrive/umbrella -type d | \
parallel --max-args=6 setfacl \
--default -m u:500:rwx,u:1000:rwx,u:alice:rwx
すべてのファイルのアクセス許可を無差別に実行可能ファイルに設定するのは賢明ではないため、次に、すべてのファイルを検索し、アクセス許可を再に設定します。 。実行可能ビットを必要とするファイルは、手動またはファイル拡張子で設定できます:
$ find /mnt/mydrive/umbrella -type f | \
parallel --max-args=6 setfacl \
--default -m u:500:rw,u:1000:rw,u:alice:rw
個々のニーズに合わせてこれらのコマンドのロジックを調整します( / usr の実行可能ビットを削除するコマンドを実行しないでください) 、たとえば、実行可能プログラムのみを含むディレクトリ上)。
外付けドライブ
Linuxの外付けドライブについて混乱させないでください。また、従来のUNIXのアクセス許可に制限しないでください。アクセス制御リストを活用して、ポータブルドライブでネイティブのジャーナリングLinuxファイルシステムを自由に使用してください。