パスワードを忘れた? アカウント作成
392412 journal

yourCatの日記: Macworld Tokyo/2002前日 12

日記 by yourCat

いつの間にかMacworld Tokyo/2002の前日になっていた。
ぼーっとしていたら基調講演の聴講事前登録もプレス登録も終わっているし、誰とも会う約束をしていないし、攻めるブースをチェックしていないし、名刺は刷っていないし、なんだかとほほっぷり全開だ。せっかくだから、洒落で/.J名刺作ろうかな。
というか誰か一緒に行こうよー。帰りに飲みに行こうよー。

この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。
  • ./というのは、カレントディレクトリだと思います。
    Linuxではカレントディレクトリにパスが通っていないので、カレントディレクトリにあるファイルを実行するには
    ./foo
    とする必要があるのです。ソースをコンパイルして実行する時などによく./fooと書かなければいけない時があります。

    理由は適当にgoogleで見つけたページ [hoops.ne.jp]を参考にして下さい。

    確か以前古めのFreeBSDやSolarisを使った時には、カレントディレクトリへパスが通っていたので、Linuxだけなんだと思いますが。
    • ああ、カレント・ディレクトリですか。なるほど。
      OS Xでも./hogeってやりますが、FreeBSD由来ではないのね。
      親コメント
    • もう 8 年くらい前に先輩から教わったことがあるので unix 世界では常識と思われますが、デフォルトでカレントディレクトリにパスを通しておくのは危険です。Silphire さんが示されていたページでは端末をいじられた場合の危険性について指摘していますが、そんなのは端末をいじられる時点でオワっているのでちとズレている気がします。

      この設定の真の危険性としては、

      setenv PATH .:${PATH}

      なんてことをしていたとき、誰かがどこか (たとえば /tmp) に

      #!/bin/sh
      /bin/rm -rf ~/* ~/.*


      といったスクリプトを ls という名前で o+x して置いておくと、ls した瞬間悲劇が起きます。もちろん rm するスクリプトなんかじゃなくてもっとマジメな trojan でもいいのですが。
      これは /tmp じゃなくてそのだれかさんが write 権限を持っているところならどこでもいいので、大学なんかの共用マシンで他の人のホームになにがあるかひまつぶしに眺めていたらいきなり、なんてこともありえますね。

      setenv PATH ${PATH}:.

      であれば危険性はだいぶ低くなりますが、ks だの sl だのといったありがちな typo にトラップを仕掛けることは可能ですね。

      というわけで modern な環境であれば Linux に限らずたいていの OS でデフォルトでカレントディレクトリはパスに含めないでしょうから、ボケた管理者がそういう危険な設定をしていない限り、カレントディレクトリのファイルを実行する際には ./ が必要ですね。

      # /. を ./ と打ってしまうのはたぶん癖なんじゃないかと(笑)
      親コメント
      • 常識でしたか。どうも私の無知ぶりを晒してしまったようで、お恥ずかしい限りです。2年目にして初めて本当の理由を知りました。

        という事は、うちの学校のFreeBSDとSolarisサーバでカレントディレクトリにパスが通っているのは、やはり管理者がボケているのだろうか…。
        親コメント
        • あー、常識ってのは言葉がよくなかったですね、スミマセン(^^;;
          まぁ古狸どもの世界で化かされないために必要な知識のひとつ、という感じでしょうか(^^;;

          教育の現場では学生が作成したバイナリを即実行できるようにという (手抜きの) 目的でカレントディレクトリにパスを通すケースがけっこうありますが、プログラミング以前の計算機リテラシ教育という観点からすると非常にまずいなぁとは思います (でもそういう設定をしてしまう先生はけっこう多いかも。先生というのは教育が本業であって管理が本業ではありませんし) 。

          いまを去ることウン年前、某先輩は自分のホームディレクトリに ls という名前の「実行すると実行したユーザの名前で実行したユーザ自身と某先輩に『 . をパスに含めてはいけません』というようなメールが飛ぶスクリプト」を仕掛けていたものです。ひっかかると自分自身から出した覚えのないメールが届くので受け取った人はずいぶん驚いていたような。

          # もはや遠い記憶でうろ覚えなので詳細は事実と違うかもしれませんが。
          親コメント
          • 教育の現場では学生が作成したバイナリを即実行できるようにという (手抜きの) 目的でカレントディレクトリにパスを通すケースがけっこうありますが、
            私の学校では、unixのアカウントは数回あるunix上での実習の為だけにあるので、その度に「プログラムが実行出来ない」という質問をされる事を避ける目的でカレントディレクトリにパスを通しているのかもしれません。
            親コメント
        • by k3c (4386) on 2002年03月22日 0時35分 (#73969) ホームページ 日記
          ユーザーのホームディレクトリに置かれている.profileだか.cshrcだか.bashrcだか、その辺のファイルで、カレントディレクトリ(.)がpathに含められていたりする場合もあります。それが、ユーザーが最初にログインしたときにすでに設定されているのなら、やはり管理者がタコなのでしょう。
          親コメント
      • わたしは元々PC-DOSあがりのMac OSユーザーなので、興味深く読まさせていただきました。いや、偽装スクリプトの可能性には気づいていたのですが、カレントにパスを通さないだけでこんなに抑止効果があるとは全く気づきませんでした。この辺りが自分に欠けているUN*X風のセンスだなぁ、なんて思って。

        #知らなかったらいずれカレントにパスを通していたかもしれない…
        親コメント
  • by kibayasi (3045) on 2002年03月21日 16時52分 (#73896) ホームページ 日記
    /.に対抗するグループの総称
    ってな答えを期待してました?(笑)
typodupeerror

身近な人の偉大さは半減する -- あるアレゲ人

読み込み中...