タグ

関連タグで絞り込む (1)

タグの絞り込みを解除

Linuxとgolangに関するigrepのブックマーク (1)

  • [Go] port 80を開いたあとroot権限を捨てるwebサーバの例 - Qiita

    port 80を開くためにはroot権限が必要だが、開いたあとはセキュリティーリスクを最小限にするために一般ユーザ権限に降格したい、というWebサーバをGoで書く例です。 【追記3】 下記の例ではLinuxで動作させた場合に不十分です。 Linuxではsetuidを呼び出したスレッドにしか効かないので、以下の例をそのままLinuxで動かすとsyscall.Setuid()は成功しますが、HTTPのHandlerでは別スレッドで動くことがあるため、rootのままで動作することになります。 methaneさんのコメントを参照ください rootで起動した状態で":80"をlistenして syscall.Setuid() で一般ユーザになり http.Serve()する package main import ( "net" "net/http" "syscall" "log" ) func m

    [Go] port 80を開いたあとroot権限を捨てるwebサーバの例 - Qiita
    igrep
    igrep 2014/07/23
    ムズい。“Linux では setuid() は呼び出したスレッドにしか適用されず、 Go 言語は内部で自動的にマルチスレッドで 動くので、この方法だと setuid() を実行したスレッド以外が root のままになってしまい”
  • 1