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

Mitsuru Ogino ogino @ verama.net
2011年 1月 25日 (火) 12:21:57 UTC


荻野です。

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



ubuntu-jp メーリングリストの案内