2011年1月25日

[ubuntu-jp:3329] Re:root(スーパー)ユーザーについて

山口です。

荻野さんがおっしゃっているとおりですが、シェル上の演算子、変数が
どこで解釈され評価されるかを考えれば、難しい事はないですよね。

また、シェル組み込みコマンドの cd は、単に「ディレクトリ移動」ではなく
「カレントシェルのワークディレクトリを変更する」という認識だとスムーズになると思います。

# ちなみに私は、root 権限操作が長くなりそうな場合は sudo su 、
# デーモンの再起動くらいなら sudo のみで済ませます。
# ポリシーの尊重も大切ですが、好みの問題もアリかと ;)

2011年1月25日21:21 Mitsuru Ogino <ogino@xxxxx>:
> 荻野です。
>
> Dezawa said the following on 11/01/25 20:56:
>> sudo は
>> su - して
>> 何かコマンド一つ実行して
>> ^D(suから戻る)
>> のようなものです。
>
> 細かいようですが、su - ではなく su の方です。su - を付ければ環境変数など
> がログインしたのと同じになりますが、例えば
>
> sudo sh -c 'echo $HOME'
>
> とかしてみると /root では無く、現在の $HOME が表示されるはずです。
>
> 元の cd コマンドというのは、おそらくシェル内蔵の cd コマンドのことだと思
> います。もし /usr/bin/cd とかがあれば(手元の Ubuntu にはありません
> が)、このコマンド実行終了後にカレントディレクトリは戻ってしまいますので
> 意図された動作にはなりません。(どこかの UNIX には /usr/bin/cd とかが
> あったように思いますが、cd 可能かどうかをチェックするぐらいにしか役に立
> たないコマンドだと思います)
>
>
>> ですから
>> sudo cd どっか
>>
>> ってやると、
>
> cd は /bin/sh や /bin/bash などのシェル内蔵コマンドなので sudo cd の結果は
>
> sudo: cd: command not found
>
> が正解だと思います。
>
>
>> ときどき一般ユーザには書き込み禁止なところで、su なら書けるだろうって
>> sudu なにがし> file
>>
>> などとして、書き込み権ないよ、って言われてしまいます。
>
> これもそうですが sudo コマンドを起動する現在の一般ユーザ権限のシェルが
> file を開こうとするので、cd できないとかなり似ています。cd したり > を使
> うには root 権限のシェルが必要なので
>
> $ sudo sh -c 'cd /root; pwd'
> /root
>
> $ sudo sh -c 'なにがし > file'
>
> など sh -c などでシェルを起動してやれば一行で書けます。たぶんこれが
> Ubuntu 流ではないかと思うのですが、昔から su - していた身としては
>
> $ sudo bash
> # なにがし > file
> # ^D
>
> などとしてしまいます。
>
> --
> 荻野 充 (おぎの みつる) ... 「萩(はぎ)」にあらず
> Key fingerprint = 7F26 5414 1805 F31B 1617 10B7 C117 07AE 1691 9BD1
>
>

--
--
There's more than one way to do it.
Daisuke YAMAGUCHI / Sasebo, JAPAN


投稿者 xml-rpc : 2011年1月25日 21:58
役に立ちました?:
過去のフィードバック 平均:(0) 総合:(0) 投票回数:(0)
本記事へのTrackback: http://hoop.euqset.org/blog/mt-tb2006.cgi/101622
トラックバック
コメント
コメントする




画像の中に見える文字を入力してください。