Чи може root / superuser читати мої файли, захищені від читання?


35

На спільному хостингу Unix, якщо у мене є файл з конфіденційними даними.txt і я видаю:

chmod 600 sensitive-data.txt

Чи може користувач root ще читати мій файл? Зокрема, мені цікаво, чи безпечно зберігати свій пароль у файлі hcuc mercurial.

ОНОВЛЕННЯ

Вирішили скористатися розширенням ключів, оскільки це було дуже просто:

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 не зміг прочитати ваші файли як корінь, вони завжди можуть увійти як і ви без пароля:

$ 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

Тоді навіть я можу записати у файл та прочитати файл за допомогою 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: Попередження: Зміна файлу лише для читання, але він все ще може бути записаний

Тепер ми можемо передати файл для виводу

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

Користувачі судо мають співпрацю з групою користувачів користувача root, тому судо мають кореневу привілей.

Щоб дізнатися більше про судо

# man sudoers

Тут ми можемо побачити, що вони визначили, як звичайний користувач може мати права судо. Лише менше рядків я вже згадував.

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 , але уважно прочитайте його документацію раніше) і ніколи не розшифровуйте їх на машині, яка не знаходиться під вашим повним контролем.

(Параноїя чудова, її ніколи не вистачає ;-)

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


3

Слід також припустити, що кожен, хто, можливо, має можливість перебувати в одній кімнаті з обладнанням, може читати або писати все, що завгодно. Якщо вони дуже терплячі, вони можуть з часом зрозуміти зашифровані дані. Їм не потрібні методи бічних каналів, якщо вони можуть замінити програмне забезпечення для шифрування.


2

Так, корінь може читати захищений файл навіть тоді, коли власник не може (хоча власник, очевидно, може видалити захист і потім прочитати вміст):

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

cat: abc.txt: У дозволі відмовлено

su
cat abc.txt

123

Однак при звичайній установці root не може отримати доступ до захищених файлів у віддалених файлових системах, таких як NFS ("root squash").


+1 для згадування кореневої кабачки NFS. Однак, поки root може користуватися користувачем, власником каталогу NFS, кореневий сквош все ще не захищає.
Дженні Д

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- (ваше-сценарій-ім'я) / home / (ваше-ім’я користувача) -force

Після виконання попередніх кроків ви можете просто запустити зашифрований сценарій звідки завгодно, щоб встановити його на кроці 4 .... тобто / home / (ваше ім'я користувача) / (your-encrypted-script). ш

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.