Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

USB接続のHDDなどのパーミッションが変更できない

3,352 views
Skip to first unread message

Adachi Junichi

unread,
Mar 18, 2010, 4:25:19 AM3/18/10
to
安達です。
ファイルマネージャNautilusで
拡張子が.txtであるテキストファイルをダブルクリックすると
エディタで開かれ、
拡張子が.htmlであるファイルをダブルクリックすると
ブラウザで開かれます。
ところが
USB接続のフラッシュメモリやハードディスク上のファイルでは
次のようなダイアログがでます。
-------------------------------------------------------
<?> "abc.txt" を実行しますか? それ
  とも内容を表示しますか?
  "abc.txt" は実行可能なテキストファイルです。
[端末内で実行する] [表示する] [キャンセル] [実行する]
-------------------------------------------------------
USB接続のフラッシュメモリやハードディスクが
vfatでマウントされていて、実行フラグが立っているからである
ことは理解できるのですが、

ファイルアイコンを右クリックしてプロパティを選択し
アクセス権のタブで「プログラムとして実行できる」の
チェックを外そうとしても戻ってしまいますし、
端末エミュレータから chmod -x abc.txt と命令しても
変化がありません。
ユーザー側でパーミッションをコントロールできないものでしょうか。

$ mount
/dev/sdb1 on /media/HD-PHGU2 type vfat
(rw,nosuid,nodev,uhelper=devkit,uid=1000,gid=1000,shortname=mixed,dmask=0077,utf8=1,flush)
/dev/sdc1 on /media/iou500 type vfat
(rw,nosuid,nodev,uhelper=devkit,uid=1000,gid=1000,shortname=mixed,dmask=0077,utf8=1,flush)
/dev/sdd on /media/PINK2G type vfat
(rw,nosuid,nodev,uhelper=devkit,uid=1000,gid=1000,shortname=mixed,dmask=0077,utf8=1,flush)

マウントのオプションについてはまったく触っていません。
自動でマウントされると認識しています。
$ cat /etc/passwd|grep 1000
adachi:x:1000:1000:adachi,,,:/home/adachi:/bin/bash
複数ユーザーがログインしている時にリムーバブルディスクは
誰のものかという問題も認識していますが、今回は1人のみの
ログインです。

$ ls -l /media/HD-PHGU2
-rwxr-xr-x 1 adachi adachi 261 2009-12-09 03:17 abc.txt
-rwxr-xr-x 1 adachi adachi 1212 2009-12-09 02:45 W2600v.html
drwx------ 2 adachi adachi 32768 2010-03-08 15:15 WUTemp
drwx------ 15 adachi adachi 32768 2010-02-22 16:53 aaa
drwx------ 2 adachi adachi 32768 2009-09-28 06:13 aab
....

操作しているユーザーはadachiですが、rootでも変更できません。

システムはSqueeze
Linux amos 2.6.32-trunk-amd64
Nautilus 2.28.4
です。

--
安達 順一
ada...@seiai.ed.jp
http://seiai.ed.jp

長南洋一

unread,
Mar 18, 2010, 7:21:40 AM3/18/10
to
長南です。

安達さんのメールより [debian-users:53925]


>
> USB接続のフラッシュメモリやハードディスクが
> vfatでマウントされていて、実行フラグが立っているからである
> ことは理解できるのですが、
>
> ファイルアイコンを右クリックしてプロパティを選択し
> アクセス権のタブで「プログラムとして実行できる」の
> チェックを外そうとしても戻ってしまいますし、
> 端末エミュレータから chmod -x abc.txt と命令しても
> 変化がありません。
> ユーザー側でパーミッションをコントロールできないものでしょうか。

vfat のファイルシステムは、マウント時にしかパーミッションを
変更できないのではなかったか。違いましたっけ。

当方は lenny ですが、こんなふうにしたら、vfat のフロッピーを
パーミッション -rw-r--r-- でマウントできました。ご参考まで。

# mount -t vfat -o umask=133 /dev/fd0 /media/floppy
# ls -l /media/floppy/*
-rw-r--r-- 1 root root 104 1999-02-18 00:02 /media/floppy/memo.txt
-rw-r--r-- 1 root root 557536 1999-02-17 23:53 /media/floppy/mytools.lzh

--
長南洋一

nabe...@caldron.jp

unread,
Mar 18, 2010, 10:08:20 AM3/18/10
to
鍋太郎です。

On Thu, 18 Mar 2010 20:21:40 +0900
長南洋一 <cyo...@maple.ocn.ne.jp> wrote:

> > USB接続のフラッシュメモリやハードディスクが
> > vfatでマウントされていて、実行フラグが立っているからである
> > ことは理解できるのですが、

> > ユーザー側でパーミッションをコントロールできないものでしょうか。
>
> vfat のファイルシステムは、マウント時にしかパーミッションを
> 変更できないのではなかったか。違いましたっけ。

マウント時にしか変更できないというか、
ファイルシステムにパーミッションを保持する仕組みがないから、
マウントオプションで指定するしかないのだと思います。

見たところ、dmaskが設定されているので、fmaskを適切に設定してあげればいいのではないでしょうか。

問題はどこに設定するかですが……
古典的な方法は /etc/fstab なんですが、デバイスが変わるたびに書き換えることになってしまいます。
もしgnomeをお使いであれば、man gnome-mount にあるとおり、gconf-editorで設定できると思います。

--
+--------------------------------------------------------+
倉澤 望(鍋太郎)
KURASAWA Nozomu (nabetaro) <nabetaro @ caldron.jp>
GnuPG FingerPrint:
C4E5 7063 FD75 02EB E71D 559B ECF6 B9D2 8147 ADFB
+--------------------------------------------------------+

Adachi Junichi

unread,
Mar 18, 2010, 11:08:38 AM3/18/10
to
長南洋一 さん、こんにちは
安達です。

> vfat のファイルシステムは、マウント時にしかパーミッションを
> 変更できないのではなかったか。違いましたっけ。
>
smbでマウントするシステムでは変更できていた
といいかけて
これは元のファイルシステムはext3なので同じではないですね。

> 当方は lenny ですが、こんなふうにしたら、vfat のフロッピーを
> パーミッション -rw-r--r-- でマウントできました。ご参考まで。
>
> # mount -t vfat -o umask=133 /dev/fd0 /media/floppy
> # ls -l /media/floppy/*
> -rw-r--r-- 1 root root 104 1999-02-18 00:02 /media/floppy/memo.txt
> -rw-r--r-- 1 root root 557536 1999-02-17 23:53 /media/floppy/mytools.lzh
>

フロッピーは最近使わないのでよく分かっていませんが
いまのDebianのGUIのデフォルトではUSBメモリは自動でマウントされます。
手動でマウントするよりも「実行しますか」のダイアログに答える方が
楽です。
加えて上記の様にrootでマウントすると一般ユーザーでは書き込み
できないのではないでしょうか。

Adachi Junichi

unread,
Mar 18, 2010, 12:26:14 PM3/18/10
to
安達です
> マウント時にしか変更できないというか、
> ファイルシステムにパーミッションを保持する仕組みがないから、
> マウントオプションで指定するしかないのだと思います。
「保持する仕組みがない」というところから考えてみました。
DOSにもアトリビュートという部分に
リードオンリーというフラグがありました
所有者、グループの概念はないのですが、
普通のファイルが755だったら555にはできるはずです。
そう思ってやってみましたら出来ました。
chmod 500 abc.txt
では 755のまま(-rwxr-xr-x)ですが、
chmod 555 abc.txt
なら 555(-r-xr-xr-x)になります。
でも
chmod 455 abc.txt
chmod 444 abc.txt
ともに実行フラグを変化させることはできませんでした。

変化させる場合vfatのどこかに記録する必要があるわけで
対応するフラグがなければ
どのファイルも統一してonのままかoffのままにするしかないことになります。
もし、たくさんのシェルスクリプトを保存した場合
実行フラグがクリアされていれば不便です。
これに比べて実行フラグが必要がないのに立っているのは被害が少ない
ということになるでしょうか。

>
> 見たところ、dmaskが設定されているので、fmaskを適切に設定してあげればいいのではないでしょうか。
>
> 問題はどこに設定するかですが……
> 古典的な方法は /etc/fstab なんですが、デバイスが変わるたびに書き換えることになってしまいます。
> もしgnomeをお使いであれば、man gnome-mount にあるとおり、gconf-editorで設定できると思います。
>

ここは別件で議論したことがあるのですが、
/system/storage/default_options/vfat/mount_options
の値は[shortname=winnt,uid=]になっています。
でもマウントは
shortname=mixed
で行われます。
dmask=0077もどこで設定しているのか不明ですし、
ここの値は無視されるのかなと思っていました。

Lewske Wada

unread,
Mar 18, 2010, 12:51:53 PM3/18/10
to
長南洋一 さんは書きました:
>> USB接続のフラッシュメモリやハードディスクが
>> vfatでマウントされていて、

>> アクセス権のタブで「プログラムとして実行できる」の
>> チェックを外そうとしても戻ってしまいますし、
>> 端末エミュレータから chmod -x abc.txt と命令しても
>> 変化がありません。
>>
>
> 当方は lenny ですが、こんなふうにしたら、vfat のフロッピーを
> パーミッション -rw-r--r-- でマウントできました。ご参考まで。
>
> # mount -t vfat -o umask=133 /dev/fd0 /media/floppy

ハードディスクは SATA しか使わないので知りませんが,

私も USB メモリは普通にマウントできて

ルートで読み書き可能だった気がします.


で VFAT ですが, リードオンリーのアトリビュートはあっても,

実行可能なんてなかったんじゃない?

アーカイブとかヒドゥンとかシステムとかだよ, 確か.

Ryu


Adachi Junichi

unread,
Mar 27, 2010, 8:14:54 AM3/27/10
to
安達です。
Lewske Wada さんは書きました:

>
> で VFAT ですが, リードオンリーのアトリビュートはあっても,
>
> 実行可能なんてなかったんじゃない?
>
> アーカイブとかヒドゥンとかシステムとかだよ, 確か.

sambaには
map archive
というパラメータがあって、
アーカイブというアトリビュートを
実行フラグとして使うかどうかをコントロールできます。
この他にもhidden, system といったLinuxでは使わない
アトリビュートをLinuxのパーミッションにマップする
ことが出きるようになっています。
smb.conf に記入します。
でもローカルなファイルシステムのvfatマウントでは
別のところに設定があるようなのですが、
その場所がわからないでいます。

Takeshi Kusune

unread,
Mar 27, 2010, 5:27:32 PM3/27/10
to
楠根です。

(2010/03/27 21:14), Adachi Junichi さんは書きました:
> sambaには
> map archive
> というパラメータがあって、

ありますが、これは、
FAT 系 filesystem に存在する属性情報を UNIX 系 filesystem の属性フラグに保存する
という機能ですね。

安達さんが要求している機能はこれとは逆の、
UNIX 系 filesystem に存在する属性情報を FAT 系 filesystem の属性フラグに保存する
という動作ではないでしょうか?

また、前者は Linux 等で(Samba を用いて)「提供する」サーバ側機能の設定であって、
自ホスト上で利用するための動作ではありませんよね。
もちろん自ホスト上の Samba へ SMB を使って接続することは可能ですが、
上記の設定を用いてできることは FAT 系属性の操作であり、実行属性は関係ありませんね。

> でもローカルなファイルシステムのvfatマウントでは
> 別のところに設定があるようなのですが、
> その場所がわからないでいます。

「別のところに設定がある」という情報がどこかから得られたのですか?
私は聞いたことがないです。比較的簡単に実装できそうなのであり得る話ではありますが。

また、map archive の機能とご所望の機能は前述の通りそもそも逆の動作なので、
「Samba では smb.conf で設定するがローカルなファイルシステムのvfatマウントでは云々」
という話ではないように思います。もう一度よく考えて下さい。

ちなみに、FAT 系 filesystem の mount では showexec という option が利用できます。
ファイル名により実行属性を決定する動作となりますが、
恐らく変換規則はご希望の動作要件を満たすものではないように思います。


他 OS でどう見えるか等気にしないのであれば、
vfat でなく ext3 等で format すればよいと思います。
他 OS で全く読めないのが困るのであれば、umsdos という手もありますね。
LFN の扱いは VFAT と互換性はないのでファイル名はかわってしまいますが。
# VFAT 実装時に、umsdos と統合すればいいのに…と思った記憶があります。
--
Takeshi Kusune <kus...@sfc.wide.ad.jp>

Adachi Junichi

unread,
Mar 28, 2010, 4:49:37 AM3/28/10
to
安達です。

楠根さん ありがとうございます。

> 「別のところに設定がある」という情報がどこかから得られたのですか?
> 私は聞いたことがないです。比較的簡単に実装できそうなのであり得る話ではありますが。
Gnomeメニューの
アプリケーション-システム-設定エディタ
のキーで
/system/storage/default_options/vfat/mount_options
というのがあります。
現在私のシステムでは[shortname=winnt,uid=]
となっています。
しかし、
実際のマウントでは


/dev/sdb1 on /media/HD-PHGU2 type vfat
(rw,nosuid,nodev,uhelper=devkit,uid=1000,gid=1000,shortname=mixed,dmask=0077,utf8=1,flush)

となっています。
shortnameでは無視されていますね

よくは知らないのですが、halとかudevとかの設定で
できるかもしれないと勝手に考えています。

> また、map archive の機能とご所望の機能は前述の通りそもそも逆の動作なので、
> 「Samba では smb.conf で設定するがローカルなファイルシステムのvfatマウントでは云々」
> という話ではないように思います。もう一度よく考えて下さい。

sambaがサーバー側であることは存じておりますが
クライアント側のsmbclientもsambaの一部です。
mount側で独自に実装している可能性もありますが、
smbclientを利用している可能性もあります。
マッピングの方向の違いも分かりましたが、
逆にはマッピングはできないという所までは理解できていません。

> 他 OS でどう見えるか等気にしないのであれば、
> vfat でなく ext3 等で format すればよいと思います。

まわりの環境がWindowsなので先のことになりますが
ext3ではuid,gidを統一しなければならないのかなど
分からないことが多いので…

> 他 OS で全く読めないのが困るのであれば、umsdos という手もありますね。
> LFN の扱いは VFAT と互換性はないのでファイル名はかわってしまいますが。
> # VFAT 実装時に、umsdos と統合すればいいのに…と思った記憶があります。

umsdosは知りませんでした。調べてみます。

0 new messages