森山です。 On Wed, 26 Jan 2005 00:19:48 +0900 "OOSATO,Kazzrou" <kazz@xxxxxxxxxxxxxx> wrote: > /usr/bin/eject を suid するといった乱暴な手もないわけではない > のですが、sudoers を使うのが自然かつ安全じゃないでしょうか。 On Wed, 26 Jan 2005 02:05:53 +0900 "K.Tahara" <taharak@xxxxxxxxxxxxxxx> wrote: > 詳しくはないのですが、ejectコマンド中のSCSIコマンドでは、 > カーネルモジュールのロード(orアンロード)が必要なため、 > 一般ユーザでは失敗するのではないでしょうか。 > もしそうなら、パーミッション変更でなく、カーネル再構築が必要なため、 > 手間がかかり過ぎると思います。 > 前記で勧められているように、sudoersを用いた上で、 > alias eject="sudo /usr/bin/eject" /etc/sudoers に、ユーザを追加して実行してみた所、user 権限で eject 出来るようになりました。又、sudoers は、知りませんでしたので、 勉強になりました。 みなさん、どうもありがとうございました。 On Wed, 26 Jan 2005 09:59:00 +0900 FUKUHARA Makoto <makoto@xxxxxxxxxxxxxxxxxx> wrote: > # strace eject -s /dev/sdd > と > $ strace eject -s /dev/sdd > の違いを見ると,どこで駄目かわかるかもしれません やってみました。[ ioctl(3, FIBMAP, 0xbffff640) ] の戻り値(?) が異なる 箇所から動作が変わっているようです。 --- root の場合 ------------------------------------- # mount /mnt/mo # strace eject -s /dev/sdd > dummy1.txt 中略 old_mmap(NULL, 100608, PROT_READ|PROT_EXEC, MAP_PRIVATE, 3, 0) = 0x4043a000 old_mmap(0x40452000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED, 3, 0x17000) = 0x40452000 close(3) = 0 open("/etc/mtab", O_RDONLY) = 3 fstat64(3, {st_mode=S_IFREG|0644, st_size=258, ...}) = 0 mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x40020000 read(3, "/dev/sdb3 / ext3 rw,noatime,data"..., 4096) = 258 read(3, "", 4096) = 0 close(3) = 0 munmap(0x40020000, 4096) = 0 open("/dev/sdd", O_RDONLY|O_NONBLOCK) = 3 ioctl(3, FIBMAP, 0xbffff820) = 0 ioctl(3, FIBMAP, 0xbffff820) = 0 ioctl(3, FIBMAP, 0xbffff820) = 0 ioctl(3, BLKRRPART, 0xbffff820) = 0 close(3) = 0 exit_group(0) = ? --- user の場合 -------------------------------------------- $ mount /mnt/mo $ strace eject -s /dev/sdd 中略 old_mmap(NULL, 100608, PROT_READ|PROT_EXEC, MAP_PRIVATE, 3, 0) = 0x4043a000 old_mmap(0x40452000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED, 3, 0x17000) = 0x40452000 close(3) = 0 open("/etc/mtab", O_RDONLY) = 3 fstat64(3, {st_mode=S_IFREG|0644, st_size=258, ...}) = 0 mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x40020000 read(3, "/dev/sdb3 / ext3 rw,noatime,data"..., 4096) = 258 read(3, "", 4096) = 0 close(3) = 0 munmap(0x40020000, 4096) = 0 open("/dev/sdd", O_RDONLY|O_NONBLOCK) = 3 ioctl(3, FIBMAP, 0xbffff640) = -1 EACCES (Permission denied) open("/usr/share/locale/locale.alias", O_RDONLY) = 4 fstat64(4, {st_mode=S_IFREG|0644, st_size=2528, ...}) = 0 mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x40020000 read(4, "# Locale name alias data base.\n#"..., 4096) = 2528 read(4, "", 4096) = 0 close(4) = 0 munmap(0x40020000, 4096) = 0 open("/usr/share/locale/ja_JP.eucJP/LC_MESSAGES/libc.mo", O_RDONLY) = -1 ENOENT (No such file or directory) open("/usr/share/locale/ja_JP.eucjp/LC_MESSAGES/libc.mo", O_RDONLY) = -1 ENOENT (No such file or directory) open("/usr/share/locale/ja_JP/LC_MESSAGES/libc.mo", O_RDONLY) = -1 ENOENT (No such file or directory) open("/usr/share/locale/ja.eucJP/LC_MESSAGES/libc.mo", O_RDONLY) = -1 ENOENT (No such file or directory) open("/usr/share/locale/ja.eucjp/LC_MESSAGES/libc.mo", O_RDONLY) = -1 ENOENT (No such file or directory) open("/usr/share/locale/ja/LC_MESSAGES/libc.mo", O_RDONLY) = 4 fstat64(4, {st_mode=S_IFREG|0644, st_size=110469, ...}) = 0 mmap2(NULL, 110469, PROT_READ, MAP_PRIVATE, 4, 0) = 0x40453000 close(4) = 0 open("/usr/share/locale/ja_JP.eucJP/LC_MESSAGES/eject.mo", O_RDONLY) = 4 fstat64(4, {st_mode=S_IFREG|0644, st_size=8387, ...}) = 0 mmap2(NULL, 8387, PROT_READ, MAP_PRIVATE, 4, 0) = 0x40020000 close(4) = 0 write(2, "eject: \245\244\245\270\245\247\245\257\245\310\244\307"..., 60eject: イジェクトできません, 直近のエラ ) = 60 exit_group(1) = ? -- K.Moriyama