68user's page 掲示板

Prev< No. 3003〜3021> Next  [最新発言に戻る] [過去ログ一覧]
No. 3003 # yuuji 2002/12/25 (水) 15:37:40
はじまめして
UNIXのファイルアクセスでつまづいています。
Aという、所有者がnobody のファイルがあるのですが、あるunixサーバでは
webというユーザからアクセス(名前変更)ができます。
ところが、同じOSの別のサーバにあるBという、所有者がnobodyのファイル
にはwebというユーザからアクセスできません。
nobodyのファイルはどのユーザでもアクセスできると認識しているのです
が、ソフトのインストールやセキュリティの設定などでアクセスできないようにすることが可能なのでしょうか?
どなたかご存知の方いらっしゃいましたら教えてください。

No. 3004 # Japper 2002/12/25 (水) 22:25:47
>>2992 68user

ご回答ありがとうございます
パスワード的なことはやはりcrypt関数を使うことで解決できそうな気がします

>> Root権限でコマンドが実行されているような気がします
>perl スクリプト中で
> print "$<\n";
> print "$>\n";
>の結果のいずれかが 0 なら root 権限を得ています

やはり両方とも 0 を返しました
このことからRoot権限を得ているのでしょうか?
Root権限を与えない方法はどのようにすればよいのでしょうか?

よろしくお願いします

No. 3005 # Eiichi 2002/12/26 (木) 10:45:40
> 3003 yuuji

WebサーバがApacheならsuEXECを使えばいいと思いますよ。
http://httpd.apache.org/docs/suexec.html

No. 3006 # ruku 2002/12/26 (木) 13:20:22
>>2999 hsj
ありがとうございます。わかりました。頑張ってみます。

No. 3007 # 68user 2002/12/27 (金) 01:33:01
>>3002 koko
> できれば、書き込み時に自分でファイルをロック、アンロックしない、
> 要するにできるだけ楽をしたいです。
これを第一に考えるなら syslog か、syslog-ng を使いましょう。

daemon を立ち上げておけないのなら、open で O_SHLOCK を使うとか
(ま、結局ロックしているわけですが)。

また、
> 1.親プロセスでログファイルを開く。
> 2.複数の子プロセスを起動し、親が開いたログファイルにログを出力する。
という形態であれば、普通は pipe(2) して、fork(2) して、子が親にデータを
渡し、親がログに書く、というふうになるでしょう。
      http://x68000.startshop.co.jp/~68user/cgi-bin/cvsweb.cgi/public_html/links/link-check.pl?rev=HEAD&content-type=text/x-cvsweb-markup
は子が親に 1行だけデータを渡す例です。

あるいは親が名前付きパイプを作成し、子がそこに書き込むとか。

いずれにせよ、syslog が使えないなら、syslog 相当のものを
自作する必要はあります。

No. 3008 # 68user 2002/12/27 (金) 01:44:34
>>3003 yuuji
> nobodyのファイルはどのユーザでもアクセスできると認識して
> いるのですが
誤りです。nobody はただの一ユーザであって、所有者が nobody の
ファイルを扱えるかどうかは そのファイルのパーミッションと、ファイルが
置かれているディレクトリのパーミッションによります。

UNIX においては、誰よりも権限が高いユーザは存在しますが (root)、
誰よりも権限が低いユーザというのは存在しません。


>>3004 Japper
> このことからRoot権限を得ているのでしょうか?
そうです。

> Root権限を与えない方法はどのようにすればよいのでしょうか?
suExec の前に、設定を見直した方がよいでしょう。
  
もし apache ならば、あえてそういうふうに設定しない限り root
権限は得られません。そういう web サーバを使い続けることは
非常に恐いので、まっとうなインストール方法を勉強するか、
web サーバをインストールした人に何をしたのか聞いてみる
ことをお勧めします。

# 「デフォルトが root 権限で動く web サーバ」なら正常動作
# なんでしょうが、そんな web サーバは嫌だ。

No. 3009 # ELVIS 2002/12/31 (火) 22:10:26
こんにちは
もうすぐ2003年ですね
仕事でSolaris8をいじるようになって早くも4年目に突入です
まだまだ未熟者ですがよろしくお願いします

自宅では2001/01版のSolaris8を「WS440BX」で使ってるのですが
最近I845系のマシン(ペンティアム4系)にUPしようと考えるようになりました
当然ながらチップセットやディスクコントローラ、システムコントローラ等の
ドライバを入手する必要があるのですが、苦慮しています
新型機の候補としては「D845GALLY」あたりを考えているのですが
情報等あればよろしくお願いします

No. 3010 # しましま 2003/01/02 (木) 20:11:32
    EWSのデバイス情報(CPUのクロック数、メインメモリ)を知ることができる
UNIXコマンドがありましたら、教えて下さい。

No. 3011 # とむやむ 2003/01/04 (土) 16:51:43
perlでネットワークプログラムを試作してます。
echoをC/Sで動作する事は出来るようになりましたが、ファイルを
ネットワーク越しに転送するにはどうすればいいのでしょうか?
同じくperlによるC/Sです。

No. 3012 # HIGE 2003/01/06 (月) 12:01:19
はじめまして。
echoサーバーサンプルを参考にしてPerlでちょっとしたチャットサーバーなんかを作ってます。
そこでいきなり質問なんですが、PerlでBroken Pipeエラーを回避するようにできないでしょうか?
Broken Pipeとは存在しないソケットに対して書き込んでしまったときにでるエラーのようで、クライアントが強制切断してしまったときなどは回避できません。
どうにか皆様のお知恵をお借りできませんでしょうか。

No. 3013 # kiki 2003/01/06 (月) 18:58:04
あけましておめでとうございます。kikiです。
本年もよろしくお願い致します。

>>68user様
ずいぶんと古い話で申し訳ありませんが、
>>2956 の解決策をためそうとしましたところ、
1. PATH=../../../../../../../home/foo/bar:$PATH とする。
カレントディレクトリの階層があまりに深くなければ、これでいける。

が、どういう事を意味するのかわかりませんでした。
そして、これはどこで行うのでしょうか?
suトロイの実行前の準備としてでしょうか?
ご教授よろしくお願いします。

P.S.
PATH=.:$PATH
にしておくき、suトロイがおいてある場所で、suコマンドを打ち込むと
suトロイが実行され、もう一度suコマンドを打つと
しっかり/bin/suが実行されますが、
suトロイがおいてある場所以外で同じことをしようとすると
suトロイは実行されず、いきなり/bin/suが 実行されました。
コマンドを探す順番は、カレントディレクトリからということでしょうか。
うーん、調べてみます。

No. 3014 # 68user 2003/01/07 (火) 03:03:58
今年こそはちゃんと web を更新するぞ、と。

てなわけで、今年もよろしくお願いします。

>>3009 ELVIS
>>3010 しましま
少なくとも僕はわかりません。申し訳ない。

>>3011 とむやむ
> ファイルをネットワーク越しに転送するにはどうすればいいのでしょうか?
以下のやりとりが参考になるでしょうか。
>>2827 Tetsu
>>2828 68user
ftp クライアントと ftp サーバを作るもよし、自分でプロトコルを
決めるもよし、ということです。

>>3012 HIGE
> PerlでBroken Pipeエラーを回避するようにできないでしょうか?
SIGPIPE をキャッチしてください。使用例はこちら。
    http://x68000.startshop.co.jp/~68user/net/http-proxy.html

>>3013 kiki
> PATH=../../../../../../../home/foo/bar:$PATH とする。
カレントディレクトリが /dir1/dir2/dir3 であるとき、
      ../ は /dir1/dir2 です。
      ../../ は /dir1 です。
      ../../../ は / です。
      ../../../../ は / です。
      ../../../../../ は / です。
      ../../../../../home は /home です。
      ../../../../../home/foo は /home/foo です。
      ../../../../../home/foo/bar は /home/foo/bar です。
ってことです。

> PATH=.:$PATH
> コマンドを探す順番は、カレントディレクトリからということでしょうか。
. はカレントディレクトリですから。

No. 3015 # koko 2003/01/07 (火) 13:04:15
>>3007 68user
ご回答ありがとうございます。
やはり、ファイルに同時書き込みをするにはロック、もしくはそれに相当する制御は欠かせませんね。
素直にsyslogを使用すれば良いのですが都合でsyslogは使用できません。
頂いた参考URL等を参考にしながら対策を検討します。

No. 3016 # ありがとう [URL] 2003/01/07 (火) 14:34:53
★ \(^o^)v 大 発 見 !♪

                 〜♪ とっても 参考にさせて頂いて ♪

    ~~\(^o^)♪ 〜 夢 と 希望 が 叶いました〜♪ (^o^)/~~
                  
             ありがとう  

No. 3017 # ピョンタン [E-mail] 2003/01/07 (火) 16:40:47
もし、ご存知であれば教えてください。
ファイルの日付を比較して新しいほうのファイルを表示したいです。
サーバが異なる場所(ネットワークには接続できる)に、
それぞれファイルが存在するします。
同じマシンであれば、>find file1 -newer file2 -print
で表示されるのです。remshで実行しようとしてもうまくいきません。
ご教授お願いいたします。

No. 3018 # kenken 2003/01/09 (木) 00:58:50
AIX上でファイル内の先頭行と最終行を削除したいのですが
UNIXコマンドで行を指定して削除することはできないのでしょうか?
※C言語の処理内で行いたいのでsystem関数で可能な方法

もしご存知であれば教えてください。
よろしくお願いします。

No. 3019 # 68user 2003/01/09 (木) 09:34:49
>>3017 ピョンタン
remsh でリモートのファイルのタイムスタンプを表示して、ローカルの
方より若ければ rcp するか、とりあえず別のファイル名で rcp して、
ローカルで比較するか、てな感じで。

>>3018 kenken
> AIX上でファイル内の先頭行と最終行を削除したいのですが
      % tail +2 < file | ??? | tail +2 | ???
でいけた記憶があります。??? はファイルの内容を逆順にする
コマンドですが、なんだったっけなー。ど忘れしました。

      % cat -n file | tail +2 | sort -r | tail +2 | sort | sed 's/^.......//'
てな方法もあります。

まぁファイルサイズが大きいなら perl か awk でさくっと書いた方が
よいでしょう。

No. 3020 # ピョンタン [E-mail] 2003/01/09 (木) 11:34:56
ご回答ありがとうございます。
大変助かります。>No.3019(NO3017についての回答)
もうひとつ教えてください。ファイルの
タイムスタンプを取得するのに、
(1)Jan 9 2001  ← 2001/01/09
(2)Dec 10 13:56 ← 2002/12/10
(3)Jun 1 15:00 ← 2003/01/01
というふうに統一性がありません。
特に、(2),(3)だったらどうやって比べればいいのでしょうか?
申し訳ありませんが教えて下さい。

赤色の文字は 「Windows 機種依存文字」か、いわゆる「半角カナ」です。 この掲示板では自動変換されますが、今後は使用しないで下さい

No. 3021 # 68user 2003/01/09 (木) 12:53:44
>>3020 ピョンタン
% ls -lT
% ls --fulltime -l
% perl -e 'printf "%d\n", (stat("/foo/bar/baz"))[9]'

などなど。

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