新しいユーザーが危険なことをするのを防ぐ方法は?


31

最近、サーバーにUbuntuサーバーをインストールして、新しいユーザーとしてLinuxを試しました。Webサーバーをセットアップする方法についてのチュートリアルに従ってchmod 777、Webサーバーディレクトリに書き込みできるようにする必要があります。

とにかく、私は彼のホームディレクトリに置いたサーバー上のいくつかのファイルを見ることができるように、1人の男の新しいアカウントを作成しました:

adduser francis

アカウントを作成した後、彼が持っているアクセス権を確認しました

groups francis

「francis:francis」と言われたので、問題ではないと思っていましたが、ubuntuはデフォルトではどのグループにも彼を含めていません。これは理にかなっています。1週間後、絶対的かつまったくの恐怖で、システムディレクトリでSUDOや混乱のようなことをすることができなくても、サーバー上の他のほとんどすべてに完全にアクセスできることがわかりました。たとえば、/ var / wwwにある私のWebサーバーファイル(したがって、php configsファイルなどに保存されているパスワード)への完全な読み取り/書き込みアクセス権がありましたが、そのディレクトリはホームディレクトリになく、私はグループに追加できませんでしたそのディレクトリにアクセスすることも、adduserを実行した後に何かに特別なアクセスを許可することもありません。

とにかく、ここで何が起こっていますか?重要なものへの彼のアクセスをどのように殺すのですか?彼は/ mediaや/ var / wwwのようなものにアクセスできないはずです。新しいユーザーは、デフォルトでは、危険なことや、すべきではないことを行うことを禁止されていると思いました。

つまり、適切に機能する必要があるディレクトリ(ホームディレクトリ、vim、nanoなど)に手動で指定するディレクトリへのアクセスのみを許可する必要があります。

ありがとうございました


30
あなたはchmod 777をやっていて、なぜ誰もがそこに書いて読むことができるのかと尋ねていますか?chmodのマニュアルページを読む
アンワー

16
ええ、777はあなたの問題です。理由はいくつかあります。
Androidデベロッパー

21
@Askerman -いいえ、あなたは777を与え、誰の缶アクセスすべてが、このに読み取りを与えてください:linux.com/learn/understanding-linux-file-permissions
AndroidのDevの

11
特にまったく新しい環境で学習している場合は、間違いを犯します。LinuxベースのOSを使用する場合、Windowsで物事がどのように機能するかについての概念を捨てることは、学ぶべき優れた方法です。許可を元に戻した後、ユーザーは、許可されてはならないことを変更できないことに注意してください。chmod他の場所で使用した場合、他の問題が発生する可能性があります。
16

8
参考までに、この質問は実際に新しい人が見つけるのに適しているため、この質問を支持しています。そして、この誤解はおそらく私たちが考えるよりも一般的です。これは、インターネット上で見つけたコマンドを(ここでも)コピーせずに、それらが何をするのかわからない理由の良い例でもあります。
アーロン

回答:


40

これは設計どおりです。さらに悪いことに。chmod 777は...「所有者、グループ内のすべての人、およびすべての人に読み取り、書き込み、実行の許可を与えたい」

それはかなりひどいです。

また、Webサーバーの場合、777は最適ではありません。755(所有者には完全なアクセス許可グループがあり、他には読み取り+実行があります)は一般的なデフォルトです、所有者(Webサーバーユーザー)に対して少なくとも読み取り/書き込み、または読み取り/書き込みの実行が必要であると述べたことから、グループ、およびユーザーの権限なし。serverfaultの適切な許可レベルについてはさらに完全な質問がありますが、640や740のようなものを検討してください。

とは言っても、ユーザーを自分の小さな世界に置くこともできます-chrootを設定して、ユーザーシステム内の自分のスペースに保持します。これを行うためのガイドが浮かんでいます-たとえば、oliの優れた答えは、必要に応じてオプションになるかもしれません。


4
軽微な点:「所有者、彼のグループの誰でも...」-ファイル所有者は必ずしもファイルグループに属している必要はありません。
alex_d

2
いいね servfaultについての正解を参照したことが気に入っています。
オタク長老

3
この状況の歴史的な専門用語は「世界で読み取り可能/書き込み可能」です。
カズ

19

基本的に、次のように分類されます。

R = 4 (read)
W = 2 (write)
X = 1 (execute)

したがって、読み取り許可のみ4、読み取りと書き込みは6、読み取りと実行は5、すべて(読み取り、書き込み、実行)は7です。これは、所有者、所有者グループの許可オクテット値を計算する方法です。 、または全員。

これらの権限をchmodファイルまたはディレクトリの場所に適用する場合、上記で計算された数値は、所有者、グループ、および全員にそれぞれオクテットを付けて、次のように適用されます。

     $ chmod _ _ _ <file or directory>
             | | |
owner--------  | |
owner's group--  |
everyone---------

したがって、自分とグループに自分が所有するフォルダーの読み取り、書き込み、実行のアクセス許可を付与したいが、もがそれを読み取れるようにしたくない場合は、次のようにします。

$ chmod 770 myDirectory

詳細については、chmodmanページを確認してください

$ man chmod

正しい順序で適切なアクセス許可を作成するために追加するビットを思い出せない場合は、おそらく読みやすいを使用することもできますchmod ugo+rwx <...>。文字が放置Uのser、G、競売O THER。r ead、w rite、e x ecute。「-」を使用して削除できます(例:)chmod go-wx <...>。これは、入力した内容を正確に追加または削除するだけです。グループ/その他のアクセスを削除chmod ugo+rwx <file>; chmod u+rwx <file> しません
ReactiveRaven

@ReactiveRavenそれは素晴らしい点です。しかし、OPは明らかに何をchmod 777したのか混乱していたので、そこで説明を行いました。
アーロン

@Zannaいいね!
アーロン

6

他の人が述べたように、アクセス許可を777に設定しないでください

ここに私が使用する便利なリファレンスシートがあります。

+-----+---+--------------------------+
| rwx | 7 | Read, write and execute  |
| rw- | 6 | Read, write              |
| r-x | 5 | Read, and execute        |
| r-- | 4 | Read,                    |
| -wx | 3 | Write and execute        |
| -w- | 2 | Write                    |
| --x | 1 | Execute                  |
| --- | 0 | no permissions           |
+------------------------------------+
You can use the octal notation, where the three digits correspond to the user, then group, then other. 
Perhaps this might help 
+------------+------+-------+
| Permission | Octal| Field |
+------------+------+-------+
| rwx------  | 700  | User  |
| ---rwx---  | 070  | Group |
| ------rwx  | 007  | Other |
+------------+------+-------+

1
いいね!これは、視覚学習者である(私のような)人にとって大きな助けになります。
アーロン

3

ログインしたユーザーとファイルを共有するために、特に何もする必要はありません。デフォルトのDebianインストールでは、ユーザーは互いのホームディレクトリにアクセスできます。

例えば、

$ ls -ld ~
drwxr-xr-x 65 zwets zwets 4096 Sep 29 12:06 /home/zwets

ホームディレクトリのアクセス許可は、システム上のすべてのユーザーの読み取り(r)およびアクセス(x)です。さらに私だけが書き込み(w)アクセス権を持っています。

また、umaskUbuntu のデフォルトでは、ユーザーが作成するファイルとディレクトリはデフォルトで誰でも読み取り可能です。あなたは、設定することができますumask077、あなたがそれを望んでいなかった場合。

これは、デフォルトの設定で、ユーザーyouがドキュメント~/README.txtを私と共有したい場合、何もyouする必要がないことを意味します。単純に表示できます。

$ who am i
zwets    pts/26       2016-09-29 08:05 (:pts/19:S.6)
$ ls -l ~you/README.txt
-rw-r--r-- 1 you you 24 Sep  8 11:23 /home/you/README.txt
$ cat ~you/README.txt
You's shared thoughts.

ファイルを編集または削除することはできませんが、書き込み許可がある場所にコピーすることはできます。その後、私はコピーを所有します:

$ echo "Adding my thoughts." >> ~you/README.txt
bash: /home/you/README.txt: Permission denied
$ rm ~you/README.txt
rm: remove write-protected regular file '/home/you/README.txt'? yeah!
rm: cannot remove '/home/you/README.txt': Permission denied
$ cp ~you/README.txt ~zwets
$ ls -l ~/README.txt
-rw-r--r-- 1 zwets zwets 24 Sep  29 14:09 /home/zwets/README.txt

AskUbuntuの別の回答で説明したように、システムのほとんどがデフォルトで誰でも読み取り可能な理由があります。ただし、共有システムでは、非所有者がホームディレクトリにアクセスできないようにすることは理にかなっています。

$ chmod o-rwx ~
$ ls -l ~
drwxr-x--- 65 zwets zwets 4096 Sep 29 12:06 /home/zwets

...明らかに多くのユーザーがデフォルトに気付いていないように-QED ;-)。ただし、ファイルのアクセス許可ではシークレットが保護されないことをユーザーに認識させる方が賢明です。


1

Ubuntuでは、すべてのユーザーがグループ「sudo」に追加されるスーパーユーザー特権を持っています。このグループに他のユーザーが追加されていないことを確認してください。

他のユーザーからファイルとディレクトリを保護するために、上記の回答でJourneyman Geek氏によって提案された許可を設定できます。

特別な権限を使用して、ファイルやディレクトリを他のユーザーから保護することもできます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.