一般的に、Linux でファイルを作成すると、ファイルの所有者とグループが作成者によって設定されることがわかります。たとえば、usera
実行後にユーザーがいます。
usera@srv1:$touch 1.txt
このファイルの所有者は次のuseraです。
usera@srv1:$ll
-rw-r--r-- 1 usera usera 0 2012-07-25 14:29 1.txt
しかし、今の結果は次のようになります。
-rw-r--r-- 1 root usera 0 2012-07-25 14:29 1.txt
タッチコマンドだけでなく、他の人も同じ問題を抱えているようです。たとえば、次のようにvim
usera の家に新しいファイルを作成する場合:
usera@srv1:$ vim a.txt
編集画面に移動できますが、保存することはできません。エラーメッセージは、ファイルへの書き込み権限がないことと同じです。
それでは、私たちのサーバーで何が起こっているのでしょうか?サーバーはUbuntu 11.04 64ビットです。
追加的ですが、潜在的に役立つ情報:
新しく作成されたすべてのユーザーにも同様の問題があります。usera
はいsudoer
、しかし、新しい一般ユーザー()を作成し、sudo createuser xxx
パスワードを割り当て、この新しいアカウントでログインすると同じです。
答え1
この症状が現れる唯一の理由は次のとおりです。説明した段階でtouch
(そしておそらく他の多くのツール)setuidのルートですが、だからではありません。
ls -lH "$(which touch)"
端末でコマンドを実行してみてください。最初の実行ビットですか、x
それともs
?s
(たとえば)の場合は、-rwsr-xr-x
ルートインストールを見ているようです。気づくもしシステムが損傷している場合、ls
出力(またはその問題に対する他のツール)が現実を正確に表現していると必ずしも信頼できません。$(which touch)
シェルがバイナリのフルパスであると考えるすべてのパスに拡張されるため、実際のパスの前にあるtouch
間違った場所で迷子になったケースをキャプチャし、シンボリックリンク(この場合)のシンボリックリンクを逆参照します。 、シンボリックリンクの名前が表示されますが、ファイルのプロパティはシンボリックリンクターゲットから来ます。touch
$PATH
-H
ls
そうでなければ、あなたのシステムは権限の面で非常にひどく損傷しています。
vim
また、保存コマンドを実行するまで、ファイルが実際には生成されないことに注意してください。
システムが損傷した場合、唯一の本当の解決策クリーンアップして再構築し、バックアップからデータと構成を慎重に復元します。 (バックアップはお持ちですか?)原則として、ルーティングされたシステムを回復することは確かに技術的に可能ですが、価値よりも問題が多く、何かを逃すのは簡単で、再インストールよりも確かに簡単ではありません。これには、次から始まるタスクが含まれます。信頼できる、読み取り専用メディア、既存のパーティションをいくつかの代替ルートディレクトリ(/ mntなど)の下の共通の場所にマウントし、各ディレクトリ、ファイル、権限ビットなどを慎重に調べて、例外を見つけて信頼できるコピーからコピーします。疑わしいように見えるすべてのコンテンツ。これには実際に同じ設定が必要です信頼できるシステム比較君は何も信じられない感染したホストから。
答え2
touch
バイナリがsetuidルートのようです。
次のコマンドを使用してこれを確認してください。
$ ls -l `which touch`
-rwxr-xr-x 1 root root 64192 Jan 8 2012 /bin/touch
# ^
s
ラベル付き列に1つ以外のものがある場合、x
ファイルは実際にはsetuidルートです。chmod u-s `which touch`
rootとして実行することでこの問題を解決できますsudo
。
ただし、システムにバックドアなどがあることを確認することを検討する必要があります。任意のバイナリがsetuidの場合、誰かが侵入して無害なバイナリをいくつかの「追加」機能を含むsetuidバリアントに置き換えた可能性があります。
答え3
a.txtへの読み取りアクセス権があるため、vimはそのファイルを開くことができます。ファイルが読み取り専用であることを示し、変更を開始すると警告します(ただし、メモリバッファの編集は許可されています)。
保存しようとすると、書き込み権限がなく、保存に失敗します。もちろん、vimに書き込み権限を持つ他のファイル名/ディレクトリに保存するように指示することもできます。
答え4
はい、問題はわずかなタッチやその他の問題のあるコマンドです。
-rwsr-xr-x 1 ルート ルート 64192 2012 年 1 月 8 日/bin/touch
根本的な原因を見つけましたが、どのくらいのバイナリが影響を受けるかわからないので、システム全体を再構築する必要があります。私たちはまだこの問題の原因を特定するよう努めています。内部専用サーバーであり、インターネットに公開されません。
助けてくれてありがとう。