- Как посмотреть подробные сведения о файле и папке в linux командой ls -l
- Создание файла и просмотр сведений о его владельце, группе и правах доступа
- Создание папки и просмотр сведений о её владельце, группе и правах доступа
- Как отличить папку от файла в linux
- P.S.
- linux Владельцы (пользователи и группы) папок и файлов — как их узнать, менять и понять в терминале (консоли, рекурсивная смена)
- Как узнать владельца файла или папки
- Как сменить владельца
- Рекурсивная смена владельцев для всего содержимого папки
- Ключевые слова:
- Как просматривать и изменять права доступа в Linux
- Смотрим права доступа
- Как в Linux определить и заменить пользователя и группу
- Меняем права в Линукс для объектов ФС
Как посмотреть подробные сведения о файле и папке в linux командой ls -l
Для понимания структуры доступа в файловой системе часто требуется знать, каким пользователям и группам пользователей какие права доступа назначены к папкам и файлам. Одним из способов быстро узнать эту информацию является команда ls с опцией -l . О том, какие подводные камни могут быть при работе с этой командой и как всё-таки посмотреть информацию о распределении доступа к файлам и директориям на диске, подробно рассмотрим на примерах ниже.
Создание файла и просмотр сведений о его владельце, группе и правах доступа
Сперва создадим файл file командой touch так, как описано в → этой статье. Для того, чтобы посмотреть информацию о его владельце, группе и правах доступа нужно набрать команду ls -l ИмяФайла . В итоге получим сводку по этому файлу:
[email protected]:~# ls -l file -rw-r--r-- 1 root root 0 Apr 10 21:06 file
Первый набор символов отвечает за права доступа, далее идет имя владельца, за ним группа, потом дата/время создания и потом имя файла. Этой информации достаточно для того, чтобы определить, кто и что может делать с этим файлом и, если что-то не работает по причине того, что каких-то прав не хватает, то это становится ясно.
Создание папки и просмотр сведений о её владельце, группе и правах доступа
Создадим папку folder командой mkdir так, как описано в → этой статье. Если действовать по такой же схеме, как и описано выше, то окажется, что этого недостаточно. Будет выдана информация только о размере папки:
Поэтому с папками при просмотре сведении о ней работаем по такой схеме: смотрим информацию не об этой папке, а общую информацию о всей папке. Тогда информация о вложенных в неё файлах и папках выдаётся в полной мере:
[email protected]:~# ls -l total 4 -rw-r--r-- 1 root root 0 Apr 10 21:06 file drwxr-xr-x 2 root root 4096 Apr 10 21:18 folder
Как отличить папку от файла в linux
Сразу на этом примере остановлюсь на вопросе о том, как отличить папку от файла в linux. В самом начале строки в символах о правах доступа у файла первым символом идет — тогда, как у папки первый символ это буква d . Именно это отличает папку от файла.
P.S.
Альтернатива есть почти всегда! 😉
Как вывести дерево каталогов с правами, группой и пользователем с помощью команды tree читать по → этой ссылке.
Заберите ссылку на статью к себе, чтобы потом легко её найти!
Раз уж досюда дочитали, то может может есть желание рассказать об этом месте своим друзьям, знакомым и просто мимо проходящим?
Не надо себя сдерживать! 😉
linux Владельцы (пользователи и группы) папок и файлов — как их узнать, менять и понять в терминале (консоли, рекурсивная смена)
В Linux у ресурса (файла или папки) есть как бы два «владельца»:
Т.е. файлом может владеть (и всегда владеет какой-то) пользователь user1 и какая-то группа group22, при этом нужно понимать пользователь user1 в общем случае может и не состоять в группе group22.
Как узнать владельца файла или папки
Используйте команду ls c флагами -la, перейдете в папку с содержимым, для которого вы хотите узнать владельцев:
ответом может быть что-то вроде:
total 8 drwxrwxr-x 2 qwer qwer 4096 июн 2 19:23 . drwxrwxr-x 6 qwer qwer 4096 июн 2 19:15 .. -rw-rw-r-- 1 qwer games 0 июн 2 19:16 myfile1 -rw-rw-r-- 1 qwer qwer 0 июн 2 19:23 myfile2
- myfile1 имеет владельцев: юзера qwer и группу games
- myfile2 имеет владельцев: юзера qwer и группу с тами же именем
Также можно указать путь к файлу, чтобы узнать его владельца:
-rw-rw-r-- 1 qwer games 0 июн 2 19:16 myfile1
Как сменить владельца
Сменить владельца можно с помощью команды chown, причем её формат такой:
chown [парараметры] имяпользователя:имягруппы путькресурсу
Например смена владельца-пользователя файла на user2:
Смена владеющей группы с текущей на games:
Можно и одной командой сменить и владеющего пользователя и владеющую группу на указанные:
Т.е. имя пользователя от имени группы, если они идут рядом отделяется в данном случае двоеточием.
ПРИМЕЧАНИЕ: есть ограничения логичные на смену владельцев, а именно:
- 1) чтобы сменить владельца-пользователя на другого надо выполнять chown под суперпользователем (для этого служит команда sudo).
- 2) чтобы сменить группу-владельца, надо, чтобы пользователь состоял и в текущей группе и в той, на которую надо сменить (т.е. в обеих), в противном случае опять же потребуются права суперпользователя.
Рекурсивная смена владельцев для всего содержимого папки
Делаем пользователя training владельцем для всего содержимого папки /usr/lib/hadoop-0.20-mapreduce/input такой комадой:
sudo chown -R training /usr/lib/hadoop-0.20-mapreduce/input
sudo chown -R training /usr/lib/hadoop
— как показывает практика флаг -R можно писать и имени пользователя и/или группы)
Ключевые слова:
Как просматривать и изменять права доступа в Linux
Если вы имеете за плечами хотя бы небольшой опыт работы в Windows, то наверняка вам уже приходилось сталкиваться с такой штукой как права доступа. Последние являются одной из ключевых функций безопасности, отсутствие прав доступа означало бы полную беззащитность системы перед внешними атаками и вирусами, которые с легкостью смогли бы перезаписать любой системный файл. Полагаем, вы уже разобрались, как их задавать, впрочем, иначе не могло и быть, ведь устроены они довольно просто, а самое главное, логично.
Владельцем файла в Windows может быть либо операционная система, либо пользователь, который в свою очередь может иметь права гостя, обычного юзера и администратора, при этом возможности пользователя зависят от его статуса. Например, обычный пользователь не может изменять конкретный файл, тогда как администратор волен делать с файлом всё что ему заблагорассудится. Но когда пользователь Windows пытается применить ту же логику к Linux, то непременно сталкивается с трудностями понимания организации прав доступа.
Удивляться тут особо не приходится, ибо она основательно отличается от того, с чем приходится сталкиваться пользователю в Windows. Так, одним из ключевых отличий распределения прав доступа в Linux является назначение каждому файлу не только хозяина, но и группы. Кроме того, в линукс-системах имеются особые права доступа, позволяющие юзерам запускать приложения от имени суперпользователя без ввода его пароля, но обо всём по порядку.
На базовом уровне в Linux используются три параметра доступа к файлам. К ним относятся:
- Чтение — этот параметр позволяет просматривать содержимое файлов и директорий, но не вносить в них изменения.
- Запись — наличие этого параметра позволяет вносить в файл изменения и создавать/удалять файлы и папки в каталогах.
- Выполнение — особый параметр, предоставляющий разрешение на запуск исполняемых файлов — приложений и скриптов. Без этого ключа файлы приложений не будут идентифицированы как исполняемые.
Кроме того, в Linux имеется три категории пользователей, для которых могут быть изменены права доступа.
Таковыми категориями являются:
- Владелец — входящие в эту группу пользователи обычно имеют полный набор прав на созданные ими файлы, а также на файлы, для которых пользователь назначен владельцем.
- Группа — категория пользователей, связанная с файлом. По умолчанию группа создается для каждого юзера, при этом она имеет то же имя и ID , что и пользователь.
- Все остальные — эту категорию составляют все остальные пользователи, кроме владельца и не привязанных к файлу пользователей групп. Исключением является только суперпользователь (root) , который имеет полный доступ ко всем файлам независимо от их атрибутов.
Стоит также упомянуть о специальных правах доступа, так называемых битах, расширяющих полномочия обычных пользователей.
- SUID — заменяет ID запускающего программу пользователя на ID другого юзера, того же Root .
- SGID — работает так же, как и SUID , только при этом запускающий файл пользователь будет считаться членом группы, с которой этот файл связан.
- Sticky-bit — в настоящее время флаг утратил актуальность, раньше он применялся при создании общих папок. Файлы, для которых он установлен, можно читать и исполнять, но нельзя удалять, если только желающий удалить файл не является его владельцем.
Смотрим права доступа
Но довольно теории, давайте теперь посмотрим, как просматривать и изменять права доступа в Linux. Узнать права доступа для файла или папки можно в свойствах объекта на вкладке «Права», но для получения полной картины лучше использовать терминал.
Откройте его в каталоге с файлами и выполните такую команду:
Если нужно просмотреть права конкретного файла, к команде через пробел нужно добавить имя файла, например, ls -l NTUSER.DAT , если речь идет о папке, то указывается ее имя. В результате вы получите в терминале такую картинку.
Обратите внимание на набор из десяти символов в начале каждой строки, это символьное обозначение прав доступа в Линукс.
Первый символ обозначает тип данных, например, дефис означает, что вы имеете дело с обычным файлом, смотрите скриншоты ниже.
В следующих девяти символах «закодированы» права доступа. На самом деле, права указаны в каждой тройке символов, то есть полученную строку rwxrwxrwx можно представить как rwx—rwx—rwx. Первая группа — это права доступа хозяина объекта, вторая группа — это права системной группы, третья тройка символов означает права на файл для всех прочих пользователей.
А вот что означают сами символы:
Зная обозначения, можно легко разобрать любую комбинацию. Например, rwx означает, что пользователь или группа имеет права на чтение, запись и исполнение, r-x — права на доступ и исполнение, но с запретом на изменение или удаление, rw- станет означать наличие прав на чтение и запись, но не право запускать файл как исполняемый.
Как в Linux определить и заменить пользователя и группу
Как вы уже знаете, права в Linux могут иметь не только пользователи, но и группы, в связи с чем может возникнуть вопрос: а как определить имя владельца и название группы? Элементарно, их выводит та же команда ls -l . В третьей колонке слева указано имя владельца объекта, название же связанной с объектом группы указано в четвертой колонке.
При желании вы можете заменить хозяина и группу для файла или папки, воспользовавшись такой командой:
sudo chown u:g file
chown — это сама команда замены, u — имя пользователя, которому желаем делегировать права, g — название группы, а file — название самого файла. В данном случае мы передаем права суперпользователю — root .
Меняем права в Линукс для объектов ФС
Если за замену пользователя и группы в Линукс отвечает команда chown , то для изменения прав доступа в системе предусмотрена команда chmod .
Она имеет следующий синтаксис:
chmod категория действие права объект
Что такое категории вы уже знаете, это владельцы файлов, группы и все остальные пользователи. Обозначаются категории как u, g и o соответственно. Для сразу всех категорий используется обозначение a. Категории можно группировать, например, ug станет означать, что мы хотим изменить права на объект для владельца и группы.
Действие — это изменение прав. Для присвоения прав используется ключ «=», для добавления указывается флаг «+», чтобы забрать права, нужно использовать ключ «-». С обозначениями прав вы также уже знакомы. Всё, можно формировать команды.
Сделаем для примера файл ntuser.ini недоступным для редактирования и исполнения:
chmod ug-wx ntuser.ini
В результате символьное представление прав стало таким: r—r—rwx. Как видите, права на файл были изменены для текущих владельца и группы, но не для категории «Все остальные» , если же бы мы вместо ug указали ugo или a, право на чтение и исполнение потеряли бы все категории. Обратите внимание, что в данном случае мы не использовали sudo в начале команды, поскольку и так являемся владельцем. Если же бы изменяли права root или другого пользователя, использование sudo было бы обязательным.
Ну вот, теперь в самых общих чертах вы знаете, чем отличаются организация прав доступа в Линукс от организации прав доступа в Windows, а самое главное, умеете просматривать и изменять права. Уверены, эти знания очень вам пригодятся, позволяя максимально эффективно управлять доступом к пользовательским и системным файлам.