Являются ли пользовательские файлы закрытыми, когда в Ubuntu существуют два пользователя sudo?


31

Я делюсь своим персональным компьютером с Ubuntu с одним из моих коллег.

Я создал другого пользователя с другим паролем (он, конечно, знает) и добавил его в sudoerсписок.

Учитывая, что sudoв одной системе Ubuntu есть два пользователя:

  • Являются ли личные файлы (указанные владельцами и разрешениями) любого из этих пользователей по-прежнему закрытыми?

  • Могу ли я изменить файлы моего коллеги по sudoкоманде sudo suили даже наоборот?



6
Ubuntu позволяет создавать домашнюю папку в зашифрованном виде при создании пользователя. Это может быть именно та функция, которая нужна здесь.
Турбьёрн Равн Андерсен


@ ThorbjørnRavnAndersen После того, как я зашифровал домашнюю папку, могу ли я получить доступ к файлам внутри так же удобно, как раньше?
Цзичжоу Хуан

3
Почему бы вам не удалить доступ sudo у другого пользователя и стать единственным администратором? Независимо от причин, по которым другому пользователю нужен sudo, вы можете исправить его, чтобы он не нуждался в sudo (монтирование, печать, автообновления и т. Д.)
Xen2050

Ответы:


51

Если ваш коллега находится в списке sudoers, он является пользователем root, если вы этого хотите (и он может выдать себя за вас), и тогда он сможет увидеть все.

Это худшая настройка, которую вы можете использовать, если вы хотите конфиденциальности пользователя. Вы должны окончательно прочитать, как работает управление пользователями в Linux. Вот несколько статей, с которых вы можете начать:

И даже тогда, если у кого-то есть физический доступ к рассматриваемой машине, конфиденциальность отсутствует, он может заскочить при загрузке в корневую оболочку и посмотреть все, несмотря ни на что, и если это будет защищено паролем, он все равно сможет использовать USB-накопитель и идти по этому пути.

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


2
Хотя убедитесь, что sudo -iэто не работает :)
Уилф

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

19

Простая альтернатива - хранить ваши личные данные в зашифрованном файле (это может быть файл архива tar, который вы шифруете, например, с помощью gpg). Вы должны помнить, чтобы переписать и удалить текстовые файлы после просмотра их.

Еще одна альтернатива для всех, кто имеет общий доступ к компьютеру и sudo (root), - это использовать зашифрованный домашний и зашифрованный обмен.

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


В целом безопасность очень сложна, и однопользовательская система с зашифрованным диском (LVM с шифрованием) будет самым простым способом обеспечения безопасности.

  • Не храните конфиденциальные данные на общем компьютере
  • Не храните личные данные на компьютере, принадлежащем вашему работодателю.

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

6
Это даже не защитит вас от злых атак горничной: другой пользователь sudo может изменить систему, чтобы обманным путем заставить вас выдать вам вашу фразу-пароль. Такой вопрос следует читать как «Я подозреваю, что мой коллега - русский шпион. Должен ли я дать ему права sudo на моем компьютере?»
sleblanc

Как насчет виртуальной машины с зашифрованным образом диска? blogs.oracle.com/scoter/…
leftaroundabout

1
Если вам нужна конфиденциальность, вам нужна однопользовательская система, другими словами, никакой другой пользователь, определенно, никакой другой пользователь sudo. Ubuntu LVM с системой шифрования уязвима для атак злой горничной. Тем не менее, я думаю, что это лучше, чем другие простые альтернативы, включая зашифрованный дом. Конечно, если вы хотите, вы можете иметь зашифрованный диск и зашифрованную домашнюю систему и однопользовательскую систему, чтобы затруднить вторжение, например, по этой ссылке iso.qa.ubuntu.com/qatracker/milestones. / 363 / builds / 126342 /…
sudodus

Все, что нужно сделать новому пользователю root, это установить руткит пространства ядра, такой как diamorphine. Даже не нужно возиться с LD_PRELOADхакерскими атаками пользователей : просто создайте простой регистратор нажатий клавиш и добавьте его в некоторые сценарии Python, чтобы выполнить нечеткую сегментацию K-средних, основанную на времени / группировке ввода, некотором разборе текста и сделанный. Теперь у вас есть ключевая фраза для пользователя, и вы, вероятно, можете получить его личные данные.
Облако

8

Как только вы сможете получить rootразрешения (например, используя sudo, suи т. Д.).
У вас есть полный доступ к каждому файлу в системе.

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

В соответствии с этими вопросами и ответами в SE-Security: Вы можете изменить SELinux(не Ubuntu) для ограничения rootдоступа:

Если ваш вопрос "могу ли я легко и безопасно сделать это сейчас?" ответ - нет. Если ваш ответ «я готов узнать о SELinux, покончить с моим дистрибутивом и смириться с большим количеством вещей, которые не работают», ответ будет таким: можно ограничить root намного больше, чем ваша средняя установка. Тем не менее, это никоим образом не делает вас неуязвимым для эксплойтов - это не делает невозможным для пользователя обойти этот дополнительный контроль доступа ни программно, ни физически.


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

1
Даже если вы используете SELinux или что-то подобное, чтобы ограничить то, что root может делать напрямую, они все равно смогут изменять утилиты, которые запускают сами пользователи. И если предполагается, что они смогут запускать какие-либо обновления, им потребуется доступ для изменения двоичных файлов в системе ...
ilkkachu

5

Чтобы сделать то, что уже было сказано в других ответах, совершенно ясно: этот другой пользователь не только «root столько, сколько вы» (ответ Videonauth), он также может стать вами (переключиться на вашу учетную запись пользователя) .

Это потому, что с привилегиями суперпользователя можно переключиться на любую учетную запись.

Вы наверное знаете

sudo su

что является одним из вариантов открытия оболочки root, если root не имеет установленного пароля (поэтому вы не можете просто войти в систему как root напрямую).

suявляется сокращением от «переключить пользователя». На какого пользователя он переключается? Ни один не указан, верно? Но из справочной страницы мы можем узнать, что:

Вызывается без имени пользователя, по умолчанию su становится суперпользователем.

Так что это эффективно

sudo su root

если вы не переименовали rootчто-то еще.

Если вы просто запустите su <someuser>, вам будет предложено ввести пароль. Поэтому, если вы запустите su root, вам будет предложено ввести пароль root (который не существует в Ubuntu по умолчанию, поэтому вы не можете войти в систему (обратите внимание, что пароль не установлен, что означает, что нет средств для входа через пароль, который отличается от пароля тем, что является пустой строкой)). Но если вы запустите sudo su root, вам будет предложено ввести собственный пароль. И вас только об этом попросят sudo. Получив sudoваш пароль, он запускает полученную команду в качестве параметров с привилегиями суперпользователя. Так как при наличии привилегий суперпользователя можно переключиться на любую учетную запись, запрос пароля не требуется.

Таким образом, выполняя

sudo su <yourusername>

другой sudoer может войти как вы.


+1; Да, я не упомянул об этом, чтобы не вызывать путаницы, поле защиты машины должным образом широко и заполнено камнями, за которые вы можете бороться. Все еще хорошее дополнение к тому, что уже было дано в качестве ответов.
Видеонавт

Не уверен, но не sudo suвсегда по умолчанию UID 0 и GUID 0? Если да, то не имеет значения, как вы назвали «root».
Видеонавт

@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.

Также проверьте manстраницу sudoers , набрав man sudoersи не забудьте проверить ее. Помните, что при неограниченном доступе sudo пользователь может полностью выдать себя за любого другого пользователя. например, если пользователь должен fooбыл запустить команду

sudo exec su - bar

тогда они смогут действовать как пользователь barсо всеми привилегиями этого пользователя.


6
Обратите внимание , что определенные sudoersлинии , показанные в ОДС в и mtak в ответах не работают , чтобы дать возможность выполнить какие - либо действия , а не другие, так как это тривиально просто использовать их , чтобы выполнить любую команду. (Подробные объяснения причин см. В комментариях к каждому из этих ответов.) Этот ответ может быть не совсем неправильным, поскольку иногда можно разрешить пользователям sudoзапускать определенные команды от имени пользователя root, не назначая их администраторами. Но очень трудно понять это правильно.
Элия ​​Каган

@EliahKagan Верно. Необходимо тщательно следить за тем, чтобы вы не позволяли им достичь механизма, который позволял бы им выполнять любую команду. Конечно, это зависит от уровня доверия, которое вы оказываете другому человеку.

1
@EliahKagan Отсюда и призыв прочитать страницу руководства и протестировать любую реализацию. Ограничение пользователя с привилегией sudo выполнимо. Однако, как вы отмечаете, это не полностью безопасное решение, и пользователям, которым предоставлены права sudo, должен быть доверен некоторый уровень доверия. Интересно увидеть отрицательные отзывы об ответе, который рекомендует использовать механизм (записи файла sudoers), который специально предназначен для ограничения области действия команды sudo.
заклинатель

Я думаю, что речь не идет о рекомендации использовать встроенный механизм, поэтому позвольте мне перейти к той конструктивной критике, которую я мог бы дать вам за ваш ответ. 1) Он содержит некоторые опечатки, плохо отформатирован и выглядит странно, когда вы его читаете, что само по себе очень легко исправить. 2) вы указываете на другие ответы, данные за пределами Ask Ubuntu , здесь вы должны взять основные части в виде блок-кавычек и разместить их здесь, сделав свои ссылки частью цитат, чтобы указать источники, из которых вы их взяли. Надеюсь, это поможет улучшить ваш ответ.
Видеонавт

И так как в моем предыдущем комментарии у меня закончились символы: 3) Вы могли бы пойти немного глубже в объяснении, отметьте упомянутые предостережения @EliahKagan.
Видеонавт

0

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

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

В зависимости от значения этих данных, я бы посоветовал запросить у вас собственную машину.


1
Это не может помешать пользователю root выполнить «su -» или подобный маневр, как только «жертва» войдет в систему и смонтирует зашифрованный диск .... может также быть сценарий cron или другой триггер, ожидающий этого случаться. Кроме того, пользователь root может легко заменить двоичный файл, обрабатывающий введенный пароль, чтобы разблокировать зашифрованный домашний каталог версией, в которой хранится пароль в виде открытого текста, и ждать. Любые механизмы безопасности, которые останавливают такие атаки, все еще можно нейтрализовать, изменив какой-нибудь двоичный файл, который жертва будет использовать, на то, что делает, как вы хотите.
сторожевой кости

5
Я понижаю этот ответ, так как зашифрованный домашний каталог помогает, только если вы не вошли в систему. Как только вы входите в систему, ваши данные дешифруются и становятся доступными для другого пользователя с доступом sudo.
Пантера

2
Но почему они должны быть? Даже если одновременный вход в систему никогда не выполняется удаленно (например, SSH) или с помощью виртуальных консолей, нельзя ли одновременно графически войти в систему двух пользователей и переключаться между ними? Я использую Lubuntu (в котором есть LXDE), и я никогда не входил в систему графически с несколькими пользователями одновременно, но у меня сложилось впечатление, что более многофункциональные настольные среды поддерживают это уже несколько лет и включают по умолчанию. Я ошибаюсь по этому поводу? Или же файлы больше не расшифровываются и не читаются пользователем root при заблокированном экране?
Элия ​​Каган

2
IRRC ключи шифрования пользователя хранятся открыто на машине для обеспечения шифрования и дешифрования, поэтому, для sudo su - <username>которого не требуется пароль других пользователей, обычно успешно расшифровывается каталог других пользователей. Но я могу ошибаться, нужно проверить это на виртуальной машине и сделаю это позже. В любом случае, в 99% случаев все сводится к следующему: «Если у меня есть физический доступ к вашей машине, вы прокляты!».
Видеонавт

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