
私はUbuntu 14.04を使用していますが、管理者アカウントとは別に、家族が使用して私の仕事を邪魔されないように別のアカウントを作成したいと考えていました。問題は、データを含むNTFSパーティションへのアクセス権を他のアカウントに付与できないことです。フォーラムで言及されているいくつかの解決策を試しましたが、何も機能しませんでした。マシンの再起動時に最初にログインしたユーザーがそのパーティションを占有し、ログアウトした後でも他のユーザーがアクセスできないようにするようです。私が見つけた唯一の有効な方法は、アンマウント現在のユーザーをログアウトする前にそのパーティションにログインしてください。そうすれば、次にログインするユーザーはマウントパーティションを作成してアクセスします。
私の質問は、これが異なるマシン ユーザー間のパーティション アクセスの仕組みなのか、つまり、別のユーザーが使用できるように、使用しているパーティションをアンマウントするのか、それとも、そのパーティションへのアクセスを適切に許可できなかったのかということです。
答え1
コンピュータがオンのときはいつでも、すべてのユーザーに対して常にこれが必要な場合、これを実現する最も簡単でおそらく最善の方法は、 でパーティションをマウントするためのマウント ポイントとルールを定義することです/etc/fstab
。これを行うと、パーティション/ドライブがマウントされたときに自動的にアクセス権を提供できます。
これははるかに高度な方法ですが、NTFS パーティションを持つデバイスが常にコンピューターに接続されている場合は、これにより、発生しているいくつかの問題が解消され、データに関するセキュリティ制御の提供が効果的に自動化され、毎回異なるオプションやユーザーで手動で再マウントすることなく、時間の経過とともに実際に制御を変更できるようになります。
この回答には他にもいくつかセクションがあります。
- 1 つ目は、私の NTFS
fstab
エントリの 1 つで、Ubuntu コンピューター上の Windows パーティション用です (コンピューターのユーザーは私だけです)。 - 2 番目のセクションでは、私の
fstab
エントリを取り上げ、マウント オプションについて説明します。 - 3 番目のセクションでは、パーティションへの「安全な」アクセス、起動時の自動マウント、およびケースに適したマウント オプションのセットを提供するための推奨手順を示します (マウントされたパーティション上のデータへのアクセスを許可されたユーザーを追加する「ユーザー グループ」の作成も含まれます。そのユーザー グループは、適用される特定のファイル権限と同様に、「アクセス制御」として機能します)。
/etc/fstab
セクション 3 で私の話を聞いていれば、セクション 4 で使用できる可能性のあるセリフが示されます。
(1)私のfstab
エントリー
残念ながら、私のラップトップにはそのような NTFS パーティションがあり、それを自分自身とシステム サービスが読み取り可能にする必要があります...
# Windows Partition - targetted for /media/win7
UUID=UUIDOFPARTITION /media/win7 ntfs-3g defaults,locale=en_US.utf8,windows_names,umask=7000,uid=1000,gid=1000,user 0 0
この行は何を意味しているのでしょうか? 先頭に がある最初の行#
はコメントです。2 行目はより重要な部分で、実際のfstab
エントリです。
- 私はパーティションを UUID で識別します。UUID はパーティションを識別する文字列です。任意のパーティションの UUID を取得するには、
sudo blkid /dev/sda1
(/dev/sda1
パーティションの実際の ID に置き換えます。つまり、パーティションが 2 番目のディスク上にあり、2 番目のディスクのパーティション テーブルの 3 番目のパーティションである場合は、このコマンドに が含まれる可能性があります。エントリの行/dev/sdb3
を囲む引用符は削除します。)UUID=
fstab
- 起動時にマウントします
/media/win7
。 - これは NTFS パーティションなので、NTFS であることを認識できるようにオプション
fstab
を渡します。ntfs-3g
- デフォルトのマウント オプションとその他のオプションを指定します (これらについては後で説明します)。
- 5 番目のフィールドは、ファイルシステムをダンプする必要があるかどうかを決定しますが、これは必要ないため、 を渡しました
0
。 - 6 番目のフィールドは、起動時にファイルシステムのチェック順序を決定するために fsck によって使用されますが、そのためには必要ないため、 を渡します
0
。
(2)マウントオプション
かなりの数のマウント オプションを渡します。
defaults
- デフォルトのマウント オプションを渡します (rw
- 読み取り/書き込み、suid
- set-user-identifier または set-group-identifier ビットを有効にする、dev
- ファイルシステム上の文字またはブロック特殊デバイスを解釈する、exec
- バイナリの実行を許可する、 -のオプションauto
を使用してマウントを許可する、- ユーザーによるマウントを禁止する (後で上書きされる)、- ファイルシステムとの非同期 I/O を許可する。)-a
mount
nouser
async
locale=en_US.utf8
- UTF8で米国英語ロケールを強制しますwindows_names
- パーティション内の新しいファイルに対して Windows の名前制限が適用されるようにします。umask=7000
- 基本的にはchmodの逆です。権限を定義するないファイルに許可されている。基本的に、ここでは読み取り/書き込み/実行を禁止していないので、マウントされた場所にあるすべてのファイルは、実質的に読み取り、書き込み、および実行の権限を取得します。特別なビット (setuid、setgid、sticky) は設定したくないので、最初のオクテットからそれらを削除する必要があります。これらの数値の合計は '7' であり、これらの権限を禁止しているので、先頭に 7 を付けます。uid=1000
、gid=1000
- パーティションを、UID (ユーザー ID) と GID (グループ ID) のユーザーとグループの所有権でそのフォルダーにマウントします(これは、Ubuntu システム上の1000
私のユーザーのユーザーとグループ です)。teward
user
- ユーザーがディレクトリをマウントまたはアンマウントできるようにします。nouser
のオプションを上書きしますdefaults
。
(3)安全な方法であなたのためのソリューション
ただし、ユーザーはシステムではなくデータにアクセスするため、使用ケースに合わせてマウント オプションをこれらのオプションに簡略化できる可能性があります。ただし、これを安全な方法で実行しましょう。ここで、読み取り/書き込み/実行権限を付与するユーザー グループを作成しましょう。
addgroup ntfs-users
- これにより、「ntfs-users」というユーザー グループが作成されます。
id -g ntfs-users
- これにより、「ntfs-users」の数値グループ ID が提供されます。これはgid=
マウント オプションに必要です。
usermod -a -G ntfs-users USERNAME
-先ほど作成したグループUSERNAME
にユーザーを追加します。ntfs-users
これで、次のマウント オプションの文字列を利用できるようになります。
rw,exec,async,auto,user,locale=en_US.utf8,windows_names,umask=7007,gid=654
これが実行するのは、fstab 内の文字列では実行されないことです。
- 使用したいオプションを選択して
defaults
- 所有者のユーザーを任意に指定します
uid
(通常はブートマウント時の root) - ユーザーにマウント/アンマウントを許可しない
- マウントポイントの「グループ」所有権(および内部のデータへのアクセス)を、上で作成した
654
仮想グループIDであるグループIDに設定します。ntfs-users
- 「その他すべてのユーザー」セット (つまり、所有者ユーザーおよびグループ内の他のユーザーではないユーザー
ntfs-users
) には、データへのアクセスを一切許可しません。
データを所有したい場合、つまり ではなく所有者ユーザーになりたい場合はroot
、 オプションを再度追加しますuid=
。 を使用しid -u YOURUSERNAME
、 をYOURUSERNAME
ユーザー名に置き換えて、uid
そのオプションで使用するユーザー ID ( ) を取得します。
(4)/etc/fstab
セクション3で私の話を聞いたと仮定して、あなたのユースケースの可能なエントリ
パーティションの UUID を取得すると、次の/etc/fstab
行のようになります。
UUID=0123456789ABCDEF /mnt ntfs-3g rw,exec,async,auto,user,locale=en_US.utf8,windows_names,umask=7007,gid=654 0 0
の値を、UUID=
パーティションのUUIDに置き換えます。欲しいをマウントするには、 をシステムのマウント ポイントに置き換え、マウント オプション/mnt
の の値を作成したグループのグループ ID に置き換えます。 ではなく ユーザーを所有者にしたい場合は、のオプションを追加して、ユーザーに を指定します。その方法は、前に説明したとおりです。gid=
ntfs-users
root
uid=
uid