
Ubuntu日本語フォーラム

ログインしていません。
prussianblue による投稿:
gksudoとしなければならないところをsudoとしてしまった訳ですが、決してしてはいけないと書いて有りました。『環境変数……』以下のくだりが良く理解出来なかった為、どれほど重大なミスを犯したのか自覚出来ないのですが、もう一度Ubuntuを再セットアップしてgksudoでやり直した方が宜しいのでしょうか?
まず環境変数についてですが、環境変数とは様々な設定を記憶しておくための変数です。
例えば$HOMEには、そのユーザのホームディレクトリが記憶されています。プログラムの中にはこの$HOMEの場所を読み取り、そこに設定ファイルを生成したりするものがいます。
sudoを使った場合、この$HOMEにはそのユーザのホームディレクトリが記憶されたままになります。
これにより、sudoで呼び出したプログラムがユーザのホームディレクトリに設定ファイルを作成したり、ということが起き得ます。
gksudoの場合は$HOMEを~rootに設定します。~rootはroot(管理者ユーザ)のホームディレクトリを意味しており、$HOMEに設定ファイルを作るようなプログラムを起動したとしてもユーザのホームディレクトリに設定ファイルが生成されるということが起きません。
sudoで呼び出したプログラムは管理者が呼び出したプログラムとなるため、設定ファイルが生成される場合、管理者ユーザのファイルとなります。パーミッション(権限)の設定にもよりますが、一般ユーザが同じプログラムを起動した際に、設定変更できないなどの影響がでる可能性があります。
これが再インストールが必要なほど致命的な現象化というとそうではなくて、sudoを使って所有者を変更すればOKです。
ちょっと試してみた感じでは今のgeditはsudoで呼び出しても管理者所有のファイルをユーザのホームディレクトリに生成するということは無いように見えましたが検証は十分ではないので以下のコマンドを使って確かめてみてください。
find $HOME -user root find $HOME -group root
findコマンドはあるディレクトリを起点に、与えられた条件に一致するファイルを検索するコマンドです。詳細は端末でman findとして確認してみて下さい。
このコマンドを実行してuser(所有ユーザ)がrootになっていたり、group(所有グループ)がrootになっているファイルがあれば
sudo find -user root -exec chown prussianblueさんのユーザ名:prussianblueさんのグループ名 {} \;
sudo find -group root -exec chown prussianblueさんのユーザ名:prussianblueさんのグループ名 {} \;として、所有者、および、グループを変更して下さい。
例えばユーザ名がhmatsueで、グループ名がhmatsueの場合、
sudo find -user root -exec chown hmatsue:hmatsue {} \;
sudo find -group root -exec chown hmatsue:hmatsue {} \;となります。
ユーザ名やグループ名がわからない場合は、
ls -ld $HOME
とすることで確認できるかと思います。
オフライン
>hmatsue様
お返事有り難う御座います。今回のご説明を拝読した上で、先の参照先を確認すると、少し理解が増した気がします。初めてのLinuxディストリビューション経験で、戸惑うことも多いですが、一歩ずつ学んでゆこうと思います。
オフライン