web-dev-qa-db-ja.com

root /スーパーユーザーは、読み取り保護されたファイルを読み取ることができますか?

共有されたUNIXホスティングで、sensitive-data.txtファイルがあり、次のコマンドを発行した場合:

chmod 600 sensitive-data.txt

Rootユーザーは引き続き私のファイルを読み取ることができますか?具体的には、自分のパスワードをMercurialのhgrcファイルに保存しても安全かどうか疑問に思っています。

[〜#〜]更新[〜#〜]

セットアップが非常に簡単だったので、メキュリアルキーリング拡張機能を使用することにしました。

pip install Mercurial_keyring

そして、hgrcに追加します。

[extensions]
Mercurial_keyring =

しかし、私はまだこの質問への答えに興味があります。

36
User

はい、ルートは次のことができます:

$ echo Hello you\! > file
$ chmod 600 file
$ ls -l file
-rw------- 1 terdon terdon 11 Feb 27 02:14 file
$ Sudo -i
# cat file
Hello you!

いずれにしても、rootがファイルをrootとして読み取れなかったとしても、パスワードなしでいつでもログインできます。

$ whoami
terdon
$ Sudo -i
[Sudo] password for terdon: 
# whoami 
root
# su - terdon
$ whoami
terdon

したがって、rootsu(またはSudo -iu username)そして、まるであなたのように何でもできるようになります。

62
terdon

常にroot(およびCAP_DAC_OVERRIDEおよびCAP_DAC_READ_SEARCH)はすべてを実行できますが、LSM(SELinux、AppArmorなど)がそれを行えない場合を除きます。

つまり、すべてのキーストロークを読み取ることができると想定する必要があります。パスワードは本当に安全ではありません。深刻なレベルのセキュリティが必要な場合は、自分で完全に制御されている(他の誰も使用していない)システムを使用する必要があります。

23
Hauke Laging

はい、rootは何でもできるすべての特権を持っています

ここで、ディレクトリ名テストを作成し、ファイルlonston.txtに触れてファイルをリストしたことがわかります。

root@system99:/tmp# mkdir test && touch lonston.txt && ls -l
total 4
-rw-r--r-- 1 root root    0 Feb 27 16:35 lonston.txt
drwxr-xr-x 2 root root 4096 Feb 27 16:35 test

次に、ファイルとディレクトリの権限を000を使用してnull権限に変更し、権限を確認するためにリストしました

root@system99:/tmp# chmod 000 lonston.txt && chmod 000 test && ls -l
total 4
---------- 1 root root    0 Feb 27 16:35 lonston.txt
d--------- 2 root root 4096 Feb 27 16:35 test

次に、ファイルに書き込み、catを使用してファイルを読み取ることもできます

root@system99:/tmp# echo "Yes root have all Privileges than other user's, let we see the permission of user's too" > lonston.txt 

root@system99:/tmp# cat lonston.txt 
Yes root have all Privilages than other user's, let we see the permission of user's too

私もd ---------(null)000権限を持つディレクトリに入ることができます。rootでさえ、読み取りまたは書き込み権限がありません。

root@system99:/tmp# cd test/
root@system99:/tmp/test# pwd
/tmp/test

ファイルやフォルダーを作成することもできます。

root@system99:/tmp/test# touch /tmp/test/lonston/testdir/babin.txt

root@system99:/tmp/test# ls -l /tmp/test/lonston/testdir/
total 0
-rw-r--r-- 1 root root 0 Feb 27 16:39 babin.txt

これで、400の権限を確認できます

root@system99:/tmp/test# chmod 400 babin.txt

ファイル権限を確認するためのリスト

root@system99:/tmp/test# ls -l
total 8
-r-------- 1 root root   34 Feb 27 16:42 babin.txt
drwxr-xr-x 3 root root 4096 Feb 27 16:38 lonston

Vim imを使用して、ファイルbabin.txtに1行追加しました

root@system99:/tmp/test# vim babin.txt

しかし、vimモードではW10:警告:読み取り専用ファイルを変更しますが、書き込み可能です

これで、ファイルを出力用にcatできます

root@system99:/tmp/test# cat babin.txt 
hi this is the write persmission 
this is added while the file have 400 permission

次に、rootユーザーから通常のユーザーにログアウトし、rootで何も許可されていないファイルをリストしました

root@system99:/tmp# exit
exit

/ tmpディレクトリに移動します

sysadmin@system99:~$ cd /tmp/
sysadmin@system99:/tmp$ ls -l
total 8
---------- 1 root root   88 Feb 27 16:36 lonston.txt
d--------- 2 root root 4096 Feb 27 16:35 test

しかし、通常のユーザーからファイルを読み取っている間は、

sysadmin@system99:/tmp$ cat lonston.txt 
cat: lonston.txt: Permission denied

sysadmin@system99:/tmp$ cd test/
cat: test/: Permission denied

それだけです、rootユーザーの力を手に入れてください

一般ユーザーの場合、root権限が必要な場合、Sudoを使用する必要があります。Sudoパスワードが要求されます。

例:

sysadmin@system99:/tmp$ Sudo cat lonston.txt 
[Sudo] password for sysadmin: 
Yes root have all Privilages than other user's, let we see the permission of user's too

Sudoユーザーはrootユーザーのグループと連携しているため、どのSudoにroot特権があります。

須藤についてもっと知りたい

# man sudoers

ここでは、通常のユーザーがSudo権限を持つことができると定義されていることがわかります。

sysadmin@system99:/tmp$ Sudo cat /etc/sudoers

# Members of the admin group may gain root privileges
%admin ALL=(ALL) ALL

# Allow members of group Sudo to execute any command
%Sudo   ALL=(ALL:ALL) ALL

完全にルートでもファイルの読み取り、編集、削除ができます。読み取り権限がありません。

11
Babin Lonston

従来のUnixでは、rootは強力です。特に、rootは任意のファイルを読み取ることができ、プログラムが内部で実行していることをスヌープすることもできます。データがreally機密である場合は、暗号化されたコピーのみを保持します(たとえば、 GNUプライバシーガード を検討しますが、そのドキュメントを読んでください)注意深く)、そして決して完全に制御されていないマシンでそれを復号化します。

(パラノイアは素晴らしいです、それが十分であることは決してありません;-)

真剣に、データの漏えいが引き起こす可能性のあるコストについて、そしてセキュリティのためにどれだけの準備ができるかについて、慎重に考えてください。完璧なセキュリティは不可能です。もう少しセキュリティを確保するために、コストは急速に増加し始めます。しかし、実際にはセキュリティを向上させない高価な手段の罠に陥らないように注意してください...

8
vonbrand

また、ハードウェアと同じ部屋にいる可能性があるだれでも、必要なものを読み書きできることも前提としています。非常に忍耐強い場合は、暗号化されたデータを最終的に理解できます。暗号化ソフトウェアを置き換えることができる場合、サイドチャネル方式は必要ありません。

3
user130144

Rootまたは他のユーザーがファイルを読み取れないようにするには、ファイルを暗号化する必要があります。ファイル暗号化は、複雑なファイルシステム操作に対処する必要がないようにする場合に検討する非常に便利なオプションです。

暗号化オプション:

  1. 通常のファイルを暗号化し、自分以外の全員がそれらを表示できないようにする
  2. シェルスクリプトを暗号化し、暗号化されたバージョンを実行可能にしますが、誰もがスクリプトを変更または表示できないようにします。

オプション1を選択した場合、ファイルを暗号化する方法は次のとおりです:

cat (your-file) | openssl aes-128-cbc -a -salt -k "(specify-a-password)" > (your-file).enc

上記のファイルを復号化するには、次のようなコマンドを実行します。

cat (your-file).enc | openssl aes-128-cbc -a -d -salt -k "(specify-the-password)" > (your-file).dec

-上記をスクリプトに入れて、履歴に表示されないようにすることができます。または、「-k」パラメーターを削除するだけで、opensslにパスワードの入力を求めるプロンプトが表示されます。

オプション2を選択した場合は、スクリプトをコピーして次のサイトに貼り付けてください:

http://www.kinglazy.com/Shell-script-encryption-kinglazy-shieldx.htm

スクリプトをそのサイトに送信すると、Zipファイルがすぐに作成されます。リンクをZipファイルにコピーし、UNIXボックスに移動して、次の手順を実行します。

  1. wgetリンク先のZIPファイル
  2. 新しくダウンロードしたZipファイルを解凍します
  3. cd/tmp/KingLazySHIELD
  4. ./install.sh/var/tmp/KINGLAZY/SHIELDX-(your-script-name)/ home /(your-username)-force

上記の手順を完了すると、手順4.でインストールするように指定した場所から暗号化されたスクリプトを実行できます。 /home/(your-username)/(your-encrypted-script).sh

2
CalmingT

はい、所有者が保護されていない場合でも、ルートは保護されたファイルを読み取ることができます(所有者は明らかに保護を解除してコンテンツを読み取ることができます)。

echo "123" > abc.txt
chmod 000 abc.txt
cat abc.txt

cat:abc.txt:権限が拒否されました

su
cat abc.txt

123

ただし、通常のセットアップでは、ルートはNFSなどのリモートファイルシステム上の保護されたファイルにアクセスできません(「ルートスカッシュ」)。

2
h22