/ usrの所有者はrootでなければなりませんか?

/ usrの所有者はrootでなければなりませんか?

インストール後MySQLデータベースへSUSEを開く/usr/binすべてのファイルの所有者が「mysql」グループの「mysql」ユーザーに変更されたことを確認しました。たぶん私に間違いがあるかもしれません。最悪の問題は/usr/bin/sudo命令です。明らかに動作しませんが、所有権を取り戻しました。(ログインしました。) 今します。

すべてのファイルの所有者を/usr/bin次のように変更する必要があります。それとも他のプログラムが誤動作する可能性がありますか? 「権限」タブに「UID設定」オプションも表示する必要がありますかsudo

答え1

はい、以下のすべてのファイルは/usrルートが所有する必要があります。ただし、/usr/localサイトのポリシーによっては、以下のファイルがルートに属している場合とそうでない場合があります。ルートにシステム管理者だけが変更できるファイルがあるのは正常です。

ルートが絶対に所有する必要があるいくつかのファイルがあります。それ以外の場合、システムは正常に動作しません。これらはすべて設定値ルート実行可能ファイルは、誰が呼び出したかに関係なく、ルートとして実行されます。一般的な setuid ルートバイナリには以下が含まれます。suそしてsudo(認証後に別のユーザーとして他のプログラムを実行するプログラム)、(sudoedit任意のプログラムを実行する代わりにファイルを編集するプログラムsudo)、ユーザーアカウントを変更するプログラム(passwd、、、)。chshchfn

さらに、多くのプログラムは追加のグループ権限で実行し、そのグループ(およびルート)が所有し、setgidビットを設定する必要があります。

パッケージデータベースから適切な権限を復元でき、復元する必要があります。手動で修正しようとすると、何かを見逃して診断するのが難しいエラーが残ります。次のコマンドを実行します。

rpm -qa | xargs rpm --setugids --setperms

答え2

編集:私の(おそらく不完全な)リストから調整するのではなく、権限と所有権を変更する方法については、Gilesの答えを参照してください。

通常、他のグループに属するいくつかのファイルがあります。私のシステムからインポートした内容:

$ lsb_release -d
Description:    Debian GNU/Linux 6.0.9 (squeeze)

$ find /usr/bin -not -group root -exec ls -g {} \; | awk '{print $NF,$3}'
/usr/bin/crontab crontab
/usr/bin/mlocate mlocate
/usr/bin/mutt_dotlock mail
/usr/bin/expiry shadow
/usr/bin/mail-unlock mail
/usr/bin/wall tty
/usr/bin/mail-touchlock mail
/usr/bin/bsd-write tty
/usr/bin/screen utmp
/usr/bin/dotlockfile mail
/usr/bin/chage shadow
/usr/bin/ssh-agent ssh
/usr/bin/mail-lock mail

SUIDビットを持つファイル:

$ find /usr/bin -perm -4000
/usr/bin/newgrp
/usr/bin/sudoedit
/usr/bin/chfn
/usr/bin/chsh
/usr/bin/gpasswd
/usr/bin/passwd
/usr/bin/sudo

関連情報