Может ли root / superuser читать мои файлы, защищенные от чтения?

35

На общем хостинге Unix, если у меня есть файл sensual-data.txt и я выдаю:

chmod 600 sensitive-data.txt

Может ли пользователь root по-прежнему читать мой файл? В частности, мне интересно, безопасно ли хранить мой пароль в файле mercurial hgrc.

ОБНОВИТЬ

Решили использовать расширение mecurial keyring, так как его было очень легко настроить:

pip install mercurial_keyring

и затем добавьте в hgrc:

[extensions]
mercurial_keyring =

Однако я все еще заинтересован в ответе на этот вопрос.

пользователь
источник

Ответы:

62

Да, root может:

$ 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), и затем сможете делать что-либо вообще, как будто это вы.

Тердон
источник
23

Всегда предполагайте, что root(и любой другой пользователь / процесс с CAP_DAC_OVERRIDEи CAP_DAC_READ_SEARCH) может делать все, если только LSM (SELinux, AppArmor или аналогичный) не мешает ему это сделать.

Это также означает, что вы должны предполагать, что все ваши нажатия клавиш могут быть прочитаны. Пароли не очень безопасны. Если вы хотите серьезного уровня безопасности, то вы должны использовать систему, которая полностью контролируется вами (и даже не используется кем-либо еще).

Хауке Лагинг
источник
Это на самом деле моя проблема с возможностями, так как они в настоящее время реализованы. Поскольку они не указывают цели, вам нужно иметь принудительное использование типов, которое заменяет возможности (такие как SELinux), чтобы это не происходило. Предоставление одному пользователю CAP_DAC_OVERRIDEдает им одним махом все привилегии, которые им необходимы для отмены любого другого механизма безопасности в системе. CAP_DAC_OVERRIDEв основном CAP_DO_WHATEVER_YOU_WANT.
Братчли
10

Да, у 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, и перечислил, чтобы увидеть разрешение

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

Тогда даже я могу написать в файл и прочитать файл с помощью кошки

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 я добавил 1 строку в файл babin.txt

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

Но, находясь в режиме vim, он заметит нас W10: Предупреждение: изменение файла только для чтения, но он все еще доступен для записи

Теперь мы можем катать файл для вывода

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

Затем я вышел из системы от пользователя 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

Если вы являетесь обычным пользователем, если вам нужны права суперпользователя, нам нужно использовать 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 есть совместная работа с группой корневых пользователей, поэтому у 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

В целом, мы можем читать, редактировать или удалять файлы, даже root. У них нет разрешения на чтение.

Бабин Лонстон
источник
2
Почему в этом ответе так мало голосов? Он охватывает практически все случаи, которые могут возникнуть с примерами.
Foo Bar
8

В традиционном Unix рут всемогущ. В частности, root может читать любой файл и даже отслеживать, что ваши программы делают внутри. Если данные действительно конфиденциальны, храните только зашифрованные копии (рассмотрите, например, GNU Privacy Guard для этого, но внимательно прочитайте их документацию) и никогда не расшифровывайте их на компьютере, который не находится под вашим полным контролем.

(Паранойя прекрасна, ее никогда не бывает достаточно ;-)

Серьезно, тщательно продумайте стоимость, которую может вызвать утечка данных, и, следовательно, сколько вы будете готовы заплатить за безопасность. Совершенная безопасность невозможна, чтобы получить немного больше безопасности, стоимость начинает быстро расти. Но будьте осторожны, чтобы не попасть в ловушку дорогостоящей меры, которая действительно не повышает безопасность ...

vonbrand
источник
3

Следует также предположить, что любой, кто может иметь возможность находиться в одной комнате с оборудованием, может читать или писать все, что захочет. Если они очень терпеливы, они могут в конечном итоге понять зашифрованные данные. Им не нужны побочные методы, если они могут заменить программное обеспечение для шифрования.

user130144
источник
2

Да, root может читать защищенный файл, даже если владелец не может (хотя владелец, очевидно, может снять защиту и затем прочитать содержимое):

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

cat: abc.txt: В доступе отказано

su
cat abc.txt

123

Однако при обычной установке root не может получить доступ к защищенным файлам в удаленных файловых системах, таких как NFS («root squash»).

h22
источник
+1 за упоминание корневого сквоша NFS. Однако до тех пор, пока пользователь root, владеющий NFS-установленным каталогом, может подойти пользователю root, сквош root по-прежнему не защищает.
Дженни Д
2

Чтобы предотвратить чтение ваших файлов пользователем 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 / (ваше-имя-пользователя) / (ваш-зашифрованный-скрипт). ш

CalmingT
источник