68user's page 掲示板

Prev< No. 208〜230> Next  [最新発言に戻る] [過去ログ一覧]
No. 208 # M.Masuda 1999/03/20 (土) 22:52
こちらは RedHatの方です。
Mlocal, P=/usr/bin/procmail, F=lsDFMAw5:/|@qSPfhn9, S=10/30, R=20/40,
                    A=procmail -Y -a $h -d $u

それから、WU-FTPDでの/etc/ftpaccessの設定について
もし分かるのならメールで直接聞いてもいいでしょうか。
内容を見てもらいたいのですが、内容的に公開してもいい
ものか分からないもので...。

内容は一般ユーザーへの、ftp接続時でのアクセス制限です。

No. 209 # 68user 1999/03/21 (日) 00:40
へぇぇぇぇ、ほんとにprocmailを特別扱いしてるんですね。

> 出来れば意味を教えて下さい。(^^;
きついことをおっしゃる(笑)

Mで始まる行は、配信エージェントの定義を表します。
P=はプログラムのパス、S=とP=はエンベロープ/ヘッダの書き換え、
10/30、20/40ってのは書き換え規則(どこか別の場所で定義されている)、
F=はこの行の(他の行から参照する際の)設定の名前を決めてるのかな?
それとも他での定義を参照してるのかな?
T=は、メールヘッダに追加される? A=... はわかりません。

sednmail.cfを理解できるほどの知識があるわけではないので
(コウモリ本も持ってない)、こんなもんでご勘弁を(^^;

Slackwareの配布サイトを見てみましたが、やはり標準で
procmailを特別扱いしているようです。Linux界では
普通なのでしょうか(僕からするとちょっと気持ち悪いですが)。

> それから、WU-FTPDでの/etc/ftpaccessの設定について
> もし分かるのならメールで直接聞いてもいいでしょうか。
すいません、wu-ftpdは使ったことがないのです。

No. 210 # ぬいぐるみバンザイ [URL] 1999/03/22 (月) 02:56
はじめまして、こんばんわ。ぬいぐるみバンザイと言います。

CGIについてですが、少し質問があります。
それは、ホームページの更新状況を(自分や他人のサイトも含めて)自動で
(そのCGIを実行すれば)検知するようなものを作りたいor探しているのですが
お心当たりはないでしょうか?

初心者の自分ではソケットを使ってターゲットとなるサイトに接続して、index.htmlあたりの
ファイルの月日を取得できたらいいなと思うのですが、こういうことは可能なのでしょうか?
初心者ゆえ、何をいってんだ?的なところがあるかも知れませんが、よろしくお願いします。m(__)m


ではでは

No. 211 # mm [URL] 1999/03/22 (月) 03:26
自分のサイトならば、上のURLのスクリプトではいかがでしょう…
他人のサイトの場合は、仰るようにソケットを使って HEAD メソッドかな…

M.Masuda さん
>4M積んだノートでは、620kbのfreeは確保出来たのですがそれで
>限界でした。
そう言えば、そんなことが流行ったことも…、でも620はスゴイ…(笑い)

No. 212 # 68user 1999/03/22 (月) 05:47
> それは、ホームページの更新状況を検知するようなもの
mmさんのおっしゃる通り、HTTPのHEADメソッドを使えばいいでしょう。
レスポンスのヘッダ部分から
    Last-Modified: Wed, 20 May 1998 14:59:42 GMT
などという情報が得られます。ただし、(少くともapacheでは)SSIを
使っているページでは、Last-modifiedを返してくれません(例えば
うちのトップページ)。また、Last-Modifiedを返さないサーバもあるでしょう。

ソケットの使い方については
    http://X68000.startshop.co.jp/~68user/net/
が参考になるかもしれません。

> CGIについてですが、少し質問があります。
ただし、CGIとして動作させるのは非現実的かと思います。
なぜなら、いろんなサーバに接続するのはそれなりに時間がかかります。
重い時間帯なら数分待たされることも珍しくありませんので、
その間にCGIのタイムアウトが発生するでしょう。

ですから、コマンドラインから動作させるか、あるいはCGIで動かすとしても、
    - すぐにclose(STDOUT)してコネクション自体を切断
    - その後 更新時刻のチェック
    - チェック結果をHTMLに吐き出す
    - (あなたが)すこし時間が経ったらそのHTMLにアクセス
とした方がいいと思います。

> or探しているのですが
プログラム自体は比較的簡単に作れますから、探せばあるのでしょうが、
残念ながら知りません。ただ、IEやNNにそういう機能が付属しているのでは
ないでしょうか。

No. 213 # takashi 1999/03/23 (火) 17:13
はじめまして。

UNIX初心者なので、いろいろ分からない事があり、
いきなりですが、みなさんに教えて頂きたいことがあります。

シェルスクリプト内にてスーパーユーザーになりあるコマンドを
発行したいのですが、スーパーユーザーになったところで
プロンプトが帰ってきてしまい、以降の処理に行きません。

どの様にすれば、シェルスクリプト内にてスーパーユーザーになって
コマンドを発行できるのでしょうか?

よろしくお願い致します。
できれば、シェルのサンプルを見せていただければと思っております。

No. 214 # M.Masuda 1999/03/23 (火) 18:42
>へぇぇぇぇ、ほんとにprocmailを特別扱いしてるんですね。
ありゃりゃ、ほんとにそうだったんですか、私の勘違いなのかなぁ
なんて思って、「違いますよぉ」なんてレスが返って来るかと思っ
てました。(^^;;;;

一番難しいと言われるsendmailに関しては、既に私の理解を超えてる
ので、今は逃げます...(爆)
将来の、目標としておきます。(^^ゞ

>きついことをおっしゃる(笑)
そんなそんな、コウモリ本もなくてあれだけ理解してればぜんぜん
○では?...。
でも本当にシステムによってかなり設定が違うんですね。
勉強になります。

>すいません、wu-ftpdは使ったことがないのです。
残念です。一応目的の事は達成出来たのですが、その手順での
他の部分への影響が知りたかったのです。
この辺は、いくら1ソフトの設定が出来ても、システムそのものに
詳しくないと、分かりませんからね。

プログラマーの弟は、free630kbと私に自慢してました。(^^ゞ>mmさん
#すいません、違う話題で...>68Userさん

こんにちはtakashiさん
シェルスクリプト内でrootになる?
それってどうやるのですか?
普通suコマンドやpasswdコマンドでは、わざとユーザーに入力要求
を出して、システムを保護するようになっているという話を聞いた
事が有ります。
それに、スクリプト内にrootのパスワードを記述しなければいけな
いのでは?
もしそうなら、それはセキュリティー的に辞めた方がいいと思いま
すよ。
何をしたいのかが分かりませんが、root権限でログイン中以外の時
に、何かをさせたいのであればcrontabなどで実現させるのがいいと
思いますヨ。
#外しているかなぁ(^^ゞ

No. 215 # takashi 1999/03/23 (火) 20:11
M.Masudaさん、ありがとうございます。

Masudaさんと言う通り、セキュリティの問題のあるやり方なので、
他の方法を考えたいと思います。

また、お世話になると思いますが、その時にもよろしくお願い致します。

No. 216 # M.Masuda 1999/03/23 (火) 23:51
>他の方法を考えたいと思います。
どんな事をしたいのかを書くと、きっと有効な情報が得られると
思いますヨ。

またまた、御世話になります。m(_ _)m
シェルスクリプトのif文で、前のコマンドの終了結果を知りたい場
合はどうすればいいのでしょうか?
具体的にはこうです。
/#!usr/bin/sh
vi text.txt
if [ 条件(text.txtを更新したら) ];then
        date>>text.txt
fi

条件のところでの指定法方が解からないのです。(^^ゞ
#すげー初心者ですね←私

No. 217 # ぬいぐるみバンザイ 1999/03/24 (水) 00:38
ありがとうございます。m(__)m>mmさん、68userさん

やっぱり、CGIで全部自動というのは、難しそうですね。
教えて貰ったことを参考に作ってみます。また来ることがあるかも知れませんが
その時はよろしくお願いします。m(__)m


ではでは

No. 218 # 68user 1999/03/24 (水) 01:23
> takasiさん
僕がやるとすれば…

sudoを使う
    特定のユーザに対して、特定の権限(この場合root)で、特定のコマンドだけ
    実行を許可するコマンド。例えば hoge というユーザだけ cat /etc/master.passwd
    を実行できる、と設定すれば、
        % cat /etc/master.passwd
        Password: ***(rootのパスワード)
        (/etc/master.passwdの内容が表示される)
    となります。その後5分間以内(多分設定で変更可能)なら、再度同じコマンドを
    打っても rootのパスワード入力を省けます。

wrapperを使う
    普通スクリプトにはsuidビットを立てられません。でもバイナリなら可能です。
    そこで、Cでwrapperを書き、その中でスクリプトを実行させるようにします。
        % chmod 4755 wrapper
        % chown root wrapper
    としてwrapperを実行すると、root権限でスクリプトが実行されます。

suidperlを使う
    普通スクリプトにはsuidビットを立てられませんが、perlだけは例外です。
        % chmod 4755 perl-script
        % chown root perl-script
    とすれば、root権限でperl-scriptが動きます。

くらいでしょうか。2番目の方法のソースは、よろしければお見せしましょうか?

No. 219 # 68user 1999/03/24 (水) 01:47
ん〜、コマンドの status は $? を見ればいいですけど、
今試してみたところでは、更新してもしなくても、どちらも
0 を返してきました。正常終了は正常終了なので更新の有無は
関係ないのでしょう。

で、この場合は最終更新時刻が更新されたかを調べるとか、
/tmpにコピーして、それを編集させ、元のファイルとdiffする
などするのがいいんじゃないでしょうか。

No. 220 # M.Masuda 1999/03/24 (水) 12:46
>ん〜、コマンドの status は $? を見ればいいですけど、
あれま、やっぱ甘かった!。
viの終了コードで判別しようと思ったんですが...、そうですね
よく考えたら、保存しようがしまいが一応正常終了だから、それ
では判別できませんね。(^^ゞ
わざわざ試してもらってすいません。
#でも「$?」の方法が知らなかった...
#ホント初心者です。(*^_^*)

DOSの場合、終了コードはかなりいい加減だっただった記憶が
有ります。UNIXの各コマンドの場合正確にコードを返してくるの
ですか?、それからどんな時にどんな終了コードが返るかは、man
で調べる以外に基準の様なものはあるのでしょうか?。
#例えば正常終了だと0が返る等

/tmp/の方法でやってみます、もっと単純に出来ないかと思った
のですが。(^^ゞ


>2番目の方法のソースは、よろしければお見せしましょうか?
この方法は、私も非常に興味があります是非お願いします。m(_ _)m

No. 221 # H.SAWA 1999/03/24 (水) 20:07
gettimeofdayについて

No. 222 # H.SAWA 1999/03/24 (水) 20:08
gettimeofday

No. 223 # M.Masuda 1999/03/25 (木) 00:30
>2番目の方法のソースは、よろしければお見せしましょうか?
  この方法は、私も非常に興味があります是非お願いします。
すいません。これって「wrapperを使う」方ですね。
勘違いしてました。

興味があるのは、perlでの方です。
「suidperlを使う」ってのは、やってみましたが動きませんでした。
なぜなんだろう?

No. 224 # 68user 1999/03/25 (木) 17:04
> 「suidperlを使う」ってのは、やってみましたが動きませんでした。
書き方が悪かったですが、普通にperlスクリプトを書いて、
    chown root script;chmod 4755 script
として scriptを実行すれば、scriptがsuidされているかどうかを
perl(/usr/local/bin/perl)が調べくれて、もしsuidされていたら
勝手にsuidperlを実行してくれます。suidperlはrootにsuidされている
プログラムなので、そこで実行権限をscriptのオーナー(この場合はroot)
に変えて実行してくれるわけです。
# perl4はどうなるか知らない。

shやcshはそういうことはしてくれないので、suidスクリプトは
実行者の権限でしか動きません。

ちなみにCで書く方法も簡単で、特定のコマンドをexeclやexecvする
プログラムをCで書いて、コンパイルして、
    chown root program;chmod 4755 program
するだけです。

No. 225 # mm 1999/03/25 (木) 23:55
先日某所で尋ねられた件について、ちょっと分からなかったので、
質問させて下さい。

尋ねられた内容は、C言語に関して、
    if ( NULL != (hp = gethostbyaddr(...)) )
        return hp->h_name;
というコードで関数が返すポインタが指し示す
文字列の実体が何処に確保されているか?
(実際は、これに似たコードで、コンパイラが
警告を出したことが発端なんですが…)

ということなのですが、gethostbyaddr()がポインタで返す
struct hostent の実体については、
>NOTES
>A return value points to static data,
>which is overwritten by any subsequently called functions
>using the same structure.
というのを見つけて、ライブラリ内で1個だけ静的に確保して
いることは分かったのですが、この struct hostent のメンバー
である char *h_name が指す文字列の実体が何処に確保されて
いるのかまでは分からなかったのです。

struct hostent の他のメンバーには char **h_addr_list
なんてのもあるんで、これらがすべて静的領域に確保され
ているとは考え難いと思います。

でも、もしmalloc()などでヒープに確保されるのであれば、
文字列の利用後に free する必要はないのでしょうか?
(必要があれば、どこかに書いてあると思うので、
その必要はないとは思うのですが、だとしたら何故不要なのか
がよく分からないのです。gethostbyaddr()の内部で atexti()
により free() する関数を登録してるとか…?)

それと、unix では、一般にプログラム内部で malloc() などで
確保したメモリをプログラムの終了までに free() を使って
明示的に解放しなかった場合、どうなるのでしょうか?
WindowやMS-DOSでのFARヒープの場合のように、メモリ上に
ゴミとして残るのでしょうか?
それとも、プロセスの終了を見て、システムが自動的に解放
してくれるのでしょうか?

No. 226 # M.Masuda 1999/03/26 (金) 00:00
>「suidperlを使う」ってのは...
やっぱだめです。なんでだろ?

ls -lの結果は
-rwsrwxr-x 1 root 501 342 Mar 25 23:41 su.cgi*
で、

su.cgiの内容は、

#!/usr/bin/suidperl
$|=1;
print "Content-type: text/html\n\n";
print "<html>";
print "<H3>su test</H3>";
print "<pre>\n";

print "#############################\n";

print "<hr>\n";

$_=system("cat /etc/ftpaccess");
print "$_\n";
print system("date>testfile");

print "</pre>";
print "<hr>";
print "</html>";
です。
試しに適当につくってあるので、内容が恥ずかしいんですが
#!/usr/bin/suidperl
の行も最初は普通にperlを指定したんだけどダメなので、
試しに上記の様にしてもやはりだめでした。
rootでコマンドラインから実行するとOKです。
もちろん /etc/ftpaccessは、600のパーミッションです。
う〜ん、わからん。
変なところが在ったら教えて下さい。
#ちなみにperlは日本語パッチが当たってますけど関係有ります?

それからもう一つお願いします。
aliasを使って、あるユーザに来たメールを転送させる設定は
/etc/aliasesに記述しないとだめなんでしょうか?

いつもいつも御世話になりっぱなしで申し訳ないですが、お師匠様
なにとぞ宜しくお願いします。m(_ _)m

No. 227 # 68user 1999/03/26 (金) 00:30
M.Masudaさん
> rootでコマンドラインから実行するとOKです。
一般ユーザでコマンドラインから実行するとどうなります?

> $_=system("cat /etc/ftpaccess");
> print system("date>testfile");
ここらへんがくさいです。httpdのエラーログに、PATHがどうこう、と出て
ませんか? うちは
    #!/usr/local/bin/perl
    print "Content-type: text/plain\n\n";
    open(IN,"/etc/ftepaccess");
    print <IN>;
でOKでした。CGIからでも うまくいきました。
    open(IN,"/bin/cat /etc/ftepaccess |");
だと、
    Insecure $ENV{PATH} while running setuid at ./a line 4.
とエラーになりました。あと、perl4ではsuidスクリプトは動かない
ようです。

> aliasを使って、あるユーザに来たメールを転送させる設定は
> /etc/aliasesに記述しないとだめなんでしょうか?
質問の意図がよくわかりません。どこか別のところに書きたいのでしょうか?

mmさん
> それとも、プロセスの終了を見て、システムが自動的に解放
> してくれるのでしょうか?
はい、勝手にfreeしてくれます。gethostbyaddrの件は少し調べてから…。

No. 228 # ROL 1999/03/26 (金) 00:51
LinuxWorldでredhatを入手して一週間!
ついにLinux起動いたしました(笑)
さぁ、次はインターネットに接続だ。

しかし、ここの話題についていけるようになるのに、どれだけの時間がかかるやら…(笑)

No. 229 # M.Masuda 1999/03/26 (金) 01:33
なぜじゃ〜どうしてじゃ〜←狭間かんぺい調(爆)
>一般ユーザで...

これもだめです。68Userさんが前に書いたとおりアクセス件が無いと
怒られます。
Insecure $ENV{PATH} while running setuid at ./su.cgi line 13.
と出ました。

>httpdのエラーログに、PATHがどうこう、と...
アパッチのerror_logは、だんまりです。(>_<)

>ここらへんがくさいです。
これも68Userさんと同じコードで試しました、がダメ。

ひとつ不思議を見つけました。
perl -c とすると、Args must match #! line at su.cgi line 1.
と出ます。

んっ!

とここまで書いて、他の事をいろいろ調べたらどうもこれが
前に疑問だった、suExecの機能のようです。
http://japache.infoscience.co.jp/japanese/manual/suexec.html
ってことは、68Userさんの環境はsuExecが実装された環境のようで
すね。
#今夜はずっとこの問題で格闘していたのでつかれた....ふげっ!

aliasの件は、ダミーユーザー(ログオンしない)宛のメールを管理
者に転送するという意味です。
#やってみれば分かりますね...(^^;
.bashrc等の設定ファイルに記述するのは、普通コマンドのailas
なのですか?

#なんかドッとつかれた....(T_T)

No. 230 # 68user 1999/03/26 (金) 02:20
うちでは #!/usr/local/bin/suidperl でも動きました。

> perl -c とすると、Args must match #! line at su.cgi line 1. と出ます。
suidスクリプトの実行時には、perlに渡す引数と
suidperlに渡す引数が同じでなくてはいけません。
# …と、青ラクダ本に書いてありました。

> これも68Userさんと同じコードで試しました、がダメ。
/usr/bin/perl は perl5 ですか?

FreeBSDの場合、FreeBSD 3.0R から /usr/bin/perl が perl5 に
なったのですが(それまではperl4)、その /usr/bin/perl は
suidperl が起動しないようになっていると聞きます。Linuxでも
OSの方針で、suidperlを実行しないようにコンパイルされている
のかもしれません。

> 68Userさんの環境はsuExecが実装された環境のようですね。
いえ、うちにはSuExecは入れてません。

何か問題が発生すると原因を切りわけていく必要があります。
httpdが原因かもしれないので、CGI経由で実行するより
コマンドラインで実行すべきかと思います。


> aliasの件は、ダミーユーザー(ログオンしない)宛のメールを管理
> 者に転送するという意味です。
ん〜、まだちょっと意味がわかりかねます。

> .bashrc等の設定ファイルに記述するのは、普通コマンドのailas
> なのですか?
そうです。コマンドの alias と /etc/aliases は全く別物です。

ROLさん
> ついにLinux起動いたしました(笑)
FreeBSDじゃないんですねぇ(^^;

> しかし、ここの話題についていけるようになるのに、どれだけの時間がかかるやら…(笑)
やる気があればすぐですよん。

Prev< No. 208〜230> Next  [最新発言に戻る] [過去ログ一覧]