福原です. OOSATO,Kazzrou wrote: >> どうも user 権限で SCSI コマンド が使用でないように見える >>のですが、何かのパーミッションを変更する必要が有るのでしょうか? > > > /usr/bin/eject を suid するといった乱暴な手もないわけではない > のですが、sudoers を使うのが自然かつ安全じゃないでしょうか。 man eject や jman eject を見ると,最後の方の NOTES (注意) で > You need appropriate privileges to access the device > files. Running as root or setuid root is required to eject > some devices (e.g. SCSI devices). > デバイスファイルへのアクセスには適切な権限が必要である。デ > バイスによっては (例えば SCSI デバイス)、 eject を root で > 実行しなければならなかったり、または eject を root に > setuid しておくことが必要だったりする。 と書いてあるので,たぶん大里さんのおっしゃる通りでしょう. apt-get install strace で strace を入れて # strace eject -s /dev/sdd と $ strace eject -s /dev/sdd の違いを見ると,どこで駄目かわかるかもしれません. # -s は SCSI コマンドだけ使います. # > -s This option specifies that the drive should be ejected using SCSI commands. eject-2.0.13-3vl1.src.rpm の eject.c を見ると,想像ですが status = ioctl(fd, SCSI_IOCTL_SEND_COMMAND, (void *)&scsi_cmd); ここかな,という気がします. status = ioctl(fd, CDROMEJECT); や status = ioctl(fd, FDEJECT); という行もあって, main の中で worked = EjectCdrom(fd); (略) worked = EjectScsi(fd); (略) worked = EjectFloppy(fd); この間では fd は変更していないようなので,fd に対するパーミッションの 問題ではなく,SCSI_IOCTL_SEND_COMMAND の ioctl が CDROMEJECT や FDEJECT などとは違うということでしょうか. # int fd; /* file descriptor for device */ -- 福原 <makoto@xxxxxxxxxxxxxxxxxx>