Чи залишаються користувацькі файли приватними, коли в Ubuntu існують два користувачі sudo?


31

Я ділюсь своїм персональним ПК Ubuntu з одним із колег.

Я створив іншого користувача з іншим паролем (він звичайно знає) і додав його до sudoerсписку.

Враховуючи, що sudoв одній системі Ubuntu є два користувачі:

  • Чи приватні файли (вказані власниками та дозволи) будь-якого з цих користувачів все ще є приватними?

  • Чи можу я змінити файли свого колеги за допомогою sudoкоманд, навіть sudo su, або навпаки?



6
Ubuntu дозволяє зробити домашню папку зашифрованою під час створення користувача. Це може бути саме ця функція, необхідна тут.
Thorbjørn Ravn Andersen


@ ThorbjørnRavnAndersen Коли я зашифрував домашню папку, чи можу я все-таки отримати доступ до файлів всередині так само зручно, як і раніше?
Jizhou Huang

3
Чому ви не видалите доступ sudo від іншого користувача, і ви станете єдиним адміністратором? З яких би причин не потребував інший користувач sudo, ви можете виправити, щоб вони не потребували судо (монтаж, друк, автоматичні оновлення тощо)
Xen2050

Відповіді:


51

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

Це найгірше налаштування, яке ви можете мати, якщо хочете конфіденційність користувача. Вам слід остаточно ознайомитися з тим, як працює управління користувачами в Linux. Ось кілька статей, з яких можна почати:

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

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


2
Хоча переконайтеся, що sudo -iне працює :)
Wilf

3
Хоча найпростіша і найпоширеніша конфігурація судорів полягає в тому, щоб дозволити списку користувачів тимчасово мати привілеї root, але sudoers дозволяє чітко контролювати доступ. Наприклад, ви можете вказати, що користувач може виконувати лише певні певні команди як root. Якщо ви подбаєте про те, щоб дозволити користувачеві виконувати лише команди, які не дозволяють створювати кореневу оболонку або створювати постійний кореневий доступ поза рамками команд, які ви хочете дозволити, ви можете уникнути надання їм кореневого доступу взагалі.
bgvaughan

19

Проста альтернатива - зберігати ваші приватні дані у зашифрованому файлі (це може бути файл архіву tar, який ви шифруєте, наприклад, gpg). Ви повинні пам'ятати, щоб перезаписати та видалити чіткі текстові файли після їх перегляду.

Ще одна альтернатива для всіх вас, хто має доступ до комп'ютера та доступу до sudo (root), - це використовувати зашифрований будинок та зашифрований своп.

Але це не допоможе, якщо ви одночасно входите в систему. Насправді вам доведеться перезавантажити комп’ютер, щоб позбутися від файлів у чіткому текстовому форматі навіть із зашифрованим домом.


Загалом безпека дуже складна, і єдина система користувача з зашифрованим диском (LVM з шифруванням) була б найпростішим способом зберегти безпеку.

  • Не зберігайте конфіденційні приватні дані на спільному комп'ютері
  • Не зберігайте приватні дані на комп’ютері, який належить вашому роботодавцю

3
Контейнер dm-crypt / LUKS не повинен турбуватися про перезапис файлів прозорого тексту (за винятком тимчасових файлів будь-яких додатків та своп) або про один зашифрований каталог ~ / .Private зecryptfs-mount-private
Xen2050

6
Це навіть не захистить вас від нападів злих покоївок: інший користувач судо може змінити систему, щоб надати вам свою парольну фразу. Таке запитання слід читати так: "Я підозрюю, що мій колега є російським шпигуном. Чи повинен я дати йому права на судо на моєму комп'ютері?"
sleblanc

А як щодо віртуальної машини із зашифрованим зображенням диска? blogs.oracle.com/scoter/…
приблизно

1
Якщо вам потрібна конфіденційність, вам потрібна єдина користувацька система, іншими словами, жоден інший користувач, безумовно, немає іншого користувача sudo. Ubuntu LVM з системою шифрування вразливий до злих нападів служниці. І все-таки я думаю, що це краще, ніж інші прості альтернативи, включаючи зашифрований будинок. Звичайно, за бажанням ви можете мати зашифрований диск та зашифрований будинок та єдину систему користувача, щоб зробити це складніше для зловмисника, наприклад, за цим посиланням iso.qa.ubuntu.com/qatracker/milestones / 363 / builds / 126342 /…
sudodus

Все, що потрібно зробити новому користувачу root, - це встановити корінний корінь простору ядра, як діаморфін. Навіть не потрібно турбуватися з хаками користувачів LD_PRELOAD: просто зробіть простий реєстратор натискань клавіш і перекиньте його на деякі сценарії python, щоб зробити кілька нечітких сегментацій K-засобів на основі часу / групування набору тексту, а також деякого аналізу тексту та зроблено. Тепер у вас є пароль користувача для користувача, і він, швидше за все, може отримати їх особисті дані.
Хмара

8

Після того, як ви можете отримати rootдозвіл (наприклад , з використанням sudo, suі т.д.).
Ви маєте повний доступ до кожного файлу в системі.

Тож обидва користувачі, які мають sudoдозвіл та можуть rootкористуватися ними sudo bash, матимуть повний доступ до кожного файлу в системі

Відповідно до цього питання в SE-Security: Можливо, ви зможете змінити SELinux(що не є Ubuntu), щоб обмежити rootдоступ:

Якщо ваше запитання: "чи можу я це зараз легко та безпечно зробити?" відповідь - ні. Якщо у вашій відповіді "Я готовий дізнатися про SELinux, збиваюся з бруду своїм дистрибутивом і мирився з великою кількістю речей, які не працюють", відповідь - це можливо обмежити корінь набагато більше, ніж середня установка. Однак, це ні в якому разі не робить вас невразливими до подвигів - це не робить неможливим для користувача обхід цього додаткового контролю доступу ні в програмному, ні в фізичному відношенні.


2
Ви можете обмежити root за допомогою apparmor та selinux, однак, хтось із повним корінтовим доступом або доступом через оболонку відновлення або живий компакт-диск, з будь-якою системою (apparmor чи selinux) може змінити його назад.
Пантера

1
Навіть якщо ви використовуєте SELinux або такий для обмеження того, що root може робити безпосередньо, вони все одно зможуть змінити утиліти, які користувачі запускають самі. І якщо вони, можливо, зможуть запустити будь-які оновлення, їм буде потрібен доступ для зміни бінарних файлів у системі ...
ilkkachu

5

Щоб зробити те, що інші відповіді, про які вже було сказано, цілком зрозуміло: що інший користувач не лише «корінь стільки, скільки ви» (відповідь Videonauth), він також може стати вами (перейти на ваш обліковий запис користувача) .

Це тому, що за допомогою привілеїв суперпользователя можна перейти на будь-який рахунок.

Ви, мабуть, знаєте

sudo su

що є одним із варіантів відкриття кореневої оболонки, якщо для кореня не встановлено пароль (тому ви не можете просто увійти як корень безпосередньо).

suє коротким для "користувач комутації". До якого користувача він переходить? Нічого не зазначено, правда? Але зі сторінки man, ми можемо дізнатися, що:

Запрошений без імені користувача, він за замовчуванням стає користувачем.

Отже, це ефективно

sudo su root

якщо ви не перейменували rootщось інше.

Якщо ви просто запустите su <someuser>, вам буде запропоновано пароль. Отже, якщо ви запускаєте su root, вам буде запропоновано пароль root (який за умовчанням не існує в Ubuntu, тому ви не можете ввійти (зауважте, що не встановлений пароль означає, що немає засобів для входу через пароль, який є відрізняється від того, що пароль є порожнім рядком)). Але якщо ви запустите sudo su root, вам буде запропоновано власний пароль. І вам це лише запропонують sudo. Отримавши sudoваш пароль, він виконує команду, яку він отримав, як параметри з правами суперпользователя. Оскільки користувач може перейти на будь-який обліковий запис, коли він має привілеї суперпользователя, запит на введення пароля не потрібен.

Так виконуючи

sudo su <yourusername>

, інший sudoer може увійти як і ви.


+1; Так, я не згадував про це, щоб не викликати плутанину, поле захисту машини належним чином широке і наповнене камінням, з яким можна боротися. Ще гарне доповнення до того, що вже було дано як відповіді.
Videonauth

Не впевнений, але чи не sudo suзавжди за замовчуванням UID 0 та GUID 0? Якщо так, це не має значення, як ви назвали "root".
Videonauth

@Videonauth Ви маєте рацію з другим реченням у своєму другому коментарі. Це, однак, саме та причина, що я включив вирок, який ви критикуєте. Якщо ви перейменовуєте rootв john, sudo suтепер це еквівалентно sudo su johnта більше не потрібно sudo su root.
UTF-8

3

Можна обмежити програми, які можна запустити, використовуючи ескалацію привілеїв sudo, відредагувавши файл sudoers ( /etc/sudoers).

Дивіться прийняту відповідь на це запитання в Super User для отримання додаткової інформації, а також тут, на Unix та Linux . Дивіться відповідь slm щодо пропозиції щодо обмеження привілеїв у /etc/sudoers.

Також перевірте сторінку sudoers man, набравши текст man sudoersі не забудьте перевірити його. Пам'ятайте, що при безперебійному доступі до Sudo користувач може повністю себе представляти будь-якому іншому користувачеві. наприклад, якщо користувач fooповинен запустити команду

sudo exec su - bar

Тоді вони зможуть діяти як користувачі barз усіма привілеями цього користувача.


6
Зверніть увагу , що певні sudoersлінії , показані в ОДС в і mtak в відповідях не працюють , щоб дати можливість виконати будь - які дії , а не інші, так як це тривіально просто використовувати їх , щоб виконати будь-яку команду. (Див. Коментарі до кожної з цих відповідей для детальних пояснень того, чому.) Ця відповідь може не бути абсолютно помилковою, оскільки іноді можливо дозволити користувачам використовувати sudoзапускати певні команди як корінь, не роблячи їх ефективно адміністраторами. Але зробити це правильно дуже важко .
Елія Каган

@EliahKagan Правильно. Було б ретельно переконатися, що ви не дозволяєте їм налагодити механізм, який дозволить виконувати будь-яку команду. Звичайно, це залежить від рівня довіри, який ви надаєте іншій людині.

1
@EliahKagan Звідси спонукання прочитати сторінку man і перевірити будь-яку реалізацію. Обмеження користувача з привілеєм sudo можливо. Однак, як ви зазначаєте, це не повністю безпечне рішення, і певний рівень довіри повинен бути покладений на користувачів, яким надаються права на sudo. Цікаво побачити голоси для відповіді, що рекомендує використовувати механізм (записи файлів sudoers), який спеціально розроблений з метою обмеження обсягу команди sudo.
чарівник

Я думаю, що мова не йде про рекомендацію використовувати механізм побудови, тому дозвольте мені перейти до того, яку конструктивну критику я міг би дати вам за вашу відповідь. 1) Він містить деякі друкарські помилки і погано сформований і виглядає дивно, коли читаєш його, що саме по собі можна виправити дуже легко. 2) ви вказуєте на інші відповіді, надані за межами Ask Ubuntu , тут вам слід прийняти істотні частини як блок-цитати та розмістити їх тут, зробивши ваші посилання частиною цитат, щоб вказати на джерела, з яких ви їх взяли. Сподіваюся, це допоможе покращити вашу відповідь.
Videonauth

А оскільки у мого попереднього коментаря у мене не вистачає персонажів: 3) Ви можете трохи глибше пояснити, вкажіть на згадку @EliahKagan.
Videonauth

0

Попередні відповіді не застосовуються повністю, якщо ви позначили encrypt home folderпід час встановлення Ubuntu. Це гарантує зашифровані домашні папки для кожного користувача, навіть тому root не може прочитати дані без належного пароля користувача / власника цієї домашньої папки. Ваш колега повинен змінити ваш пароль, щоб прочитати файли, що було б помічено.

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

Залежно від цінності цих даних, я б запропонував запитати у вас власну машину.


1
Це може не перешкоджати кореневому користувачеві робити "su -" або подібний маневр, як тільки "жертва" входить у систему і встановив зашифрований диск .... на цьому також може бути сценарій cron або інший тригер статися. Також користувач root може легко замінити бінарний обробку введення пароля, щоб розблокувати зашифрований домашній каталог на версію, що зберігає пароль ясного тексту, та зачекати. Будь-які механізми безпеки, що зупиняють подібні атаки, все-таки можуть бути усунені, змінивши якийсь двійковий код, який жертва використовуватиме на те, що робить так, як ви цього хочете.
rackandboneman

5
Я відповідаю за відповідь, оскільки зашифрований домашній каталог допомагає лише в тому випадку, якщо ви не ввійшли в систему. Як тільки ви ввійдете в систему, ваші дані будуть розшифровані та доступні для іншого користувача з доступом до sudo.
Пантера

2
Але навіщо їм бути? Навіть якщо одночасні входи ніколи не здійснюються віддалено (наприклад, SSH) або з віртуальними консолями, чи не можуть два користувачі одночасно графічно входити в систему і перемикатися між ними? Я використовую Lubuntu (у якому є LXDE), і я ніколи не входив графічно з кількома користувачами одночасно, але моє враження було, що більш багаті на функції робочі середовища підтримують це вже кілька років і включають його за замовчуванням. Я помиляюся з цього приводу? Як варіант, чи файли більше не розшифровуються та не читаються кореневими, коли екран заблокований?
Елія Каган

2
IRRC ключі шифрування користувача відкрито зберігаються на апараті для забезпечення шифрування та розшифровки, тому a, sudo su - <username>що не потребує пароля інших користувачів, зазвичай успішно розшифровується каталог інших користувачів. Але я можу помилитися тут, мені потрібно протестувати його в VM і зроблю це пізніше. У будь-якому випадку це стосується 99% всіх випадків: "Якщо у мене є фізичний доступ до вашої машини, ви шлангуєте!".
Videonauth

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