共有されたUNIXホスティングで、sensitive-data.txtファイルがあり、次のコマンドを発行した場合:
chmod 600 sensitive-data.txt
Rootユーザーは引き続き私のファイルを読み取ることができますか?具体的には、自分のパスワードをMercurialのhgrcファイルに保存しても安全かどうか疑問に思っています。
[〜#〜]更新[〜#〜]
セットアップが非常に簡単だったので、メキュリアルキーリング拡張機能を使用することにしました。
pip install Mercurial_keyring
そして、hgrcに追加します。
[extensions]
Mercurial_keyring =
しかし、私はまだこの質問への答えに興味があります。
はい、ルートは次のことができます:
$ 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
したがって、root
はsu
(またはSudo -iu username
)そして、まるであなたのように何でもできるようになります。
常にroot
(およびCAP_DAC_OVERRIDE
およびCAP_DAC_READ_SEARCH
)はすべてを実行できますが、LSM(SELinux、AppArmorなど)がそれを行えない場合を除きます。
つまり、すべてのキーストロークを読み取ることができると想定する必要があります。パスワードは本当に安全ではありません。深刻なレベルのセキュリティが必要な場合は、自分で完全に制御されている(他の誰も使用していない)システムを使用する必要があります。
はい、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
完全にルートでもファイルの読み取り、編集、削除ができます。読み取り権限がありません。
従来のUnixでは、rootは強力です。特に、rootは任意のファイルを読み取ることができ、プログラムが内部で実行していることをスヌープすることもできます。データがreally機密である場合は、暗号化されたコピーのみを保持します(たとえば、 GNUプライバシーガード を検討しますが、そのドキュメントを読んでください)注意深く)、そして決して完全に制御されていないマシンでそれを復号化します。
(パラノイアは素晴らしいです、それが十分であることは決してありません;-)
真剣に、データの漏えいが引き起こす可能性のあるコストについて、そしてセキュリティのためにどれだけの準備ができるかについて、慎重に考えてください。完璧なセキュリティは不可能です。もう少しセキュリティを確保するために、コストは急速に増加し始めます。しかし、実際にはセキュリティを向上させない高価な手段の罠に陥らないように注意してください...
また、ハードウェアと同じ部屋にいる可能性があるだれでも、必要なものを読み書きできることも前提としています。非常に忍耐強い場合は、暗号化されたデータを最終的に理解できます。暗号化ソフトウェアを置き換えることができる場合、サイドチャネル方式は必要ありません。
Rootまたは他のユーザーがファイルを読み取れないようにするには、ファイルを暗号化する必要があります。ファイル暗号化は、複雑なファイルシステム操作に対処する必要がないようにする場合に検討する非常に便利なオプションです。
暗号化オプション:
オプション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ボックスに移動して、次の手順を実行します。
上記の手順を完了すると、手順4.でインストールするように指定した場所から暗号化されたスクリプトを実行できます。 /home/(your-username)/(your-encrypted-script).sh
はい、所有者が保護されていない場合でも、ルートは保護されたファイルを読み取ることができます(所有者は明らかに保護を解除してコンテンツを読み取ることができます)。
echo "123" > abc.txt
chmod 000 abc.txt
cat abc.txt
cat:abc.txt:権限が拒否されました
su
cat abc.txt
123
ただし、通常のセットアップでは、ルートはNFSなどのリモートファイルシステム上の保護されたファイルにアクセスできません(「ルートスカッシュ」)。