Что такое «chmod» и его практические аспекты?


3

Я новичок в Ubuntu, и я делал все на Windows. Насколько я знаю, в Windows есть опция «только для чтения» для пользователя. Однако, на мой взгляд, Ubuntu позволяет пользователю чрезмерно манипулировать правами доступа к файлам.

drwxrwxrwx 2 ttt ttt 4096 Tem 24 13:04 dante

  • Есть три группы пользователей; владелец, группа и другие соответственно.

Обычно тот, кто создает файл, является владельцем. Тогда кто такие "группа" и "другие". Используется ли это больше для серверных систем, где много пользователей?

Даже если это используется для обеспечения безопасности, без «$ sudo» его можно легко изменить на любой другой.

Можете ли вы также предложить дальнейшее чтение?

Вполне возможно, что я преувеличиваю "chmod", но я все равно буду вам благодарен, если вы ответите.


Этот сайт предпочитает, чтобы вы задавали конкретные вопросы. «Тем не менее, вы пишете, по моему мнению , Ubuntu позволяет пользователю чрезмерно манипулировать правами доступа к файлам». Вы просите людей высказать свое мнение?

Хотя я согласен, что это немного широко, кажется, что он задает вопрос, почему права доступа к файлам настолько гранулированы в Ubuntu и если некоторые функции доступа к файлам не имеют отношения к пользователям настольных компьютеров. Это кажется объективно отвечающим, узко ограниченным вопросом (или, строго говоря, двумя очень похожими такими вопросами). Я написал ответ на этот вопрос, и я рекомендую не закрывать этот вопрос (хотя некоторые изменения могут быть вполне уместны).
Элия ​​Каган

Ответы:


4

Я полагаю, что это разбивается на несколько тесно взаимосвязанных вопросов, которые отвечают с разумной степенью объективности.

Почему Ubuntu позволяет настраивать различные виды разрешений для разных пользователей и групп пользователей? Действительно ли эта высокая степень конфигурируемости необходима?

Почти все используемые в настоящее время операционные системы, включая Windows, имеют эту функциональность. На самом деле, в Windows система более сложная, потому что Windows использует списки контроля доступа практически для всего, в то время как Ubuntu большую часть времени использует более простую систему владения и разрешений в стиле Unix (но также поддерживает списки контроля доступа ).

Несколько причин, по которым это необходимо:

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

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

  2. Используемая вами операционная система - Ubuntu - та же ОС, что и Ubuntu Server. По умолчанию они имеют разные пакеты и разные установщики. Вы можете превратить серверную систему в настольную систему и наоборот. Для большинства серверов необходима полная система владения и разрешений, даже если это не требуется для некоторых настольных компьютеров. Рабочие столы прекрасно работают с ним; серверы не будут работать без него.

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

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

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

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

    Если в вашей системе 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в вашей домашней папке, и остановить, если оно найдет. Этот файл не должен быть прочитан; возможно, отметив его как нечитаемый, можно прояснить его назначение.

Желание удержать себя (или какую-то задачу, которую вы выполняете от себя ) от чтения файлов, которыми вы владеете, не является, однако, частой ситуацией. И на практике большинство «сигнальных» файлов (которые существуют, потому что само их существование что-то значит) читаются их владельцами. На самом деле, насколько мне известно, существует три основных причины, по которым пользователь-владелец файла не может его прочитать и даже может писать в него, не читая его:

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

  2. Многие ресурсы, которые мы обычно не считаем подобными файлам, представлены записями в файловой системе . Для некоторых ресурсов имеет смысл писать в них, но не имеет смысла читать из них. Для этих ресурсов бит чтения иногда отключается для всех, даже для владельца, и даже для владельца root. (Однако не всегда; по причинам, которые выходят за рамки этого ответа и на краю моих собственных знаний, для записей файловой системы некоторых устройств, предназначенных только для записи, по-прежнему разрешены биты чтения для некоторых пользователей.)

  3. Возможность для файла запретить доступ на чтение даже его владельцу иногда используется для представления файлов в файловой системе только для записи. (Однако не всегда; это зависит от деталей файловой системы и того, как она смонтирована.) Файловые системы только для записи редки, но они существуют и имеют практическое применение .


Гм ... и я попытался урезать свой ответ = D. +1 за то, что вы нашли время напечатать все это.
Алаа Али

2

Обычно тот, кто создает файл, является владельцем. Тогда кто такие "группа" и "другие". Используется ли это больше для серверных систем, где много пользователей?

В Linux к файлу (или каталогу) могут обращаться три разных «объекта».

  • Пользователь (владелец) файла.
  • Группа , которая (так же , как следует из названия) является группой пользователей.
  • Все остальные люди; так в основном все остальные (т.е. не владелец и не в группе).

Каждый из этих объектов может иметь права на чтение , запись и / или выполнение файла. Видите гибкость и простоту Linux? Три объекта, каждый с тремя различными разрешениями. Это обеспечивает более гибкий способ предоставления разрешений файлам / папкам. Используется ли это больше для серверных систем, где много пользователей? Ну, да ладно, вы можете думать об этом таким образом. Ваш Ubuntu использует группы и других во многих ситуациях, хотя, не беспокоясь об этом, но я отвлекся.


Даже если это используется для обеспечения безопасности, без «$ sudo» его можно легко изменить на любой другой.

Если я правильно понимаю, я предполагаю, что вы использовали chmodфайлы в вашей домашней папке, и вы сделали это без необходимости sudo. Давайте возьмем пример:

-rwxr-xr-x 2 alaa test 4096 Jun  5 10:02 fileName

Если вы хотите понять, что означает вся эта строка вывода, посмотрите это .

alaaявляется пользователем (владелец), и testявляется группой из файла.

Теперь команда, о которой вы говорите, chmodиспользуется для изменения прав доступа к файлу. Итак, допустим, что я хочу дать разрешения на запись для группы test, я бы сделал команду:

chmod g+w fileName

Значение: для объекта группы ( g) добавьте +( w) разрешение на запись ( ) в файл fileName.

Я, пользователь alaa, могу выполнять эту команду без необходимости sudo, потому что я являюсь ее владельцем. Если бы я не был владельцем, я бы не смог этого сделать, и мне нужно было sudoбы это сделать.


Можете ли вы также предложить дальнейшее чтение?

Я предлагаю вам не читать о команде chmod, а прочитать больше о разрешениях для файлов Linux / Unix. Вы можете посетить эти короткие страницы для начинающих:


1

одно из первых мест для помощи - "человек". Вы можете написать «man chmod», и вы получите всю информацию об использовании команды.

Команда изменяет, кто может получить доступ к файлу и что он может с этим делать. «r» означает чтение, «w» для записи, «x» для выполнения. Для каждой из следующих категорий «владелец», «группа», «другие» существует набор «rwx». Если у одной категории есть только права на чтение («r--»), тогда они могут только читать файл. Это означает, что откройте его в редакторе, но не вносите никаких изменений. С помощью ("rw-") также можно изменить файл. С помощью ("rwx") можно также выполнить файл, если файл исполняемый. Теперь, возможно ли, чтобы файл мог открывать его в редакторе и одновременно выполнять его? Ну да. Если это бинарный файл и вы открываете его в редакторе, вы ничего не поймете, и если вы попытаетесь выполнить простой текстовый файл только с текстом, вы, вероятно, ничего не сделаете. Однако, если текст представляет собой последовательность команд (файл сценария), он может выполнять и то и другое. Для этих файлов очень важно определить права доступа, так как один человек может что-то изменить в командах, а затем этот файл будет выполняться кем-то другим.

О владельце категории: пользователь, создавший файл. Конечно, вы можете изменить владельца файла с помощью «chown». group: группа (-и) пользователей, к которым принадлежал владелец на момент создания файла. другое: все остальные, кроме владельца и пользователей той же группы, что и владелец.


0

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


3
Хотя это может теоретически ответить на вопрос, было бы предпочтительным включить здесь основные части ответа и предоставить ссылку для справки.
Нанн

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