Я полагаю, что это разбивается на несколько тесно взаимосвязанных вопросов, которые отвечают с разумной степенью объективности.
Почему Ubuntu позволяет настраивать различные виды разрешений для разных пользователей и групп пользователей? Действительно ли эта высокая степень конфигурируемости необходима?
Почти все используемые в настоящее время операционные системы, включая Windows, имеют эту функциональность. На самом деле, в Windows система более сложная, потому что Windows использует списки контроля доступа практически для всего, в то время как Ubuntu большую часть времени использует более простую систему владения и разрешений в стиле Unix (но также поддерживает списки контроля доступа ).
Несколько причин, по которым это необходимо:
Если вы хотите, чтобы к вашему компьютеру обращались другие пользователи, кроме вас, вам нужна возможность решить, что некоторые файлы полностью запрещены для определенных пользователей, а другие доступны для чтения, но не могут быть изменены некоторыми пользователями.
Помните, что сюда входят люди, которым вы, возможно, захотите получить доступ к вашему компьютеру по сети. Таких как ты. Многие люди хотят иметь возможность обмениваться файлами между компьютерами дома или со своими друзьями, но не с кем-либо, кто случайно использует одну и ту же общедоступную беспроводную сеть. Таким образом, пользователи представляют больше людей, чем вы могли бы физически использовать свою клавиатуру.
Используемая вами операционная система - Ubuntu - та же ОС, что и Ubuntu Server. По умолчанию они имеют разные пакеты и разные установщики. Вы можете превратить серверную систему в настольную систему и наоборот. Для большинства серверов необходима полная система владения и разрешений, даже если это не требуется для некоторых настольных компьютеров. Рабочие столы прекрасно работают с ним; серверы не будут работать без него.
Учетные записи пользователей могут представлять реальных людей, которые имеют доступ к вашему компьютеру, но они также представляют гораздо больше, чем это. Учетная запись пользователя представляет собой набор способностей. Существуют специальные учетные записи пользователей для выполнения определенных задач с ограниченными возможностями.
Цель этого двоякая. Во-первых, разработчик программного обеспечения или пользователь может совершить ошибку, в результате чего программное обеспечение попытается выполнить какое-либо действие, о котором заранее известно, что оно может нанести только вред.
Во-вторых, злоумышленник может намеренно обмануть программное обеспечение, выполняющее специализированную задачу, на что-то плохое, например, уничтожить данные или позволить злоумышленнику контролировать это.
В обоих этих случаях вред часто снижается, если задача выполняется непривилегированным пользователем, который не представляет какого-либо конкретного пользователя компьютера, но существует только для выполнения этой конкретной задачи.
Если в вашей системе Ubuntu настроено только несколько учетных записей пользователей-людей, то большинство учетных записей, перечисленных при запуске, cat /etc/passwd
являются такого рода «пользователями». (Не беспокойтесь, на cat /etc/passwd
самом деле при запуске не отображаются пароли людей; файл называется так, в основном по историческим причинам.)
Какой смысл в Ubuntu ограничивать доступ моей учетной записи ко всему, если я администратор и могу выполнять любые действия с правами суперпользователя sudo
?
По той же причине по бокам некоторых дорог есть ограждения, крышки люков (люков?), Крышки над иглой на конце шприца, предохранительные приспособления для огнестрельного оружия и т. Д. И не по той же причине, по которой люди ставят замки их двери. Не для того, чтобы удерживать вас от того, чтобы делать что-то намеренно, что вы действительно хотите сделать, но чтобы удержать вас от случайного выполнения чего-то, что вы не хотите делать.
Когда вы хотите / должны выполнить административную задачу, важно, чтобы вы могли ее легко выполнить. Ваш контроль над собственной машиной должен соблюдаться, плюс система, которая излишне сложна в использовании, не очень хороша. Если Ubuntu мешает вам легко выполнять административные действия, это ошибка. К счастью, это обычно не так (хотя я боюсь, что мы движемся в этом направлении ). Одна из причин, по которой Ubuntu использует, sudo
заключается в том, что она обычно облегчает запуск команд / программ root
, не уменьшая при этом возможности одновременного выполнения обычных, неадминистративных действий.
Когда вы не пытаетесь изменить свою систему каким-либо глубоким способом, который может быть опасным, также важно, чтобы система была спроектирована таким образом, чтобы не обманывать вас.
Точно так же вы, вероятно, имеете право отдать свои сбережения кому-то случайному парню. Вы также имеете право играть в теннис. Ваша автономия важна; именно из- за этого, а не вопреки этому, кнопка «отдать все мои деньги» на вашей теннисной ракетке была бы плохим дизайном.
Для получения дополнительной информации о том, почему даже администраторы должны использовать «ограниченные учетные записи пользователей» (плюс возможность выполнять любое конкретное действие без ограничений по запросу), см .:
Я понимаю, что такое разрешения пользователя - это разрешения для владельца файла. Для чего нужны групповые разрешения?
Владелец файла - обычно это пользователь, который его создал, или владелец специальной папки, настроенной так, чтобы файлы, в которых он был создан, принадлежал этому пользователю - может выбрать группу пользователей для «группового владения» файл.
Этой группе пользователей могут быть предоставлены особые способности (или, возможно, лишены особых способностей, хотя это обычно не рекомендуется и не эффективно) по сравнению со всеми остальными.
Под всеми остальными я подразумеваю все остальные учетные записи пользователей в вашей системе, кроме владельца файла и владельца группы. Это включает в себя те, которые не соответствуют ни одному человеку. Например, вы можете захотеть, чтобы все люди, использующие ваш компьютер, могли настраивать принтеры ( lpadmin
группы) и использовать привод CD / DVD / BluRay ( cdrom
группы), но, вероятно, нет необходимости разрешать сообщение о сбое «пользователю» ( whoopsie
) или синхронизирующая часы "пользователь" ( ntp
), чтобы иметь эти способности.
При желании вы можете использовать группы для ручного управления доступом, но в настольных системах часто большинство групп автоматически настраиваются и управляются. Команда groups
выведет список всех групп, членом которых вы являетесь.
Для чего нужны «другие» разрешения?
Они применяются ко всем остальным - к учетным записям пользователей, которые не владеют файлом и не являются членами группы-владельца.
Права доступа к файлам группы и владельца только для серверов?
Нет, они используются для управления различиями между различными типами учетных записей пользователей на вашем компьютере, включая учетные записи нечеловеческих пользователей. Это применимо, даже если в вашей системе есть только одна учетная запись пользователя.
Например, членство в adm
группе (которая не делает пользователя администратором) дает возможность читать содержимое большинства системных журналов. Это относительно безвредная возможность практически для любого пользователя большинства настольных систем, но потенциально может привести к проблемам, если она будет присвоена части системы, которая выполняет только узкоспециализированную задачу (то есть выполняет только эту задачу, если что-то как частично успешная кибератака совершается).
Являются ли права доступа к файлам групп и пользователей более важными для серверов, чем для настольных компьютеров?
Вроде, как бы, что-то вроде.
На серверах вам, скорее всего, придется знать о них и управлять ими вручную, поскольку вы с большей вероятностью намеренно предоставите и запретите доступ к различным ресурсам для различных пользователей.
Но они необходимы для правильной работы системы даже для одного человека. Система должна была бы быть разработана по-другому, чтобы хорошо работать в однопользовательском режиме для повседневных вычислений, без системы владения файлами и прав доступа.
Для сравнения рассмотрим планирование ввода / вывода. Многие серверные среды имеют гораздо больше процессов, обращающихся к большему количеству файлов, чем многие настольные системы. Следовательно, планирование ввода-вывода (управление тем, как можно управлять ограниченной пропускной способностью для выполнения транзакций доступа к файлам с разумной эффективностью) особенно важно на (некоторых) серверах по сравнению с (большинством) настольных компьютеров. Администраторы сервера более склонны изучать планирование ввода-вывода и вносить изменения в его работу на своих компьютерах, чем большинство пользователей настольных компьютеров. Но планирование ввода / вывода необходимо для работы сервера или настольной системы.
Как владелец файла, я могу изменить все его разрешения, а также владельца группы. Я могу сделать это без sudo
или аналогичного механизма! Так какой смысл в разрешениях?
Владелец файла может сделать это, не будучи пользователем root (то есть без него sudo
), но другие пользователи без полномочий root не могут. Это включает нечеловеческих «пользователей», которые являются частью системы (см. Выше).
Кроме того, многие файлы на компьютере не принадлежат вашей учетной записи. Эти файлы требуют, чтобы вы каким-то образом проходили аутентификацию, чтобы изменить их разрешения. Вы должны использовать sudo
(или аналогичный механизм), чтобы изменить разрешения для системных файлов, принадлежащих root
.
Наконец, есть некоторая ценность, связанная с наличием разрешений, которые применяются только к вам, даже если вы можете изменить их без использования sudo
или какого-либо подобного механизма.
Для чего нужны разрешения пользователя? Зачем мне хотеть изменить то, что я могу сделать с файлом, если я могу просто изменить его обратно?
По той же самой общей причине вы можете захотеть сделать файл доступным только для чтения (даже если вы можете переопределить его самостоятельно), вы можете создать файл, который вы не можете прочитать или выполнить (запустить).
Более распространенная ситуация заключается в том, что вы можете не захотеть, чтобы файл, которым вы владеете, был исполняемым вами. Когда вы загружаете что-то, вы, вероятно, не хотите, чтобы оно было помечено как исполняемое, потому что это может быть вредоносное ПО. Возможно, вы захотите подумать, хотите ли вы запустить его, прежде чем пометить его как исполняемый. Кроме того, если вы загрузили файл, имя которого заканчивается .pdf
на вредоносную программу, но вы определенно не хотите, чтобы для него по умолчанию были установлены разрешения на выполнение.
Есть еще одна причина, которая меньше связана с безопасностью. Любой файл, помеченный как исполняемый файл, рассматривается как нечто, что может быть запущено - программа или скрипт. Большинство файлов не являются ни тем, ни другим, и вам бы не хотелось иметь возможность их запускать.
Например, если текстовый файл помечен как исполняемый (например, он принадлежит вам, и у него есть разрешение на выполнение для его владельца-пользователя), и вы дважды щелкнете по нему в Nautilus (обозревателе файлов), он запустится. Но большинство текстовых документов не являются скриптами, и вы не хотите запускать их, когда вы дважды щелкаете по ним; вместо этого вы, вероятно, хотите открыть их в редакторе.
Менее распространено желание создать файл, который вы не можете самостоятельно прочитать (без изменения его прав назад). Одна из ситуаций, когда вы можете захотеть сделать это, если у вас есть несколько файлов и вы хотите не открывать один из них какое-то время, например, если он огромен и его открытие занимает несколько минут. Я был в такой ситуации, когда мне приходилось ждать, пока приложение завершит открытие файла, чтобы я мог закрыть его, потому что я выбрал неправильный файл (снова).
Возможный сценарий связан с тем, что вы автоматически выполняете какое-то действие со многими файлами («пакетное» задание), которое читает файлы, но вы хотите, чтобы оно пропускалось. При условии, что действие будет «изящно ухудшаться», продолжая делать все возможное после ошибки, самый простой способ выполнить это - пометить несколько файлов, которые вы хотите пропустить, как нечитаемые.
Совсем другая ситуация: может быть, вы хотите отказать себе в разрешении на чтение какого-либо файла, потому что этот файл служит не только для хранения данных, но и для другой цели . Файлы могут быть использованы для обозначения некоторых условий. В качестве готового примера: какое-то поисковое приложение, которое индексирует файлы, может сначала проверить, присутствует ли вызываемый файл noindex
в вашей домашней папке, и остановить, если оно найдет. Этот файл не должен быть прочитан; возможно, отметив его как нечитаемый, можно прояснить его назначение.
Желание удержать себя (или какую-то задачу, которую вы выполняете от себя ) от чтения файлов, которыми вы владеете, не является, однако, частой ситуацией. И на практике большинство «сигнальных» файлов (которые существуют, потому что само их существование что-то значит) читаются их владельцами. На самом деле, насколько мне известно, существует три основных причины, по которым пользователь-владелец файла не может его прочитать и даже может писать в него, не читая его:
Группа и другие имеют биты чтения, записи и выполнения, и они могут принимать любую комбинацию значений. Нет веской причины порвать с этой моделью - тем самым усложняя систему - для пользователя, которому принадлежит файл.
Многие ресурсы, которые мы обычно не считаем подобными файлам, представлены записями в файловой системе . Для некоторых ресурсов имеет смысл писать в них, но не имеет смысла читать из них. Для этих ресурсов бит чтения иногда отключается для всех, даже для владельца, и даже для владельца root
. (Однако не всегда; по причинам, которые выходят за рамки этого ответа и на краю моих собственных знаний, для записей файловой системы некоторых устройств, предназначенных только для записи, по-прежнему разрешены биты чтения для некоторых пользователей.)
Возможность для файла запретить доступ на чтение даже его владельцу иногда используется для представления файлов в файловой системе только для записи. (Однако не всегда; это зависит от деталей файловой системы и того, как она смонтирована.) Файловые системы только для записи редки, но они существуют и имеют практическое применение .