visudo編集:勘違いしてた。。。あれ?やっぱり分からない...

買ってきたUSBメモリをマウントしたりアンマウントするときにわざわざ rootになるのが面倒だった。
オートマウントは何故か上手くいかない。
# これについてはいつかまた取り組む
ってなわけで
sudoを使ってみようとvisudoしました。


俺は通常WindowsからPoderosaを使ってLinxへSSHログインしてるんだけど、この場合でコマンド打つとWindowsホストからの命令になるんじゃないのね。
勘違いしてました。


例えば次の環境だとする。

この場合にWindowsからpneumaとしてログインする。


これで

pneuma  windows=(root)/bin/mount -t ext2 /dev/sda1 /mnt/flash/,/bin/umount /mnt/flash/

って書くとsudoで認証してくれない。つまり

[pneuma@linux ~]# sudo /bin/mount -t ext2 /dev/sda1 /mnt/flash/

が通らない。

pneuma  linux=(root)/bin/mount -t ext2 /dev/sda1 /mnt/flash/,/bin/umount /mnt/flash/

じゃないとだめなのね。


。。。ん?えーと?更に疑問が出てきたぞ
上のは、ログインしてコマンド実行するってことはそのログイン先のホストから実行するって意味になるよね?


じゃあ、visudoにそのホスト以外からコマンドを受け付ける用意があるのはなんで?

user host=(operator)command

の"host"の部分ってlocalhostだけでよくね?
どういうコマンドなら使うんだろ?




もうひとつ。チラシの裏だけど。


Host_Aliasに複数IPを指定する書き方が分からなかったので

$ man visudo

を見ると

著者
多くの人々が長年に渡り sudo の製作に携わってきた。このバージョンの visudo は、

Todd Miller

によって書かれた。更に詳しくは、sudo ディストリビューションHISTORY ファイルを
参照するか、 http://www.sudo.ws/sudo/history.html を参照すること。

という表記がありました。
指示通りhttp://www.sudo.ws/sudo/history.htmlを見てみると事細かに書いてあるのですが、そんな中でこんな記述が。

Host_Alias ::= NAME '=' Host_List

Host_List ::= Host |
Host ',' Host_List

----------snip----------

Host ::= '!'* hostname |
'!'* ip_addr |
'!'* network(/netmask)? |
'!'* '+'netgroup |
'!'* Host_Alias

これってBNFだ。
基本情報を勉強したときに見たことあるけど使ってるのは初めて見た〜


[reference]
http://www.sudo.ws/sudo/man/sudoers.html
http://ktarn.www.linux.or.jp/JM/html/sudo/man5/sudoers.5.html