- ベストアンサー
マウントしたUSBメモリに書き込みができない
USBメモリをマウントしましたが、そこに書き込むことができません。 OS:Debian Lenny USBメモリのファイルフォーマット:NTFS 1, /mnt/usbmemディレクトリをアクセス権777で作成する 2, USBメモリをUSBスロットに差し込む 3, GNOMEの「システム」→「コンピュータ」にUSB Flash Diskのアイコンが表示される 4, 「アイコン右クリック」→「プロパティ」で、DriveタブとVolumeタブのマウント・ポイントをusbmemに、ファイルシステムをntfsに設定 5, 「アイコン右クリック」→「ボリュームのマウント」でマウント 6, 素の中身のファイルは表示されるが、そこに新しいファイルやフォルダを作成することができない 7, 「アイコン右クリック」→「プロパティ」→「アクセス権」タブにてアクセス権が読み込み専用となっていたので、変更しようとしたが、「アクセス権を変更できませんでした。」となる。 試行錯誤: マウントをしている時のみ、/mediaディレクトリにusbmemというフォルダが作成されており、そのアクセス権は555です。このアクセス権を777にすると、 シェル上では「許可されていない操作です」と、変わらずなります。 GNOME上では、右クリックでフォルダの作成メニューがでますが、作成しようとすると「転送先への書き込み権限がありません。」となってしまいます。 NTFSにはlinuxのアクセス権設定が存在しない事が原因かもしれないと考えていますが、何をどうすれば書き込みができるようになるのか分かりません。 というわけでどうか教えてください。
- みんなの回答 (15)
- 専門家の回答
質問者が選んだベストアンサー
まず、環境がどうなっているのかが不明です。 勝手に想像して確定項目を書きます。 間違っていたら、補足されたし。 1.Debian n.nをHDDのパーティションにインストールして、使用している。 2.USBメモリにNTFSフォマットして、そこに、読み書きしたい。 3.そこでこのマウントコマンドがよく分からないので質問をしている。 ここで、補足して貰う必要があること。 1./etc/fstabのUSBメモリの状態を補足すること。 2.fdisk -lで、USBメモリの物理アドレス(/dev/sdb1等)は何か。 3.NTFSフォマットしなければならない理由。 FAT32フォマットの方が、WINDOWSと、LINUXのデータのやり取りで、 便利がよく、NTFSフォマットでは、特殊なmountコマンドを使用する ため。 [ヒント] mount -t ntfs-3g /dev/sdb2 /media/sdb2 -o remove_hiberfile man mountの説明を読むこと。 どうしてもntfを読み書きの必要がある場合、 man mountを読んでも不明である場合は、不明店を記載すること。 全てを説明する時間も根気もないため。
その他の回答 (14)
- yakan9
- ベストアンサー率54% (2244/4125)
> 長い間お付き合い下さり、どうもありがとうございました いえいえ、こちらこそ、勘違いで間違ったことを書いたり、 検証もしないで、UBUNTUができるから、大元のDebianも同じ仕様と 思い込み、-o remove_hiberfileのことも間違ったことを 書いてしまいました。 ここまで書くつもりは、なかったのですが、ここが分からないと具体的に書かれると、それはこうですよ、とついつい書いてしまいました。 うまく技術的なことを聞き出すのがうまいので、ついつい書き過ぎた感がします。 でわでわ。
- yakan9
- ベストアンサー率54% (2244/4125)
> 余談ですが、debianのGNOME上からハイバーネートしても電源が落ちてくれない状態なので、 > ハイバーネート用のswapが無いと こちらの環境は、Debian5.0 swapパーティション1GB、メモリ768MB で、前回書いた通りの設定で電源ボタンでも、システム→シャットダウン→ハイバネートでも正しく休止状態に入ります。
お礼
時間が掛かってお返事送れました。 linuxでハイバーネートできないという問題は、直接には-o remove_hiberfileとは関係なかったのですが、こちらも解決しました。 原因としては、「OSインストール時にswapを作成していなかったため、後からswapを作成しても、ハイバーネーション時にそのswapを使用していなかったから」、でした。 dpkg-reconfigure uswsusp とした後、適当に設定した後に解決しました。多分、ハイバーネーション時に使用するメモリサイズの設定を行った事が影響したのだと思います。 (私の遭遇した症状は、swapパーティションをswapoffしてからハイバーネートすると再現できます) で、-o remove_hiberfileのほうは、あいかわらずだめです。 fstabに定義しているのではなく、 yakan9さんの#9の回答にあった mount -t ntfs-3g -o remove_hiberfile /dev/hda1 /media/hda1 の書き方で、 mount -t ntfs-3g -o remove_hiberfile /dev/sda1 /mnt/vista としていました。 あいかわらずだめではあるのですが、man ntfs-3gで、remove_hiberfileの記述を見つけました。 「Use this option for your own responsibility.」という言葉が怖かったので、今後実際にこのオプションは使わないでいこうと思います。(つまりremove_hiberfileは成功しなくてもいい=解決?) remove_hiberfileオプションは、mountのものではなく、ntfs-3gの仕様のオプションだったということですね。 これで、当初の疑問であった、マウントしたntfsへの読み書きだけでなく、fstabの書き方、mountの-tオプションに指定できるもの、remove_hiberfileオプションはntfs-3gのものであるということを勉強できました。 それだけでなく、ハイバーネートが成功しないのを、さらりと見ぬふりをしていたのも解決できました。 yakan9さん、長い間お付き合い下さり、どうもありがとうございました。
補足
余談としたのは、こちらで調べれば解決しそうだけど、お返事遅れちゃうなぁという感じが強かったのですが、なかなか時間がかかりそうです・・。 こちらは Debian 5.0.1 swapパーティションなし・・これが原因ぽ メモリ4GB 4GBあるからswapなくていーやと思ってました です。 (ぐは、yakan9さんのように環境を書いてはじめて原因に気づきました) swapつくってから試してみます
- yakan9
- ベストアンサー率54% (2244/4125)
> しかし、-o remove_hiberfileでマウントしようとしてもマウントできませんでした。 > Mount is defined because NTFS is marked to be in use. いろんなことが想定されます。 1.どんなマウントコマンドを入力したか. 2./etc/fstabに、Windowsパーティションのエントリ定義をしたか、 また、そのエントリ定義は、正しいか。 [ヒント] /dev/hda1 /media/hda1 ntfs defaults 0 0 3./mediaに、hda1エントリを定義したか. [ヒント] cd /media ls -al mkdir hda1 ls -al なお、2.→ 3.→ 1.という作業手順は一連のものです。 > 余談ですが、debianのGNOME上からハイバーネートしても電源が落ちてくれない状態なので、 Debian5.0では、ハイバーネートはできます。 システム → 設定 → 電源管理 → 全般 電源ボタンを押したら ハイバーネートにする を選択するだけだと思います。
- yakan9
- ベストアンサー率54% (2244/4125)
いま、Debian5.0で、検証しましたが、Debianは、休止状態の 検出をしていませんね。 mount /media/hda1 で、休止状態であってもノーチェックです。 Fedoraや、KNOPPIX、UBUNTUでは、休止状態の検出をしています。 Debianには、-o remove_hiberfileのオプションはないかもしれません。 どんな状態でも、読み書きしてしまうという怖さがある仕様のようです。 またまた、間違ったことを書いてしまいましたね。
- yakan9
- ベストアンサー率54% (2244/4125)
> 1, Windowsを休止状態にする > 2, 再び電源スイッチを入れる > 3, 有無をいわさずWindowsが再開される > となって、linuxが起動できないので、確認のしようがない > ような気がするんですけど どういう環境かは不明ですが、GRUBのデュアルブートであれば、 休止状態にすれば、電源は落ちます。 また電源を入れると、GRUBのOS選択画面で、Debianへいくだけなんですが。 何か勘違いしていませんか。 それとも、特殊なデュアルブート方式でしょうか。
補足
GRUBを使用したデュアルブートにしたのが最近でしたので、知りませんでした。 で、Windowsから休止状態にして、電源を入れ直すと、GRUBが立ち上がったのでdebianをブートすることができました。 しかし、-o remove_hiberfileでマウントしようとしてもマウントできませんでした。 Mount is defined because NTFS is marked to be in use. 余談ですが、debianのGNOME上からハイバーネートしても電源が落ちてくれない状態なので、CUIからならどうかとaptitude install hibernateしたろころ、ハイバーネート用のswapが無いと怒られたりしたので、設定のしかたを少し調べているところです・・
- yakan9
- ベストアンサー率54% (2244/4125)
> man mountの-tオプションに対して指定できるとされている > タイプ + インストールしたファイルシステムドライバ > という認識でOKでしょうか? そのとおりです。 回答番号:No.9の補足になりますが、 エラーメッセージは、「シャットダウンして、使ってください、 そうでなければ、こんなオプションをつけること」 といったメッセージです。 この、-o remove_hiberfileオプションをつけて、検証した後、 C:\直下を見ると、hiberfile.sysが削除されていると思います。 どうも安易に削除して、休止状態を解除しているといった感じです。 まぁ、Windowsの仕様まで、知ったことかといった感じです。 老婆心ながら、検証した後、Windowsのチェックディスクをかけておくと安全です。 理由は、各プログラムの終了処理をしていないため、一時ファイル等のシステム返還とかがなされていないためです。
お礼
> 老婆心ながら、検証した後、Windowsのチェックディスクをかけておくと安全です。 > 理由は、各プログラムの終了処理をしていないため、一時ファイル等のシステム返還とかがなされていないためです。 おほ、そういえば今まで事故やバグで強制終了した後にチェックディスクとかしてなかったです。。習慣にしようと思います。(すごい当初の質問からずれてしまいましたが)
- yakan9
- ベストアンサー率54% (2244/4125)
> 本当にremove_hiberfileをサポートしているかどうかの確証が得られ> ません。公式な仕様に書いてあれば信じることができますが。。 確証は簡単でしょう。 Windowsを休止状態にして終了させておいて、Debianを起動し、 Windowsのパーティションをマウントしてみれば、 mount -t ntfs-3g -o remove_hiberfile /dev/hda1 /media/hda1 と、エラーメッセージに続いて、指示されますよ。 これをやったあと、Windowsを起動したとき、休止状態が解除され、 通常起動というより、「ようこそ」画面から開始されますよ。
補足
1, Windowsを休止状態にする 2, 再び電源スイッチを入れる 3, 有無をいわさずWindowsが再開される となって、linuxが起動できないので、確認のしようがないような気がするんですけど、いったいどうすれば「Windowsを休止状態にして終了させておいて、Debianを起動」ができるのでしょうか。 ひょっとして、次のようなことをしなければいけませんか? 1, ハードディスクAにWindowsを、ハードディスクBにdebianをインストール 2, ハードディスクAをプライマリとして接続し、Windowsを起動 3, Windowsを休止 4, ハードディスクBをプライマリとして接続しなおし、debianを起動 5, linuxからハードディスクAに対してremove_hiberfileの確認 で、もしかして、公式な仕様に書かれてないとかですか? ググっても公式っぽいところでヒットしないんですけれど。 ごめんなさい、現在remove_hiberfileが必要なわけではないのですが、その調べ方を知りたいなと・・。(manを読めば質問しなくてもいい内容があるように、remove_hiberfileについての調べ方がわかれば、もっと多くのことを質問しなくても自己解決できるようになるかもしれないから。)
- yakan9
- ベストアンサー率54% (2244/4125)
前回の解答は間違っていたかもしれません。 > > -o remove_hiberfileの説明も、manpageに載っていなかったの > > ですが・・、どういう意味になりますか? これは、WindowsパーティションのNTFSフォマットのアクセスで、 Windowsが、休止状態の場合は、強制的に休止状態を解除し、 データの読み込みと書き込みができる状態にして、Windowsの バックアップができるようにするためのオプションでした。 いろいろなことが、混ざり合っていて間違えました。 また、debianは、既定値では、ntfs-3gはインストールされていないと思います。 apt-get install ntfs-3g が必要かもしれません。 よって、 mount -t ntfs-3g /media/sdb1 ですね。
お礼
おお、計4回も回答頂いてます。感謝。 休止状態のwindowsのボリュームにマウントする時は -o remove_hiberfile 不正終了したwindowsのボリュームにマウントする時は -o force というようなことが掲示板などに書いてありました。 ちなみに、 -o non_existing_option のように、存在しないオプションを指定してもエラーとならなかったので、本当にremove_hiberfileをサポートしているかどうかの確証が得られません。公式な仕様に書いてあれば信じることができますが。。
- yakan9
- ベストアンサー率54% (2244/4125)
> この場合、ntfs-3gは、 > 1 ntfs-3gコマンドのことを意味する? > 2 ntfs-3gというファイルシステムを認識している? > のどちらなのでしょうか。(manpageに載っていませんよね?) ntfs-3gという、vfatのtypeをしています。 man mount その他、「ntfs-3g」というキーで、web検索してください。 > -o remove_hiberfileの説明も、manpageに載っていなかったの > ですが・・、どういう意味になりますか? hiberfileという言葉は、windowsでも使います。 hibernate「冬眠する」ということで、コンピュータ用語としては、 「休止」ということに置き換えています。 よって、「移動のときは、休止ファイルを利用してもよい」 というオプションだと思います。 これは、マウントコマンドを間違って指定したりすると、 「こういうオプションがあるから、使用してみろ」 と出てきます。 何でも失敗すると知識は増えていくものです。
お礼
> ntfs-3gという、vfatのtypeをしています。 > man mount > その他、「ntfs-3g」というキーで、web検索してください。 -tオプションの値(vfstype)に指定できるタイプは、 man mountの-tオプションに対して指定できるとされているタイプ + インストールしたファイルシステムドライバ という認識でOKでしょうか?
No.3の補足です。(回答ではありません) そもそも、Debian Lennyでそんなに難儀することなのでしょうかね。 puppyでさえも(puppyだから、とも言えるかも)No.3の方法でntfsの読み書きが出来ています。 新規作成、コピー、削除なども自在です。(fat32やext3などと何ら変わりはありません) もちろん、GUI操作でもファイル操作できています。 fedora11beta、およびpreviewでもntfsの読み書きが出来ています。
補足
ちょっと調べて思った事は、FedoraもPuppyも、比較的開発スピードが早いディストリビューションのようですね。(debianの、どこにも属さないというポリシーが好きで使ってますが。) ブログ記事で、「ntfs標準で対応になってるじゃん!?」みたいな内容のものもちらほらあったので、ひょっとするとdebianよりも進んでるせいでただ単にmountしただけで可能なのかもしれませんね。 manpageには、「blkidライブラリとともにコンパイルされている場合、このライブラリによって推測を行う。」とありますし、奥が深そうな話です。
- 1
- 2
補足
すでにvaiduryaさんの回答で、当初の目的は達成できましたが、yakan9さんの回答の、ヒントで書かれている例が若干理解できませんでした。 しかし、より掘り下げて下さっていて、大変ありがたいです。 > 1./etc/fstabのUSBメモリの状態を補足すること。 fstabには記入しておらず、現在手動で行っています。 が、これから頻繁にマウントする時には、yakan9さんの#6のfstabの書き方も参考にさせて頂きます。(実際にはman fstabも見ますが。) > 2.fdisk -lで、USBメモリの物理アドレス(/dev/sdb1等)は何か。 USBメモリのデバイスは/dev/sdb1です。 もうすでにvaiduryaさんへのお礼で、実際行った手順にも書いてしまいましたが。。 > 3.NTFSフォマットしなければならない理由。 ・Windowsとデータをやりとりしたいことと、Windowsで普通に作成されたUSBメモリデータを少ない手順(マウント操作)で行いたい。(今回の試みのUSBメモリがNTFSであったため、これからもNTFSメモリの読み書きが多い事が予想される) ・Windowsがインストールされているパーティションを読み書きしたい(ntfscloneを使ってバックアップとってからやってみるつもりです)。 > [ヒント] > mount -t ntfs-3g /dev/sdb2 /media/sdb2 -o remove_hiberfile おお、-tオプションには、ntfs-3gなるものを指定できたんですか。 この場合、ntfs-3gは、 1 ntfs-3gコマンドのことを意味する? 2 ntfs-3gというファイルシステムを認識している? のどちらなのでしょうか。(manpageに載っていませんよね?) -o remove_hiberfileの説明も、manpageに載っていなかったのですが・・、どういう意味になりますか?