vine-users ML アーカイブ



[vine-users:070013] Re: user 権 限での mo の eject

  • From: "K.Moriyama" <forest@xxxxxxxxxxxxx>
  • Subject: [vine-users:070013] Re: user 権 限での mo の eject
  • Date: Wed, 26 Jan 2005 21:26:23 +0900
森山です。

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