Вывести полную информацию обо всех файлах и проанализировать уровни доступа

Обновлено: 07.07.2024

Команда ls выводит список файлов и каталогов в файловой системе и показывает подробную информацию о них. Это часть пакета основных утилит GNU, который установлен во всех дистрибутивах Linux.

Эта статья покажет вам, как использовать команду ls, на практических примерах и подробных объяснениях наиболее распространенных параметров ls.

Как использовать команду ls

Синтаксис команды ls следующий:

При использовании без параметров и аргументов ls отображает список имен всех файлов в текущем рабочем каталоге :

Файлы перечислены в алфавитном порядке в столько столбцов, сколько может поместиться на вашем терминале:

Чтобы вывести список файлов в определенном каталоге, передайте путь к каталогу в качестве аргумента команде ls . Например, чтобы отобразить содержимое каталога /etc , введите:

Вы также можете передать несколько каталогов и файлов, разделенных пробелом:

У команды ls есть несколько опций. В следующих разделах мы рассмотрим наиболее часто используемые варианты.

Формат длинных списков

По умолчанию вывод команды ls показывает только имена файлов и каталогов, что не очень информативно.

Параметр -l (нижний регистр L) указывает ls печатать файлы в формате длинного списка.

Когда используется формат длинного списка, вы можете увидеть следующую информацию о файле:

  • Тип файла.
  • Права доступа к файлу.
  • Количество жестких ссылок на файл.
  • Владелец файла.
  • Файловая группа.
  • Размер файла.
  • Дата и время.
  • Имя файла.

Давайте объясним самые важные столбцы вывода.

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

Следующие два поля root root показывают владельца файла и группу, за которыми следует размер файла ( 337 ), показанный в байтах. Используйте параметр -h если вы хотите печатать размеры в удобочитаемом формате. Вы можете изменить владельца файла с помощью команды chown .

Показать скрытые файлы

Чтобы отобразить все файлы, включая скрытые, используйте параметр -a :

Сортировка вывода

Как мы уже упоминали, по умолчанию команда ls перечисляет файлы в алфавитном порядке.

Параметр --sort позволяет сортировать вывод по расширению, размеру, времени и версии:

Если вы хотите получить результаты в обратном порядке сортировки, используйте параметр -r .

Например, чтобы отсортировать файлы в каталоге /var по времени модификации в обратном порядке, вы должны использовать:

Стоит отметить, что команда ls не показывает общее пространство, занятое содержимым каталога. Чтобы узнать размер каталога , используйте команду du .

Рекурсивный список подкаталогов

Параметр -R указывает команде ls рекурсивно отображать содержимое подкаталогов:

Выводы

Команда ls отображает информацию о файлах и каталогах.

Для получения дополнительной информации о ls посетите страницу GNU Coreutils или введите man ls в свой терминал.

Если у вас есть какие-либо вопросы или отзывы, не стесняйтесь оставлять комментарии.

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

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

Основные права доступа к файлам в Linux

Изначально каждый файл имел три параметра доступа. Вот они:

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

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

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

Именно с помощью этих наборов полномочий устанавливаются права файлов в linux. Каждый пользователь может получить полный доступ только к файлам, владельцем которых он является или к тем, доступ к которым ему разрешен. Только пользователь Root может работать со всеми файлами независимо от их набора их полномочий.

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

Специальные права доступа к файлам в Linux

Для того, чтобы позволить обычным пользователям выполнять программы от имени суперпользователя без знания его пароля была придумана такая вещь, как SUID и SGID биты. Рассмотрим эти полномочия подробнее.

  • SUID - если этот бит установлен, то при выполнении программы, id пользователя, от которого она запущена заменяется на id владельца файла. Фактически, это позволяет обычным пользователям запускать программы от имени суперпользователя;
  • SGID - этот флаг работает аналогичным образом, только разница в том, что пользователь считается членом группы, с которой связан файл, а не групп, к которым он действительно принадлежит. Если SGID флаг установлен на каталог, все файлы, созданные в нем, будут связаны с группой каталога, а не пользователя. Такое поведение используется для организации общих папок;
  • Sticky-bit - этот бит тоже используется для создания общих папок. Если он установлен, то пользователи могут только создавать, читать и выполнять файлы, но не могут удалять файлы, принадлежащие другим пользователям.

Теперь давайте рассмотрим как посмотреть и изменить права на файлы в Linux.

Как посмотреть права доступа к файлам в Linux

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

Чтобы узнать права на файл linux выполните такую команду, в папке где находится этот файл:

perm

За права файлов в linux тут отвечают черточки. Первая это тип файла, который рассмотрен в отдельной статье. Дальше же идут группы прав сначала для владельца, для группы и для всех остальных. Всего девять черточек на права и одна на тип.

Рассмотрим подробнее, что значат условные значения флагов прав:

  • --- - нет прав, совсем;
  • --x - разрешено только выполнение файла, как программы но не изменение и не чтение;
  • -w- - разрешена только запись и изменение файла;
  • -wx - разрешено изменение и выполнение, но в случае с каталогом, вы не можете посмотреть его содержимое;
  • r-- - права только на чтение;
  • r-x - только чтение и выполнение, без права на запись;
  • rw- - права на чтение и запись, но без выполнения;
  • rwx - все права;
  • --s - установлен SUID или SGID бит, первый отображается в поле для владельца, второй для группы;
  • --t - установлен sticky-bit, а значит пользователи не могут удалить этот файл.

В нашем примере, файл test1 имеет типичные разрешения для программ, владелец может все, группа только чтение и выполнение, а все остальные - только выполнение. Для test2 дополнительно установлен флаг SUID и SGID. А для папки test3 установлен Sticky-bit. Файл test4 доступный всем. Теперь вы знаете как посмотреть права на файл linux.

Как изменить права файла в Linux

Чтобы изменить права на файл в linux вы можете использовать утилиту chmod. Она позволяет менять все флаги, включая специальные. Рассмотрим ее синтаксис:

$ chmod опции категория действие флаг файл

Опции сейчас нас интересовать не будут, разве что только одна. С помощью опции -R вы можете заставить программу применять изменения ко всем файлам и каталогам рекурсивно.

Категория указывает для какой группы пользователей нужно применять права, как вы помните доступно только три категории:

Действие может быть одно из двух, либо добавить - знак "+", либо убрать - знак - "-". Что касается самих прав доступа, то они аналогичны выводу утилиты ls: r - чтение, w - запись, x - выполнение, s - suid/sgid, в зависимости от категории, для которой вы его устанавливаете, t - устанавливает sticky-bit. Например, всем пользователям полный доступ к файлу test5:

chmod ugo+rwx test5

Или заберем все права у группы и остальных пользователей:

chmod go-rwx test5

Дадим группе право на чтение и выполнение:

chmod g+rx test5

Остальным пользователям только чтение:

Для файла test6 установим SUID:

А для test7 - SGID:

Посмотрим что получилось:

perm1

Как видите, изменить права на файл в Linux очень просто. К тому же вы можете изменить основные права с помощью файлового менеджера.

Выводы

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

На завершение хочу предложить неплохое видео про права доступа в Linux:

Для понимания структуры доступа в файловой системе часто требуется знать, каким пользователям и группам пользователей какие права доступа назначены к папкам и файлам. Одним из способов быстро узнать эту информацию является команда ls с опцией -l . О том, какие подводные камни могут быть при работе с этой командой и как всё-таки посмотреть информацию о распределении доступа к файлам и директориям на диске, подробно рассмотрим на примерах ниже.

Создание файла и просмотр сведений о его владельце, группе и правах доступа

Сперва создадим файл file командой touch так, как описано в → этой статье. Для того, чтобы посмотреть информацию о его владельце, группе и правах доступа нужно набрать команду ls -l ИмяФайла . В итоге получим сводку по этому файлу:

Первый набор символов отвечает за права доступа, далее идет имя владельца, за ним группа, потом дата/время создания и потом имя файла. Этой информации достаточно для того, чтобы определить, кто и что может делать с этим файлом и, если что-то не работает по причине того, что каких-то прав не хватает, то это становится ясно.

Создание папки и просмотр сведений о её владельце, группе и правах доступа

Создадим папку folder командой mkdir так, как описано в → этой статье. Если действовать по такой же схеме, как и описано выше, то окажется, что этого недостаточно. Будет выдана информация только о размере папки:

Поэтому с папками при просмотре сведении о ней работаем по такой схеме: смотрим информацию не об этой папке, а общую информацию о всей папке. Тогда информация о вложенных в неё файлах и папках выдаётся в полной мере:

Как отличить папку от файла в linux

Сразу на этом примере остановлюсь на вопросе о том, как отличить папку от файла в linux. В самом начале строки в символах о правах доступа у файла первым символом идет - тогда, как у папки первый символ это буква d . Именно это отличает папку от файла.

Альтернатива есть почти всегда! ;)

Как вывести дерево каталогов с правами, группой и пользователем с помощью команды tree читать по → этой ссылке.

Задание на лабораторную работу
1. Ознакомиться с файловой структурой ОС UNIX. Изучить команды работы с файлами.
2. Используя команды ОС UNIX, создать два текстовых файла.



3. Полученные файлы объединить в один файл и его содержимое просмотреть на экране.


4. Создать новую директорию и переместить в нее полученные файлы и вывести полную информацию обо всех файлах и проанализировать уровни доступа.




5. Добавить для всех трех файлов право выполнения членам группы и остальным пользователям и просмотреть атрибуты файлов.



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



7. Произвести поиск заданной последовательности символов в файлах текущей директории и получить перечень соответствующих файлов.



  1. Получить информацию об активных процессах и имена других пользователей.

  1. Провести ряд экспериментов, иллюстрирующих реакцию системы на удаление файла, на который имеются ссылки, и файла, на который имеются символические ссылки.

Создание структуры каталогов и файлов

Создание рабочей копии файла и внесение в нее версионных изменений.

bash2-2.05$ cp Hum-Dum.txt HD

bash2-2.05$ ed HD

q
Создание подкаталога D1 и новой версии файла в нем.
bash2-2.05$ mkdir D1

bash2-2.05$ cd D1

bash2-2.05$ cp ../HD HD

bash2-2.05$ ed HD

q
Создание подкаталога D3 и мягкой ссылки в нем.
bash2-2.05$ mkdir D3

bash2-2.05$ cd D3

bash2-2.05$ ln -s ../HD HD
Создание подкаталога D6 и жесткой ссылки в нем.
bash2-2.05$ mkdir D6

bash2-2.05$ cd D6

bash2-2.05$ ln ../../../HD HD
Возврат в домашний каталог.
bash2-2.05$ cd
Создание подкаталога D2 и подкаталогов в нем.
bash2-2.05$ mkdir D2

bash2-2.05$ cd D2

bash2-2.05$ mkdir D4

bash2-2.05$ mkdir D5
Создание файла и жесткой ссылки в подкаталоге D4.
bash2-2.05$ cp ../../HD HD

bash2-2.05$ ed HD

bash2-2.05$ ln HD HD1
Создание мягкой ссылки в подкаталоге D5.
bash2-2.05$ cd ../D4

bash2-2.05$ ln -s HD HD1
Возврат в домашний каталог.
bash2-2.05$ cd
Следующий протокол должен войти в отчет.
bash2-2.05$ pwd

/home/ap10999
Распечатка структуры.
bash2-2.05$ ls -laR

drwx------ 4 ap10999 ap109 4096 Сен 6 07:43 .

drwxr-xr-x 178 root root 4096 Сен 3 07:00 ..

-rw------- 1 ap10999 students 3651 Сен 6 07:40 .bash_history

drwxr-xr-x 3 ap10999 students 4096 Сен 6 07:41 D1

drwxr-xr-x 4 ap10999 students 4096 Сен 6 07:43 D2

-rw-r--r-- 2 ap10999 students 210 Сен 6 07:41 HD

-rw-r--r-- 1 ap10999 students 201 Сен 3 08:41 Hum-Dum.txt

-rw-r--r-- 1 ap10999 students 3831 Сен 5 19:08 mbox

-rw-r--r-- 1 ap10999 students 0 Сен 6 07:40 p2

-rw------- 1 ap10999 students 469 Сен 5 19:20 sonet98.txt
./D1:

drwxr-xr-x 3 ap10999 students 4096 Сен 6 07:41 .

drwx------ 4 ap10999 ap109 4096 Сен 6 07:43 ..

drwxr-xr-x 3 ap10999 students 4096 Сен 6 07:42 D3

-rw-r--r-- 1 ap10999 students 210 Сен 6 07:41 HD
./D1/D3:

drwxr-xr-x 3 ap10999 students 4096 Сен 6 07:42 .

drwxr-xr-x 3 ap10999 students 4096 Сен 6 07:41 ..

drwxr-xr-x 2 ap10999 students 4096 Сен 6 07:43 D6

lrwxrwxrwx 1 ap10999 students 5 Сен 6 07:42 HD -> ../HD
./D1/D3/D6:

drwxr-xr-x 2 ap10999 students 4096 Сен 6 07:43 .

drwxr-xr-x 3 ap10999 students 4096 Сен 6 07:42 ..

-rw-r--r-- 2 ap10999 students 210 Сен 6 07:41 HD
./D2:

drwxr-xr-x 4 ap10999 students 4096 Сен 6 07:43 .

drwx------ 4 ap10999 ap109 4096 Сен 6 07:43 ..

drwxr-xr-x 2 ap10999 students 4096 Сен 6 07:44 D4

drwxr-xr-x 2 ap10999 students 4096 Сен 6 07:45 D5
./D2/D4:

drwxr-xr-x 2 ap10999 students 4096 Сен 6 07:44 .

drwxr-xr-x 4 ap10999 students 4096 Сен 6 07:43 ..

-rw-r--r-- 2 ap10999 students 210 Сен 6 07:44 HD

-rw-r--r-- 2 ap10999 students 210 Сен 6 07:44 HD1
./D2/D5:

drwxr-xr-x 2 ap10999 students 4096 Сен 6 07:45 .

drwxr-xr-x 4 ap10999 students 4096 Сен 6 07:43 ..

lrwxrwxrwx 1 ap10999 students 8 Сен 6 08:14 HD -> ../D4/HD
Распечатка файлов (по 3 первых строки файла).
bash2-2.05$ head -n3 HD

Set on the wall.
bash2-2.05$ head -n3 HD

Set on the wall.
bash2-2.05$ head -n3 ./D1/HD

Set on the wall.
bash2-2.05$ head -n3 ./D1/D3/HD

Set on the wall.
bash2-2.05$ head -n3 ./D1/D3/D6/HD

Set on the wall.
bash2-2.05$ head -n3 ./D2/D4/HD1

Set on the wall.
bash2-2.05$ head -n3 ./D2/D4/HD1

Set on the wall.
bash2-2.05$ head -n3 ./D2/D5/HD

Set on the wall.

Проверка поведения ссылок при удалении/переименовании файла

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

Удаление файла.
bash2-2.05$ rm ./D2/D4/HD
Проверка жесткой ссылки к удаленному файлу.
bash2-2.05$ head -n3 ./D2/D4/HD1

Set on the wall.
Проверка мягкой ссылки к удаленному файлу.
bash2-2.05$ head ./D2/D5/HD

head: ./D2/D5/HD: No such file or directory
Переименование файла.
bash2-2.05$ mv HD HD1
Проверка жесткой ссылки к переименованному файлу.
bash2-2.05$ head ./D1/D3/D6/HD
Версия 1

Set on the wall.
Переименование файла.
bash2-2.05$ mv ./D1/HD ./D1/HD1
Проверка мягкой ссылки к переименованному файлу.
bash2-2.05$ head -n3 ./D1/D3/HD

head: ./D1/D3/HD: No such file or directory
Удаление созданных каталогов
bash2-2.05$ rm -r D1

bash2-2.05$ rm -r D2

bash2-2.05$ ls -la

drwx------ 2 ap10999 ap109 4096 Сен 6 18:18 .

drwxr-xr-x 179 root root 4096 Сен 6 11:58 ..

-rw------- 1 ap10999 students 4257 Сен 6 08:22 .bash_history

-rw-r--r-- 1 ap10999 students 210 Сен 6 07:41 HD1

-rw-r--r-- 1 ap10999 students 201 Сен 3 08:41 Hum-Dum.txt

-rw-r--r-- 1 ap10999 students 3831 Сен 5 19:08 mbox

-rw-r--r-- 1 ap10999 students 0 Сен 6 18:12 p2

-rw------- 1 ap10999 students 469 Сен 5 19:20

Проверка управления доступом

Следующий протокол демонстрирует реализацию пунктов 7 - 12 плана выполнения работы.

Открытие доступа.
bash2-2.05$ chmod g+w HD1

Открыт доступ: /home/ap10999/HD1

Открыт доступ: /home/ap10998/Lir1

EOF
Чтение "чужого" файла.
bash2-2.05$ head -n3 ../ap10998/Lir1

Исписал он стихами тома.

Редактирование "чужого" файла.
bash2-2.05$ ed ../ap10998/Lir1

Создание ссылок на "чужой" файл.
bash2-2.05$ ln ../ap10998/Lir1 Lir

bash2-2.05$ write ap10998

EOF
Проверка доступа к "чужому" файлу по ссылкам.
bash2-2.05$ ls -la

drwx------ 2 ap10999 ap109 4096 Сен 6 08:43 .

drwxr-xr-x 179 root root 4096 Сен 6 11:58 ..

-rw------- 1 ap10999 students 6162 Сен 6 08:12 .bash_history

-rw-rw-r-- 1 ap10999 students 231 Сен 6 07:22 HD1

-rw-r--r-- 1 ap10999 students 201 Сен 3 08:41 Hum-Dum.txt

-rw-rw-r-- 2 ap10998 students 878 Сен 6 08:43 Lir

lrwxrwxrwx 1 ap10999 students 15 Сен 6 08:43 Lir1 -> ../ap10998/Lir1

-rw-r--r-- 1 ap10999 students 3831 Сен 5 19:08 mbox

-rw-r--r-- 1 ap10999 students 845 Сен 6 08:39 p1

-rw-r--r-- 1 ap10999 students 0 Сен 6 08:40 p2

-rw------- 1 ap10999 students 469 Сен 5 19:20 sonet98.txt
bash2-2.05$ cat Lir
Версия 1

Читайте также: