A Day In The Boy's Life -176ページ目

A Day In The Boy's Life

とあるエンジニアのとある1日のつぶやき。

Linux/Unixであるコマンドやプログラムをrootユーザーで実行させる場合、それが返って不便になる事もあります。

例えば・・・


・ あるプログラムの実行時には特殊な環境変数をセットしていないといけない

・ あるプログラムはrootユーザーでの実行が禁止されている

・ プログラム実行による出力ファイルがroot権限となる(それを一般ユーザーで編集・実行できない)


などです。

ですが、様々な制約を考えるとやはり、そのコマンドをrootユーザーで実行させたいということがあります。

こういった場合、実行したいユーザーでsudoコマンドを通してプログラムを実行させるというのも一つですが、ここで紹介するrunuserコマンドを使えば、rootユーザーから特定のユーザーに成り代わってコマンドを実行させるという事ができます。


runuserの基本的な使い方は下記の通りです。


# runuser -l {実行ユーザー名} -c "コマンド"

例えば、hogeユーザーにて空のファイルを作成してみます。


# runuser -l hoge -c "touch text.txt"
# ls -la text.txt
-rw-rw-r-- 1 hoge hoge 0 Oct 6 22:56 text.txt

ちゃんと、所有者がhogeユーザーになっています。

このようにそのコマンドを、ちゃんとユーザー変更してから実行したのと同様に実行させる事が可能です。

もちろん、そのコマンド内からファイルを作り出すようなプログラムでも同じです。


- ファイルを作るプログラムのサンプル

<?php
$fp = fopen("./hoge.txt", "w");
fputs($fp, "test");
fclose($fp);
?>

これをhogeユーザーと、runuserを通してrootユーザーで実行してみます。


$ php file.php
$ ls -la hoge.txt
-rw-rw-r-- 1 hoge hoge 4 Oct 6 22:59 hoge.txt

$ su -

# runuser -l hoge -c "php file.php"
# ls -la hoge.txt
-rw-rw-r-- 1 hoge hoge 4 Oct 6 23:01 hoge.txt

結果がまったく同じになっていますね。


先に書いたような制約から、rootユーザーで特定のユーザーでこのコマンドを実行させたいという場合に、覚えておくと便利なコマンドです。





最近、やたらと業務の領域を厳格化しようという動きがあると感じます。


あなたはプログラマーだから、システム保守の仕事だけをしてくださいね。

あなたは運用担当者ですから、ソースに手を加える事は許されません


とか。

これは、法令順守や内部統制などでシステムを取り巻く環境が昔より厳しくなってきた事に伴うものだったり、業務の効率化を最優先に行ってきた結果だったりもするのですが、それにしたがって配置され、それにしたがって業務をこなすエンジニアにとっては、その領域を逸脱した業務というのはできず、普段から触れることのできるスキルも固定化されてきます。


運用担当者なら運用の仕事しかできない。システムに障害がおきても運用担当者はその原因を調べ、保守担当者にエスカレーションするというところまでしかできない。

原因は分かってる。それを修復するスキルは自分にはある。でもその領域に踏み込む事が許されていない・・・。

そんな状況にエンジニアを追い込んでいます。

それをもどかしい気持ちとしてみているエンジニアならまだしも、逆に「それは私の仕事ではありませんから」と自分の担当外の領域をやろうとしないエンジニアもいたりします。


もちろん専門特化する事が悪いとは思いません。

自分にはこの領域で高い能力を発揮する事ができるという自信と、周りからの賛同があればその道でエキスパートとしてやっていく事は、自分の思惑と業務を効率よく推進していくという組織の思惑が一致して、レベルの高い業務が行えるかもしれません。


が、しかしそれは自分の色々な経験を経たゆえの考えであって、「保守って何?」「運用って何するの?」とわからない新米エンジニアにとっては、その領域に当てはめられた事でその他の業務というのに何があるかさえも分かりません。


そしてその組織を統率する上司も、「君はこの領域だけをやればよい。他の仕事は気にしなくてよい」と言ったりします。

確かに新米エンジニアにその領域で経験を積ませれば、その領域でエキスパートに育つかもしれません。

しかし、その他の領域が分からないエンジニアを果たして、能力の高いエンジニアと呼べるでしょうか。

それはエンジニアの幅を著しく狭めているだけの気がしてなりません。


昔は、少し様相が違いました。

あまりエンジニアとしての分業が進んでいませんでしたし、優れた運用ツールも豊富ではなかったので、エンジニアは自分たちでどうにかしないといけない状況にありました。

皮肉にも業務が非効率であったり、統制を取れていないことが、エンジニアを何でもしないといけない環境に押しやっていたのだと思います。

また、以前に書いた「減っていく失敗できる環境、増えていく失敗できない環境 」というエントリでも触れたように、業務の領域の効率化と統制を進めた結果、エンジニアが広い幅で能力を求められる環境というのも減ってきています。


こういった状況にもかかわらず、上司は「優秀なエンジニアが育たない」と嘆いてたりもします。

「それ以外はやるな」と言われているのに、「何でそんな事も知らないんだ」という態度をとってきたりもします。

その矛盾になかなか気づいていません。


これからより業務の領域はより厳格化してくると感じます。

その時に、自分は何をやりたいかという事を分かるためにも、仕事にはどんな領域があるのかを見てみることを強くお勧めします。




懐かしのウェブを再現--グーグルが2001年当時のインデックスを公開 @ CNET Japan


これは面白い試みかも。

あの頃の検索結果が再現できるわけだ。

Wikipediaの2001年の情報 から幾つかググって見ましたが、どうも1月末ぐらいのインデックスっぽいです。


Google @ 2001年


でも、2001年といえばまだGoogleの知名度はそんなでも無かったと思います。

私自身が使い始めたのが、ちょうどこの頃かこれより少し後のこと。

技術的な情報を調べるのによく重宝していました。


もちろんこの頃は、今の流行の言葉を入れてみてもほとんどヒットしません。

(別の意味で使われたりしてたものはありますが)


当時と今の違いを色々検索してみると面白い。


- 今のWeb2.0 は結果3000万件超だけど、2001年のWeb2.0 は結果79件、


- SNS もまたしかり。


- 2001年は「ググる 」という言葉も無かった。


- 2001年の「ブログ 」は今の面影もない。


- 2001年の「Ajax 」はJavaScriptではなく、サッカーチーム


- Wikipedia とかはこの頃からあったんだと少しびっくり。(日本語版は出てなかった模様)



全体的にやっぱりインデックス数が少ないなぁと感じる。

今は単語を入れたら、Wikipediaが上位に出てくる事が多いが、この頃に日本語版は無かったので本文にキーワードが出てくるサイトが結果として出てくるパターンが多いですね。


ネット上のコンテンツってリアルと連動するので、こうしてみてみると当時の世相がよくわかります。