Приходя из комментариев в этот вопрос почему это плохо, чтобы войти в систему как root?:
Механика судо
находится в использовании, так что без административных инструментов "не может нанести вред вашей системе." Я согласен, что было бы очень плохо, если какой-то проект на GitHub я клонировал удалось внедрить вредоносный код в /бин
. Однако, что такое рассуждения, как на настольном ПК? Один и тот же код на GitHub может, когда-то казнил, без права суда, уничтожить всю мою домашнюю папку, поставить кейлоггер в моей сессии автозапуск или делать все, что ему заблагорассудится в ~
.
Если у вас нет резервных копий, домашняя папка, как правило, уникальна и содержит ценные, если не секретные данные. Корневые каталоги, однако создать систему и часто могут быть восстановлены путем простой переустановки системы. Есть настройки, сохраненные в файле/var и так далее, но они, как правило, имеют менее важное значение для пользователя, чем фотографии с отдыха с 2011 года. Корневая система права имеет смысл, но на настольных системах, он чувствует, как он защищает неверные данные.
Неужели нет способа предотвратить вредоносного кода происходит в домашнем
? И почему никто не заботится об этом?
Я'м не согласны с ответами, которые говорят, что возраст модели безопасности Unix или среды, в которой он был разработан в вине. Я не'т считаю, что's не так, потому что есть механизмы, чтобы справиться с этим.
корневая система права имеет смысл, но на настольных системах, он чувствует, как он защищает неверные данные.
Суперпользователь'права существуют для защиты системы от пользователей. Разрешения на учетные записи пользователей находятся там, чтобы защитить учетную запись от других непривилегированных учетных записей.
Запустив программу, вы даете ему права делать вещи с ваш УИН. Поскольку ваш УИН имеет полный доступ к вашей домашней директории, вы'вэ транзитивно данной программы такой же доступ. Просто как суперпользователь имеет доступ к внести изменения в системные файлы, которые нуждаются в защите от вредоносного поведения (пароли, настройки, файлы), вы можете получать данные в ваш домашний каталог, который нуждается в такой же защите.
В принцип наименьших привилегий говорит, что вы должны'т дать больше доступа, чем это абсолютно необходимо. Процесс принятия решения для запуска любой программы должна быть такой же по отношению к вашим файлам, как это системные файлы. Если вы не'т дать кусок кода, Вы не'т доверять неограниченное использование учетной записью суперпользователя в интересах защиты системы, он должен'т быть дано неограниченное использование вашего аккаунта в интересах защиты ваших данных.
Есть ли способ для предотвращения вредоносного кода происходит в $Home? И почему никто не заботится об этом?
В Unix не'т права предложить что гранулированный по той же причине там isn'т защитный кожух вокруг команды RM: разрешения не'т там, чтобы защитить пользователей от самих себя.
Способ предотвращения вредоносного кода повредить файлы в вашем домашнем каталоге, чтобы не запустить его, используя свой аккаунт. Создать отдельного пользователя, который не'т иметь каких-либо специальных разрешений и запустить код под этой жидкости, пока вы'вэ определяют, является ли или не вы можете доверять ему.
Есть и другие способы сделать это, например, изолированной тюрьмы, но это требует дополнительной работы, и выйти из них уже не вызов, это было раньше.
Поскольку в Unix-модель безопасности на основе 50 лет.
В Unix лежит в основе наиболее распространенных операционных систем, и даже большим исключением Windows была под влиянием его более чем очевидна. Она проистекает из времени, когда компьютеры были большими, дорогими, медленными машин, используемых исключительно заумных специалистов.
В то время, люди просто не'т иметь обширные личные коллекции сведения о каких-либо компьютеру, а не их университетского сервера, а не своего персонального компьютера (и, конечно, не мобильный телефон). Данные, которые варьировались от пользователя к пользователю, как правило, входные и выходные данные научных вычислительных процессов - их потеря может представлять собой потери, но в основном один, который может быть компенсирован путем повторного вычисления их, конечно, ничего похожего на последствия сегодня's данные утечки.
Никто бы их дневник, банковской информации или обнаженные фотографии на компьютере, чтобы защитить их от несанкционированного доступа там'т то, что не имеет высокий приоритет - в самом деле, большинство студентов в 70-е годы, вероятно, были счастливы* если других проявлял интерес к их исследований. Таким образом, для предотвращения потери данных является высшим приоритетом в области компьютерной безопасности, и должным образом обеспечивается регулярное резервное копирование, а не контроля доступа.
Это весьма проницательное наблюдение. Да, вредоносных программ, запущенных пользователем, могут повредить/уничтожить данные/изменить в вашем домашнем каталоге. Да, разделение пользователей на отдельные системы пользователей является менее полезным, чем на серверах. Однако, есть еще некоторые вещи только пользователь root (или эквивалент) можете сделать:
Честно говоря, я считаю, разделение прав доступа на рабочих станциях наиболее полезными для защиты рабочей станции от него'ы большой враг: меня. Это делает его труднее испортить и сломать мою систему.
Кроме того, вы всегда можете создать задание cron пользователя root, что делает резервную копию домашнего каталога (например, rsnapshot
) и сохраняет его таким, что он's не для записи. Что бы какой-то уровень защиты в ситуации, которую вы описываете.
Оригинальный дизайн безопасности Unix/Linux был защитить пользователей от других пользователей и системные файлы от пользователей. Помните, что 30-40 лет назад большинство систем UNIX были многопользовательский установки со многими людьми, войдите в одной машине одновременно. Эти системы стоят десятки тысяч долларов, и это было крайне редко, чтобы иметь свои собственные личные машины, так что машина была общая в многопользовательской среде логин.
Дизайн никогда не был предназначен, чтобы защитить пользователя или файлы пользователей от вредоносного кода, только чтобы защитить пользователей от других пользователей, пользователей от изменения базовой системы, и пользователи используют слишком много системных ресурсов. В нынешнюю эпоху, когда у каждого свой компьютер дизайн (в основном) в переводе на одного пользователя машины, что защитить один процесс от коробления слишком много системных ресурсов.
По этой причине выполняется программа пользователя имеет доступ к файлам пользователя. Там's нет концепции дальнейшего доступа на пользователей собственных файлов. Другими словами, процесс выполняется от имени пользователя имеет доступ на чтение, изменение и удаление всех файлов, принадлежащих пользователю А. Это включает в себя (как вы отмечаете) файлов автозапуска.
Более современный подход может повлечь за собой определенные формы дальнейшего контроля на определенные файлы. Что-то как-то "требуется на" повторной аутентификации; чтобы открыть эти файлы, или, возможно, некоторые формы дополнительной защиты программ файлов из других файлов программы. Насколько мне известно, нет'т (в настоящее время) ничего подобного в Linux настольных мире. Поправьте меня, если я'м не так?
Есть ли способ для предотвращения вредоносного кода происходит в $Home?
Чтобы ответить на этот вопрос, что в некоторых случаях-использовать существующую систему безопасности, сделав пользователей специально для того, чтобы запустить программу. Программа будет иметь параметр конфигурации, чтобы указать, как пользователя, они должны быть запущены. Например, моя установка PostgreSQL есть файлы базы данных, принадлежащие пользователю базы данных Postgres, и сервер базы данных работает как и Postgres. Для административных команд в PostgreSQL, я бы изменить пользователей для базы данных Postgres
. Для OpenVPN также имеет возможность изменения unpriviledged пользователей после того, как он'ы сделано с помощью административных полномочий корень (добавить сетевые интерфейсы и т. д.). Установка может иметь имени пользователя "никто" специально для этой цели. Таким образом, подвиги на PostgreSQL или OpenVPN не обязательно приводит к компрометации $дома
.
Другой вариант-использовать что-то вроде SELinux и точно указать, какие файлы и другие ресурсы, каждая программа имеет доступ. Таким образом, вы даже можете отрицать программа работает как корень от прикосновения ваших файлов в домашнем
. Написание подробного политики SELinux, который задает каждая программа-это утомительно, но я считаю, что в некоторых дистрибутивах как Fedora пойти навстречу и политики определено, что только добавить дополнительные ограничения для сети, стоящие перед программами.
Чтобы ответить на вторую часть вашего вопроса: существуют механизмы песочнице, но они не включены по умолчанию в большинстве дистрибутивов Linux.
Очень старый и сложный такое SELinux. Более свежее и легче использовать подход в AppArmor. Наиболее полезной для личного использования (в AppArmor и системы похожи в основном используются для защиты демонов) - это firejail, которая изолирует процессы в своей собственной тюрьме.
В Firefox можно например написать только свою папку профиля и папку загрузок. С другой стороны, вы не сможете загружать изображения, если вы не'т положить их в директорию загрузок. Но это такая песочница. Программа может удалить ваши изображения или загружать их в случайных местах, так что в тюрьме этому мешает.
Используя firejail легко. Вы установите его и для программ, которые уже есть профиль (смотрю в /и т. д./firejail
) вы можете просто сделать (как root) ЛН-з /usr/Бен/firejail /usr/местные/Бен/для Firefox
. Если вы не хотите использовать аргументы командной строки для firejail (например, пользовательский путь к профилю файлов) вы можете запустить firejail в Firefox
.
Систем как привязать хотите добавить механизмы песочницы, так что вы можете запускать недоверенный программы установленные из случайной оснастки хранилища без особых последствий. Все эти механизмы имейте в виду, что ненадежные программы могут по-прежнему делать вещи, как рассылка спама или быть частью DDoS-атаки.
Предположение о том, что неверные данные почты защищен ложно.
Деятельность защита "корень" не защитите ваши фотографии с 2011 года. И мои, и твои братья', и все остальные'ов, которые использует компьютер.
Даже если вы реализовали ОС, со схемой которая защищала дома аккаунт, запрашивает пароль каждый раз, когда приложение пыталось получить доступ к файлу, и удалить пароль защиты, я бы не использовать его, потому что это было бы хуже для тех, отпускные фотографии.
Если мой брат компромиссы основной функциональности системы на нашем домашнем компьютере, затем мой отпуск фото удаляются, выкуп-wared, или то, что несмотря на вашу домашнюю директорию защиты, поскольку сама система сейчас нарушена и может перемещаться независимо от уровня пользователя ограничения можно реализовать.
И большинство людей будет очень раздражен, если они должны ввести пароль каждый раз, когда они выбрали Файл -> открыть в текстовом редакторе.
Кроме того, мы имели вопрос контроля доступа слишком часто запрос на домашних компьютерах. Когда Microsoft впервые выкатили их УАК вещь (за что вы Дон't даже должны ввести пароль, при использовании основной учетной записи... все, что вам нужно сделать, это нажать на кнопку), мы часто об этом говорили и люди жаловались о достаточно 0,5 секунды своей жизни потратил 20 раз в день, по неизвестным причинам Microsoft изменил это. Теперь это был не тот вид защиты, вы'вновь говорю, но это показывает нам, что если люди не хотят, чтобы нажать на кнопку безопасности несколько десятков раз в день для Microsoft's система безопасности, они'повторно не будете хотеть, чтобы нажать (или еще хуже, типа пароль) для любой реализации, чтобы защитить свои фотографии от этой случайной приложение, они просто побежали.
Так что основной ответ:
Другие ответы посмотри, зачем *Nix-это как это.
Но стоит отметить, что есть возможность сделать немного больше, чем в "из&весне, конфиг, для защиты пользователей домашний каталог, скрипты и файлы.
Большинство современных систем *Nix поддержка POSIX или вариант списков ACL, которые могут быть настроены, чтобы добавить вид детального контроля доступа к ОП ищет. Вам придется настроить их вручную, и они не'т пытаться разграничить доступ на любой основе, какая учетная запись пользователя/группы действует. Но после настройки, вы можете быть очень конкретным, какие учетные записи могут делать какие действия, на файлов, и получить хоть какой-то дополнительный контроль, заставляя команды, чтобы использовать ограниченные учетные записи для определенных команд или файлов, а не одного пользователя за все. Однако это будет довольно жесткий лимит практичность.
Один из ключевых вопросов обеспечения корневой/ядра судебно целостности. В случае, если домен, содержащий ваши ценные данные (рабочий стол пользователя с отдельными документами и веб-аутентификация маркеров, разработка сервера с конфиденциальной кода/ресурсов, веб-приложений и сервера с пользователя базы данных и т. д.) скомпрометирован, вы еще есть бескомпромиссное домена с помощью которой можно оценить компромисс, определить, что случилось, разработать план защиты от то же самое повторилось и т. д.
Unix-это не настольная система. Это'ы система работает на большом компьютере, который стоит примерно столько же, сколько дом, расположенный где-то в вашем университете's в подвале. Вы, как человек, который не может позволить себе собственный компьютер, придется делить компьютер с двумя тысячами других, и с несколькими десятками пользователей одновременно на то пошло.
Incidentially, вы можете сейчас запустить also Unix-подобной системы на вашем компьютере или размером с кредитную карточку соц, который стоит $20.
В принципе, однако, в Unix это'т предназначен для отдельных пользователей. Один пользователь не'т важно. Что's в вашем домашнем каталоге-это ваши проблемы, но то, что "корень" может делать все'ы проблемы. Поэтому только несколько задач, которые действительно требуют ты работаешь как пользователь root
должно быть сделано с этим пользователем, и желательно (чтобы ограничить время, в течение которого вы можете причинить вред), не войдя в систему с этой учетной записью, но явно используя судо
для отдельных команд, которые в ней нуждаются. Есть много религии в том, что как хорошо, который является, почему некоторые дистрибьюторы так чертовски самоуверенна, чтобы угрожать вам, когда вы вводите Су
, а не судо
для каждого из 10 различных АПТ
команд, которые нужно выполнить, чтобы установить какую-то мелкую вещь. Инцидент это будет reported, ну скажу вам, что, блять отчета. Некоторые люди действительно знают, как достаю другие.
Так вы можете стереть все ваши личные фотографии без "корней". Что's справа. Вредоносная программа может стереть все вещи в вашем домашнем каталоге, что's право. Он может отказать в обслуживании путем заполнения диске, пока квоты пользователя будет достигнуто, это верно. Но из системы'с точки зрения, что's только твоя проблема, и никто не заботится. Никакой другой пользователь является (в принципе) пострадавших.
Теперь, проблема с современным одном (или нескольких) пользователей системы заключается в том, что модель логики безопасности двухвалентной вполне соответствует действительности, просто как-то "там'с сотнями пользователей и" идея.
К несчастью, очень сложно придумать что-то лучше. Смотреть на Windows, Если вы хотите посмотреть, как не украсть идею (им действительно удалось сделать плохой подход даже хуже).
Некоторые веб-браузеры и телефон (или смарт-ТВ) операционных систем попытки (и провал) на создание чего-то лучшего, и современные Linux имеет более мелкозернистую система тоже (но я не'т знать, как правильно его настроить, не тратя weeks моего времени).
Проблема в том, что двухвалентное безопасности модель предполагает, что обычные приложения не требуют каких-то привилегий (что неправильно, потому что в основном-безобидные вещи требуют привилегий), а не нормальных приложений, требуют полного доступа к компьютерной системе (что тоже неправильно, почти ни одна программа должна иметь полный доступ, когда-нибудь).
С другой стороны, даже более гибкой модели безопасности (который все еще довольно грубо) сделать ложное предположение, что если приложение запрашивает набор привилегий, он очень нуждается в этом комплекте и пользователю удобно с его предоставления.
Там, насколько мне известно, нет системы, в которой приложение может запрашивать полномочия, B, и C, и пользователь может согласиться на выдачу (но не b и C), и приложение может затем запросить какие привилегии оно было дано, и решить, будет ли она'ы способны выполнить поставленную задачу или нет.
Таким образом, вы, как правило, имеют место предоставления АБВ-приложение и"хранить данные на постоянный магазин на" (что вы'вновь может нормально) и also позволяя себе "открыть мое местоположение" и "доступ мои личные данные" или "установить систему, драйвера и" (что вы'повторно не устраивает), или же вы не сможете запустить программу. Или, вы можете позволить АБВ-программа, чтобы "внести изменения в компьютер" и, что бы это ни значило, или вы можете выбрать, чтобы не запустить его. И вам придется снова подтверждать это каждый раз. Который, если честно, очень хреново с точки зрения пользователя.
Таких привилегий не существует, потому что они неудобны.
Цель разрешения, в общем, чтобы предотвратить нежелательные действия. Те действия, которые "корень" может сделать гораздо более коварны. На уровне пользователя программ-вымогателей приложение может быть в состоянии зашифровать ваши файлы, но они могут'т скрыть тот факт, что они'повторно делать это. Когда вы найдете зашифрованный файл, он получает открыт, как нормальный, и обнаруживает, что его были зашифрованы. С корневого уровня вымогателей, он может захватить всю вашу файловую систему и создать иллюзию, что файлы не шифруются до последнего момента, потом забыть ключ и бац! Все ваши файлы становятся unaccessable в то же время.
Теперь очевидно, что сейчас мы не'т зайти в систему как root. Мы использовать sudo. Это форма на основе ролей привилегия. Вы Don'т иметь права root, пока вы не взять на себя роль "а делает пользователя административные задачи." тогда вы получаете те привилегии, пока вы не завершите команду.
Один может создания мелкозернистой структурой ролей, которые имеют доступ к различным папкам. Возможно, вы хотите "по фотографии", чтобы быть только для чтения если вы войти в "добавление/редактирование фотографий" в роль. Это было бы мощным, но тяжелым. Как Аарон упомянул, окна' ОАК была широко раскритикована за то, что тратишь драгоценные секунды спрашивая разрешения, а не просто делать вещи. Ваш компьютер должен спросить разрешение более часто, если ей пришлось поменяться ролями, чтобы защитить ваши данные. Пользователи вообще не нашел, что это будет стоящее, так это's не поддерживается.
(Если вы были заинтересованы в такой возможности и готов использовать sudo, чтобы сделать их, можно создать отдельный раздел, который может быть установлен Ро или РВ, в зависимости от того, что вы хотите сделать, и хранить ваши фотографии есть).
Одна из самых тяжелых задач для решения в этих случаях является степень детализации ролей. Если пользователей входит в одну роль или еще, что'ы довольно легко справиться. Это тяжелее, однако, чтобы обработать случай, где конкретного применения должен войти в эту роль. Может быть, в Firefox это'т позволил напишите свои фотографии, но GIMP это разрешено. Это сложно, потому что там, где есть границы, вы можете'т иметь последовательную интеграцию. Что если Firefox использует плагин GIMP для редактирования фото? Единственный способ предотвратить Firefox от делать это, чтобы предотвратить его от общения с GIMP.
Я'м если у вас есть некоторый опыт работы с Windows. Вы когда-нибудь задумывались, почему экран становится тусклым, когда ОАК приходит? Это'ов на самом деле не для визуально подтверждения, что вы'снова делаешь что-то особенное. Это'ы гораздо важнее, чем что. Окна над серым частью являются частью различные экран, изолированные из окон ниже. Почему это важно? Ну, получается, что любое окно на экране позволяют управлять любое другое окно на том же экране. Если ОАК вышла на экран, как программа установки просит разрешения установщик может буквально просто получить ручку на окне контроля учетных записей и нажмите кнопку ОК для вас! Это, безусловно, поражение цели такого приглашения. Решение заключается в том, что ОАК на разных экран, так что никакое другое приложение не можете нажать кнопку ОК на свой собственный. Единственный способ для OK, чтобы быть нажата, если пользователь перемещает мышку и нажимает на нее. Потемнение действительно только там, чтобы показать вам, что вы можете'т взаимодействовать с любым из окон внизу, а экран контроль учетных записей и управление в клавиатура/мышь.
Так что's уровень усилий, который должен быть пройден для изоляции. Это's не легкий. На самом деле, это's достаточно сильно, что это может иметь смысл для вас, чтобы защитить ваши важные данные при наличии нескольких учетных записей пользователей, и давать каждому Различный доступ к данным. Затем вы можете использовать переключатель-пользователю возможность переключаться между ними. Это позволило бы обеспечить такой изоляции, что вам нужно сделать достойную роль "пользователь".
Есть ли способ для предотвращения вредоносного кода происходит в $Home?
Если у вас есть /Home
и как отдельные точки подключения, на нем'отдельный раздел с - тогда вы можете просто отредактировать файл/etc/fstab Си добавить
с параметром noexecфлаг на варианты установки. Отключает выполнение кода на этом разделе, с недостатком, что код в
~/бин(как некоторые ТВ-пользователь может создать его) также выиграл'т больше бежать. это, тем не менее, выиграл'т остановить исполняемого файла, расположенного в другом месте в файловой системе, чтобы стереть с лица земли
/дом`.
СЕ Линукс представляет собой полноценную систему безопасности, которые могут хорошо изолировать - а то AppArmor только для изоляции приложений. Для Android'ы базовых функций Linux, поскольку в 5.0 что-то. На Windows, они недавно ввели "и защищенные папки и" что вполне одинаковы (полный грабеж). здесь недостатком является то, что при установке вручную что-то новое, часто на этикетке и/или установить соответствующие флажки, чтобы разрешить, что, хотя контекст, в котором что-то работает-это самое важное. люди часто предполагают, чтобы отключить его, просто потому, что они не понимают, как с этим справиться. ну, это не совсем точка выбора ЮВ дистрибутив Linux для развертывания.
Я'м удивлены, что никто не упомянул следующее:
Одной из основных причин, чтобы не войти в рабочий стол машины как корень, потому что много мероприятий будет сменить владельца файлов, чтобы стать суперпользователем. Это обычно означает, что "нормальный" и пользователи не смогут запускать многие приложения, потому что они могут'т читать файл конфигурации по умолчанию, который был создан корень.
Одной из основных причин не входить в сервер как root заключается в том, что от аудит/отслеживаемости точки зрения, это's лучше, чтобы кто-то войти в себя, а затем выполнять команды как root, так что есть некоторая проверке журналов, что свидетельствует о том, что 'пользователь1' войти в систему и затем перешел на корни, а не только зная, что 'корне' войти в систему с IP-адреса 10.2.1.2, которые могут быть универсальный терминал доступен для многих людей. На сервере это's больше общего имеют ограниченный доступ к sudo для многих команд, чтобы попытаться сохранить действий, выполняемых администратором более проверяемыми и tracable.
Как и во всех корневых деятельности, вы можете получить то, что вы хотите, просто помните, что чем больше вы делаете, тем больше пистолет на вашей ноге, и это займет всего один неверный команду, чтобы спустить курок.
rm -rf {uninitializedVariable}/*