NTFSパーティションで実行する必要があるスクリプトがあります。スクリプトの許可は600に設定されます。
chmod 755 script.sh
を実行してアクセス許可を変更しようとしましたが、失敗などは報告されませんが、ファイルのアクセス許可も変更されません。
$ stat script.sh
File: `script.sh'
Size: 297070 Blocks: 584 IO Block: 4096 regular file
Device: 811h/2065d Inode: 35515 Links: 1
Access: (0600/-rw-------) Uid: ( 1000/ xxxxxx) Gid: ( 1000/ xxxxxx)
Access: 2010-09-30 14:05:16.041621000 -0700
Modify: 2010-09-30 14:05:05.070157000 -0700
Change: 2010-09-30 14:05:05.070475000 -0700
$ chmod 755 script.sh
$ stat script.sh
File: `script.sh'
Size: 297070 Blocks: 584 IO Block: 4096 regular file
Device: 811h/2065d Inode: 35515 Links: 1
Access: (0600/-rw-------) Uid: ( 1000/ xxxxxx) Gid: ( 1000/ xxxxxx)
Access: 2010-09-30 14:05:16.041621000 -0700
Modify: 2010-09-30 14:05:05.070157000 -0700
Change: 2010-09-30 14:05:05.070475000 -0700
ご覧のとおり、変更されていません。
モードは、パーティションのマウントオプションによって決定されます(chmodで変更することはできません)。
ファイルの「755」とディレクトリの「777」には、次のようなものを使用します
Sudo mount -t ntfs -o rw,auto,user,fmask=0022,dmask=0000 /dev/whatever /mnt/whatever
ほとんどの人が信じていることに反して、NTFSはPOSIX互換¹ファイルシステムであり、NTFSで権限を使用することができます。
これを有効にするには、「ユーザーマッピングファイル」が必要です。または、マウント時にpermissions
オプションを指定するだけです(Windowsとの互換性が不要な場合)。これにより、システム上のLinuxユーザーがNTFS/WindowsなどのユーザーIDでマップされ、内部で使用されます。
情報と例については、 ntfs-3g manpage を参照してください。さらに情報が必要な場合は、 ntfs-3g所有権とアクセス許可に関する高度なドキュメント を参照してください。
(これはFATファイルシステムでは機能しないことに注意してください。)
¹はい、linux/unixでは有効だがWindowsでは有効ではないファイル名も保存でき、シンボリックリンクやハードリンクなどをサポートしています。
NTFSパーティションの場合、fstabでpermissions
オプションを使用します。
最初にntfsパーティションをアンマウントします。
blkid
でパーティションUUIDを識別します
Sudo blkid
次に/etc/fstab
を編集します
# Graphical
gksu gedit /etc/fstab
# Command line
Sudo -e /etc/fstab
そして、ntfsパーティションの行を追加または編集します
# change the "UUID" to your partition UUID
UUID=12102C02102CEB83 /media/windows ntfs-3g auto,users,permissions 0 0
マウントポイントを作成する(必要な場合)
Sudo mkdir /media/windows
パーティションをマウントします
mount /media/windows
auto
というオプションを指定すると、ブート時にパーティションが自動的にマウントされ、users
によりユーザーがマウントおよびアンマウントできます。
Ntfsパーティションでchownとchmodを使用できます。
上記のhtorqueの回答でfmaskやdmaskを設定することに加えて、ドライブでスクリプトを実行する場合は、「exec」マウントオプションも設定する必要がありました。
したがって、例は次のようになります。
Sudo mount -t ntfs -o rw,auto,user,fmask=0022,dmask=0000,exec /dev/whatever /mnt/whatever
スクリプトインタープリターをいつでも明示的に呼び出すことができます。この場合、実行権限は必要ありません。スクリプトがbashを使用する場合、スクリプトの最初の行を確認することで確認できるように、単に実行します
bash script.sh
スクリプトは同じパーティションの他のスクリプトまたはバイナリを呼び出すことに注意してください。これは機能しません。また、この戦略は、Bash Script、Perl、Pythonなどで記述されたテキストスクリプトファイルとは対照的に、バイナリでは機能しないことに注意してください。
NTFS-3Gのドキュメントの 所有権と権限 セクションによれば、マウントオプションを使用してファイルaccessおよびcreationを制御できます。組み合わせは非常に複雑です(2つの表を参照)。また、私はそれらのすべてを読んだり取得したりしません。たとえば、NTFS-3GバイナリパッケージのPOSIX ACLがコンパイル時に選択されているかどうかはわかりません。しかし、私が出てきた最高の方法は、WindowsとLinuxの間でファイルの所有権とアクセス許可のもっともらしいマッピングを近似するために、いくつかのマウントオプションと組み合わせて ser Mapping ファイルを使用することです。
警告:これは、NTFSを共有するのに最適な方法ですデータパーティション(Windowsではdrive D:
)デュアルブートWindows 8とKubuntu 14.04の間。指示は慎重に振り返って記録されていますが、完全にはテストされていません。すべての手順を再度繰り返すのは大変で退屈です。したがって、自己の責任においてそれに従ってください。しかし、そうするなら、あなたの経験を共有してください。指示に従うことに決めた場合は、実際に行動する前に全体像を把握するために全文をお読みください。幸運を!
よし、行くぞ!詳細な手順は3つの部分で構成されています。パート1はWindowsで、パート2はLinuxで実行する必要があります。パート3はテスト用です。
NTFS-3Gのドキュメントの ser Mapping セクションでは、2つのバージョンを指定して、WindowsとLinuxの間のユーザーマッピングを設定しています。1つのWindowsバージョンと1つのLinuxバージョンです。私の経験では、Linuxバージョンはmissで終わりました。 Linuxアカウントはnot Windowsアカウントにマップされていましたが、一部のnknownアカウントが SID の下に表示されていました。この未知のアカウントは、Windowsアカウントのすべてのファイルの所有権を取得するため、結果は混乱しました。その状況では、所有権を取り戻す管理者特権がない限り、Windowsアカウントのファイルにアクセスできなくなります。しかし、あなたが管理したとしても、それはstill間違ったマッピングです。つまり、後でLinuxで作成したファイルはすべてWindowsのその不明なアカウントに割り当てられ、WindowsのファイルはLinuxのルートに割り当てられます(正しく覚えている場合)。そのため、Windowsでは再度所有権を取り戻す必要があり、Linuxでは所有権を変更する必要があります。それは我々が期待するものではありません。問題を解決するための絶望的な試みを何度か行った後、私はあきらめてWindowsバージョンに切り替えました。それはうまくいきました。 NTFS-3Gドキュメントの関連セクションから抽出された詳細な手順は次のとおりです。
sermap ツールをダウンロードして、どこか(私の場合はC:
)に展開し、NTFSパーティションの外側(私の場合はD:
)で共有します。
Windowsコマンドラインを開きます。 tools
ツールの抽出されたディレクトリusermap
(デフォルト)に変更します。次に、次のコマンドを実行します。
C:\tools> mapuser > UserMapping
これにより、テンプレートが生成され、UserMapping
という名前のファイルにリダイレクトされます。メモ帳などのテキストエディターでファイルを開きます。次の行が表示されます。
# Generated by usermap for Windows, v 1.1.5
# For Windows account "Account" in domain "Domain"
# Replace "user" and "group" hereafter by matching Linux login
user::SID
:group:SID
おそらく、最初のSID
はユーザーSIDであり、2番目はグループSIDである必要があります。コマンドwhoami /user
およびwhoami /groups
でそれぞれ確認できます。
コメントの指示に従ってSIDが正しいことを確認した後、つまり、user::SID
行のuser
をユーザー名に、:group:SID
行のgroup
をLinuxのプライマリグループ名に変更します。 。 Ubuntuでは、それらは同じです。さらに、user::SID
行の最初のコロンの後にLinuxグループ名も追加します。そのため、行はuser:group:SID
のようになります。そうしないと、Windowsで作成されたファイルがLinuxのuser:root
に割り当てられるようです。
ファイルを保存します。共有するNTFSパーティション上の.NTFS-3G
(まだ存在しない場合は作成)という名前のディレクトリに移動します(私の場合、ドライブD:
)。
この手順は、パート3のテスト用です。共有NTFSパーティションで、新しいディレクトリと新しいファイルを作成します。
Linuxを起動します。 Sudo
ファイルを編集します/etc/fstab
。共有NTFSパーティションの行を次のように追加または変更します。
UUID=... /data ntfs defaults,umask=077,utf8 0 0
重要なのは、umask
を設定することです(dmask
およびfmask
も機能する可能性がありますが、テストされていません)。 077
を選択しましたが、好きなumask
の値を選択してください。この設定がないと、新しく作成されたファイルの完全な許可がo
thersに与えられるようです。
ファイルを保存します。共有NTFSパーティション(私の場合はSudo mount
)をSudo umount
または再マウント(Sudo mount
してから/data
)します:
$ Sudo mount /data
今(まだLinuxで)cd
をマウントポイント(私の場合は/data
)に、ls -l
そこのファイルに。それらの所有権と許可が、それぞれUserMapping
ファイルで指定したものと/etc/fstab
で設定したumask
と一致するかどうかを確認します(許可とumask
の一致には、補完計算が必要です man(1)umask を参照してください)= =詳細については)。もしそうなら、おめでとう、半分の目標が達成されます。そうでなければ、あなたは貧しい。 UbuntuまたはWindowsに尋ねます。
次に、新しいディレクトリと新しいファイルを作成します。 ls -l
で所有権と権限を確認します。所有権は、通常どおりユーザー名とプライマリグループにする必要があります。許可はumask
と一致する必要があります。コンピューターを再起動し、Windowsを起動します。 Linuxで作成したディレクトリとファイルを共有NTFSパーティションで見つけます。それらのプロパティをチェックして、Windowsアカウントに割り当てられているかどうかを確認します。おめでとうございます、すべて完了です。そうでなければ、不運。 WindowsまたはUbuntuに尋ねます。
古いスレッド、私は知っていますが、まだ関連性があり、さまざまな他のフォーラム/スレッドのさまざまな提案から構成され、Steamライブラリを保持する外部ドライブが必要なUbuntu GNOME 13.04でテストされた特定のユースケースのヒントがありません...
たとえば、NTFSパーティションが外部usbドライブ上にある場合(つまり、接続時にパーティションがオンザフライでマウントされることを意味します)、次の方法を使用して、udevに実行権限を持つntfsパーティションをマウントさせることができます。
ターミナルウィンドウを開き、次の操作を行います。
$ Sudo nano /etc/udev/rules.d/90-usb-disks.rules
次に、この行を空白/新しいファイルに貼り付けます(そうでない場合は、nanoを終了してコマンドを再発行しますが、91 -...のような大きい番号でファイル名を開始します):
ENV{ID_FS_TYPE}=="ntfs", ENV{ID_FS_TYPE}="ntfs-3g"
次に保存して閉じます。ドライブを取り外して、ターミナルで実行します。
$ Sudo service udev restart
次に、ドライブを再び接続して楽しんでください:)
すべての手順:
ntfs-3g
をインストールします:
Sudo apt-get install -y ntfs-3g
アンマウントNTFSパーティション:
Sudo umount /mnt/windows
ntfs-3g.usermap
を使用してUserMapping
ファイルを生成します。
Sudo ntfs-3g.usermap /dev/disk/by-label/MY-NTFS
または
Sudo ntfs-3g.usermap /dev/sdb1
NTFSパーティションを再マウントしてUserMapping
ファイルを追加します。
mount -a
Sudo mkdir /mnt/windows/.NTFS-3G
Sudo mv UserMapping /mnt/windows/.NTFS-3G/
fstab
ファイルを更新します。
Sudo vim /etc/fstab
更新mount行:
#
を先頭に追加してコメントします。UUID=34A0456DA04536A0 /mnt/windows ntfs defaults,uid=1000,gid=1000 0 0
UUID=34A0456DA04536A0 /mnt/windows ntfs-3g defaults 0 0
(ntfs-3g
とdefault
オプションのみを使用)次のようになります。
#UUID=34A0456DA04536A0 /mnt/windows ntfs defaults,uid=1000,gid=1000 0 0
UUID=34A0456DA04536A0 /mnt/windows ntfs-3g defaults 0 0
最後に、fstab
を使用して再マウントします。
Sudo umount /mnt/windows
Sudo mount -a
これをNTFSパーティションごとに1回実行してください!
Windows 7 +でチェックすると、アクセス許可がWindows OSに影響します! Windowsパーティションのホームディレクトリのアクセス許可を変更します。Windowsを再度使用すると、ユーザーが壊れていることがわかりました。
USBデバイスに関するnの質問があります。 この回答 は、実行権限ですべてのUSBデバイスを自動的にマウントする場合にいハックを提供します。
Linuxでは、NTFS(およびFAT32)のモードは、パーティションのマウントオプションによって決定されます。 chmodを使用して変更することはできません。
仮定:USBドライブはsdb1
、ドライブ文字に合わせて変更ケースのパーティション番号。一般的な構文はsdxn
です。ここでx
はドライブ文字、n
はSudo lsblk -f
などで見られるパーティション番号です。
準備中
NTFSパーティションをアンマウントします。
Sudo umount /dev/sdxn # general syntax
Sudo umount /dev/sdb1 # modify to match your case
次のように、カスタムマウントポイントを作成します(新しいマウントポイントが必要な場合のみ)。
Sudo mkdir -p /mnt/sd1
ユーザーIDのuid
番号を確認します(通常は1000、場合によっては1001または1002 ...)
grep ^"$USER" /etc/group
所有権を取得する場合はその番号を使用します(デフォルトはroot
です)。
NTFSパーティションをマウントする
例1(ファイルの実行権限なし、「その他」のアクセス権なし)、
Sudo mount -o rw,user,uid=1000,dmask=007,fmask=117 /dev/sdxn /mnt/sd1 # general syntax
Sudo mount -o rw,user,uid=1000,dmask=007,fmask=117 /dev/sdb1 /mnt/sd1 # modify to match your case
この場合、次のスクリプトでthis-script
を実行できます。
bash /mnt/sd1/this-script
例2(ファイルの実行権限あり、「その他」のアクセス権なし)、
Sudo mount -o rw,user,uid=1000,umask=007,exec /dev/sdxn /mnt/sd1 # general syntax
Sudo mount -o rw,user,uid=1000,umask=007,exec /dev/sdb1 /mnt/sd1 # modify to match your case
この場合、次のスクリプトでthis-script
を実行できます。
/mnt/sd1/this-script
また、この場所から実行可能プログラムも実行できます(推奨されるものではありません)。
例3(複数のユーザーがいる場合は便利ですが安全ではない、すべてのユーザーに対する完全なアクセス許可)、
Sudo mount -o rw,users,umask=000,exec /dev/sdxn /mnt/sd1 # general
Sudo mount -o rw,users,umask=000,exec /dev/sdb1 /mnt/sd1 # modify to match your case