Где найти файлы пользователей астра линукс

Обновлено: 05.07.2024

Утилита find представляет универсальный и функциональный способ для поиска в Linux. Данная статья является шпаргалкой с описанием и примерами ее использования.

Общий синтаксис

find <где искать> <опции>

<где искать> — путь к корневому каталогу, откуда начинать поиск. Например, find /home/user — искать в соответствующем каталоге. Для текущего каталога нужно использовать точку «.».

<опции> — набор правил, по которым выполнять поиск.

* по умолчанию, поиск рекурсивный. Для поиска в конкретном каталоге можно использовать опцию maxdepth.

Описание опций

Тип объекта поиска. Возможные варианты:

  • f — файл;
  • d — каталог;
  • l — ссылка;
  • p — pipe;
  • s — сокет.

Также доступны логические операторы:

Оператор Описание
-a Логическое И. Объединяем несколько критериев поиска.
-o Логическое ИЛИ. Позволяем команде find выполнить поиск на основе одного из критериев поиска.
-not или ! Логическое НЕ. Инвертирует критерий поиска.

Полный набор актуальных опций можно получить командой man find.

Примеры использования find

Поиск файла по имени

1. Простой поиск по имени:

* в данном примере будет выполнен поиск файла с именем file.txt по всей файловой системе, начинающейся с корня /.

2. Поиск файла по части имени:

* данной командой будет выполнен поиск всех папок или файлов в корневой директории /, заканчивающихся на .tmp

3. Несколько условий.

а) Логическое И. Например, файлы, которые начинаются на sess_ и заканчиваются на cd:

б) Логическое ИЛИ. Например, файлы, которые начинаются на sess_ или заканчиваются на cd:

в) Более компактный вид имеют регулярные выражения, например:

* где в первом поиске применяется выражение, аналогичное примеру а), а во втором — б).

4. Найти все файлы, кроме .log:

* в данном примере мы воспользовались логическим оператором !.

Поиск по дате

1. Поиск файлов, которые менялись определенное количество дней назад:

find . -type f -mtime +60

* данная команда найдет файлы, которые менялись более 60 дней назад.

2. Поиск файлов с помощью newer. Данная опция доступна с версии 4.3.3 (посмотреть можно командой find --version).

а) дате изменения:

find . -type f -newermt "2019-11-02 00:00"

* покажет все файлы, которые менялись, начиная с 02.11.2019 00:00.

find . -type f -newermt 2019-10-31 ! -newermt 2019-11-02

* найдет все файлы, которые менялись в промежутке между 31.10.2019 и 01.11.2019 (включительно).

б) дате обращения:

find . -type f -newerat 2019-10-08

* все файлы, к которым обращались с 08.10.2019.

find . -type f -newerat 2019-10-01 ! -newerat 2019-11-01

* все файлы, к которым обращались в октябре.

в) дате создания:

find . -type f -newerct 2019-09-07

* все файлы, созданные с 07 сентября 2019 года.

find . -type f -newerct 2019-09-07 ! -newerct "2019-09-09 07:50:00"

* файлы, созданные с 07.09.2019 00:00:00 по 09.09.2019 07:50

По типу

Искать в текущей директории и всех ее подпапках только файлы:

* f — искать только файлы.

Поиск по правам доступа

1. Ищем все справами на чтение и запись:

find / -perm 0666

2. Находим файлы, доступ к которым имеет только владелец:

find / -perm 0600

Поиск файла по содержимому

find / -type f -exec grep -i -H "content" <> \;

* в данном примере выполнен рекурсивный поиск всех файлов в директории / и выведен список тех, в которых содержится строка content.

С сортировкой по дате модификации

* команда найдет все файлы в каталоге /data, добавит к имени дату модификации и отсортирует данные по имени. В итоге получаем, что файлы будут идти в порядке их изменения.

Лимит на количество выводимых результатов

Самый распространенный пример — вывести один файл, который последний раз был модифицирован. Берем пример с сортировкой и добавляем следующее:

Поиск с действием (exec)

1. Найти только файлы, которые начинаются на sess_ и удалить их:

find . -name "sess_*" -type f -print -exec rm <> \;

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

2. Переименовать найденные файлы:

find . -name "sess_*" -type f -exec mv <> new_name \;

3. Вывести на экран количество найденных файлов и папок, которые заканчиваются на .tmp:

find . -name "*.tmp" | wc -l

4. Изменить права:

find /home/user/* -type d -exec chmod 2700 <> \;

* в данном примере мы ищем все каталоги (type d) в директории /home/user и ставим для них права 2700.

5. Передать найденные файлы конвееру (pipe):

* в данном примере мы использовали find для поиска строки test в файлах, которые находятся в каталоге /etc, и название которых заканчивается на .conf. Для этого мы передали список найденных файлов команде grep, которая уже и выполнила поиск по содержимому данных файлов.

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

find /opt/project -type f -exec sed -i -e "s/test/production/g" <> \;

* находим все файлы в каталоге /opt/project и меняем их содержимое с test на production.

Чистка по расписанию

Команду find удобно использовать для автоматического удаления устаревших файлов.

Открываем на редактирование задания cron:

0 0 * * * /bin/find /tmp -mtime +14 -exec rm <> \;

* в данном примере мы удаляем все файлы и папки из каталога /tmp, которые старше 14 дней. Задание запускается каждый день в 00:00.
* полный путь к исполняемому файлу find смотрим командой which find — в разных UNIX системах он может располагаться в разных местах.

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

Это руководство покажет вам, как посмотреть список пользователей в системах Linux.

Список всех пользователей Linux с помощью файла /etc/passwd

Информация о локальных пользователях хранится в файле /etc/passwd. Каждая строка в этом файле представляет информацию для входа в систему для одного пользователя. Чтобы открыть файл, вы можете использовать cat или less:


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

  • Имя пользователя.
  • Зашифрованный пароль (x означает, что пароль хранится в файле /etc/shadow).
  • Идентификационный номер пользователя (UID).
  • Идентификационный номер группы пользователя (GID).
  • Полное имя пользователя (GECOS).
  • Домашний каталог пользователя.
  • Оболочка входа (по умолчанию /bin/bash).

Если вы хотите отображать только имя пользователя, вы можете использовать команды awk или cut для печати только первого поля, содержащего имя пользователя:


Получение списка всех пользователей с помощью команды getent

Команда getent отображает записи из баз данных, настроенных в файле /etc/nsswitch.conf, включая базу данных passwd, которую можно использовать для запроса списка всех пользователей.

Чтобы получить список всех пользователей Linux, введите следующую команду:


Как видите, вывод такой же, как и при отображении содержимого файла /etc/passwd. Если вы используете LDAP для аутентификации пользователей, getent будет отображать всех пользователей Linux как из файла /etc/passwd, так и из базы данных LDAP.

Вы также можете использовать awk или cut для печати только первого поля, содержащего имя пользователя:


Аналогичный результат можно получить с помощью команды compgen:

Как проверить, существует ли пользователь в системе Linux

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

Например, чтобы узнать, существует ли в нашей системе Linux пользователь с именем mial, мы можем использовать следующую команду:

Если пользователь существует, приведённая выше команда распечатает краткую информацию о нём. Если нет вывода, что означает, что пользователя не существует.


Мы также можем проверить, существует ли пользователь, не используя команду grep, как показано ниже:


Как и раньше, если пользователь существует, команда отобразит информацию для входа в систему.

Если вы хотите узнать, сколько учётных записей пользователей у вас в системе, передайте вывод getent passwd команде wc:


Как видно из вывода выше, на удалённом сервере Linux 510 учётных записи пользователей.

Системные и обычные пользователи

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

Обычные пользователи — это пользователи, созданные пользователем root или другим пользователем с привилегиями sudo. Обычно у обычного пользователя есть настоящая оболочка входа в систему и домашний каталог.

У каждого пользователя есть числовой идентификатор пользователя, называемый UID. Если не указан при создании нового пользователя с помощью команды useradd, UID будет автоматически выбран из файла /etc/login.defs в зависимости от значений UID_MIN и UID_MIN.

Чтобы проверить значения UID_MIN и UID_MIN в вашей системе, вы можете использовать следующую команду:

Из выходных данных выше мы видим, что все обычные пользователи должны иметь UID от 1000 до 60000. Знание минимального и максимального значения позволяет нам запрашивать список всех обычных пользователей в нашей системе.

Команда перечислит всех обычных пользователей в нашей системе Linux:


Значения UID_MIN и UID_MIN вашей системы могут отличаться, поэтому более общая версия приведённой выше команды будет:

Если вы хотите распечатать только имена пользователей, просто направьте вывод в команду cut:

Как показать пользователей, имеющих оболочки входа

Чтобы вывести список только пользователей с оболочками входа, используйте одну из следующих команд:

Обратите внимание, что эти команды не равнозначны.

Как вывести всех пользователей, имеющих домашний каталог

Если вы хотите составить список пользователей, у которых есть своя папка в директории /home, то используйте следующую команду:

Заключение

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

Те же команды применимы для любого дистрибутива Linux, включая Ubuntu, CentOS, RHEL, Debian, Linux Mint, Arch Linux и Manjaro.

Где хранить пользовательские данные, такие как документы, фотографии, музыка, видео, электронные книги и т. Д. В Linux? Основная идея заключается в том, чтобы иметь возможность переустанавливать и переформатировать системные диски в Linux без страха потери личных данных (MP3, JPG, PDF и т. Д., А не файлов пользовательских настроек).

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

Есть похожая тема: « Суперпользователи и домашний каталог », но эта тема настолько многословна и не дает конкретного ответа. Основными вопросами являются:

Должен ли я использовать /home или стоит определить мой собственный раздел, например /data ?

И если я определю свой собственный раздел, как сделать так, чтобы каждый раз, когда я переустанавливал ОС, мой собственный раздел был доступен (автоматически монтировался и был готов к использованию без углубления в конфиги)?

введите описание изображения здесь

Данные должны храниться в другом разделе файловой системы вашей ОС. В Linux личные данные хранятся в /home/username папке. Когда вы запустите установщик и он попросит вас создать раздел жесткого диска, я предлагаю вам создать расширенный раздел для домашней папки.
Если вам нужно отформатировать компьютер, вам нужно сделать это только с основным разделом.
Я прилагаю вам скриншот утилиты Gparted; это показывает мой диск. Когда вы переустанавливаете ОС и у вас уже есть домашняя папка, вам необходимо будет создать новый домашний каталог для нового пользователя и связать или переместить (осторожно) все файлы старой папки в новую папку.

ОБНОВЛЕНИЕ
Исходя из моего опыта, лучше иметь эксклюзивный раздел для вашего /home (Linux) или D:\ (Windows). Как в Windows, так и в Linux, в вашей папке данных будут создаваться некоторые файлы (в основном скрытые файлы), которые могут вызвать некоторые проблемы, если вы не будете осторожны при перемещении старых файлов в новую папку (при переустановке ОС). ,
Я пять раз переустанавливал свой Linux, не трогая свои личные данные, и без проблем делюсь ими с Win7 :)

Храните пользовательские данные в отдельном разделе от операционной системы. Если вы будете осторожны, чтобы не перезаписать этот раздел при переустановке операционной системы, эти данные будут в безопасности. Например, если на вашем компьютере есть два жестких диска, SSD и HDD, поместите операционную систему на SSD, а пользовательские данные - на HDD.

Мое мнение таково, что лучше не иметь отдельный /home раздел по двум причинам:

При переустановке операционной системы некоторые файлы в /home каталоге перезаписываются, но ваши пользовательские данные не будут затронуты, если они находятся в отдельном разделе.

Часто используемые файлы, такие как параметры конфигурации и образы виртуальных машин, могут храниться в /home каталоге, где к ним можно получить более быстрый доступ, если /home каталог находится на SSD.

Раздел данных можно сделать доступным, если он автоматически монтируется при запуске операционной системы. Это делается в Linux путем редактирования /etc/fstab файла и добавления в него новой строки, содержащей информацию о том, как раздел, который вы хотите автоматически монтировать при запуске, должен быть смонтирован в файловую систему.

Вы можете использовать пользовательские папки для папок в /home/ . Пример:

будет переключаться с /home/$USER/Downloads/ на /media/user/Downloads/ и загруженные документы будут затем загружаться на жесткий диск, а не на SSD. То же самое относится ко всем остальным каталогам. Смотрите

./config/user-dirs.dirs о ручном редактировании этих настроек. источник

Да, этот подход я использую в Windows, но главный вопрос заключается в том, должен ли я использовать /home или стоит определить мой собственный раздел, например, /data и если я определяю свой собственный раздел, как гарантировать, что каждый раз, когда я переустанавливаю ОС, мой собственный раздел доступно (автоматически смонтировано и готово к использованию без углубления в конфиги)? Использование чего-то другого, кроме /home обычных пользовательских данных, - это переизобретение колеса. Если вы выполняете много скачкообразных изменений, обе описанные вами проблемы легко решаются с помощью разных домашних каталогов пользователей, что проще всего сделать с использованием разных имен пользователей (например, trusty и vivid для Ubuntu 14.04 и 15.04), хотя есть и другие способы сделать это. Если вы не используете distro-hop, проблемы, которые вы идентифицировали, никогда не возникнут. В любом случае отклонение от стандарта означает, что ваша система необычна, что может потребовать дополнительного общения и создать незначительные проблемы при получении помощи в Интернете. Но это вся причина, почему /home существует! Там нет причин, чтобы не иметь /home на своем собственном разделе. Если вы не хотите использовать другую ОС, используйте другой раздел для этой ОС /home . Я использую то же самое /home без проблем, по крайней мере, в 4 разных дистрибутивах и разных версиях каждого дистрибутива. Если вы этого не хотите, просто используйте другое имя пользователя или задайте другое /home , но оставляйте /home отдельный раздел, это значительно упрощает переустановку . @terdon Новые пользователи Linux, которым настоятельно рекомендуется поместить все свои пользовательские данные в отдельный /home раздел, иногда приходят в ярость после случайной перезаписи 1 ТБ несохраненных пользовательских данных при выполнении ручного разбиения при неудачной установке Linux. Почему никто не предупредил их об этом? Я не думаю, что в этом случае неправильно отклоняться от стандартной идеи правильного использования Linux при условии, что я явно квалифицирую это как «свое собственное мнение», что я и сделал. Я не думаю, что разумно требовать, чтобы новые пользователи Linux, такие как Майк Б., походили на Афину, которая выскочила изо всех сил от брови Зевса. @karel хорошо, это совет, который я получил как новый пользователь, и он мне очень помог. На самом деле, мне удалось избежать потери данных именно из-за этого, поскольку у меня все было в отдельном разделе. Таким образом, если вы испортили свои разделы, вам может повезти, и вы не испортите тот, на котором хранятся ваши данные. Если у вас все на одном разделе, то вы облажались. Гораздо безопаснее иметь отдельные разделы, я не говорю, что вы не правы как таковые (я бы понизил рейтинг, если бы сделал), я просто не вижу никакой пользы в этом, и довольно много недостатков.

Делая обоснованное предположение здесь, вы ищете простое решение вашей проблемы

Не придавайте особого значения созданию другого раздела, но это зависит от вашей ситуации

Когда вы устанавливаете выбранный вами дистрибутив, убедитесь, что ваш диск / раздел обнулен, как в полном формате, это также может быть достигнуто с помощью «dd if = / dev / zero of = / dev / sda1», где sda1 Если вы предпочитаете использовать диск или раздел, вы можете получить аналогичные результаты с помощью команды типа «dd if = / dev / zero of = / home / user / zeros», это гарантирует, что неиспользуемое пространство не содержит никаких данных

Установите дистрибутив, настройте его так, как вы хотите

Используя установочный носитель, вы захотите создать образ диска, предыдущая команда поможет вам уменьшить использование пространства резервной копией, это можно сделать так: «dd if = / dev / sda1 | bzip2 | dd of = / path / в / backup », когда резервная копия находится на отдельном диске / разделе. Если вам необходимо восстановить указанную резервную копию, просто отмените приведенную выше команду и замените bzip2 на bunzip2

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

Вы можете рассмотреть возможность чтения и завершения linuxfromscratch, это поможет вам


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

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

  • Дате добавления.
  • Содержимому.
  • Регулярным выражениям.

Данная команда будет очень полезна системным администраторам для:

  • Управления дисковым пространством.
  • Бэкапа.
  • Различных операций с файлами.

Команда find в Linux производит поиск файлов и папок на основе заданных вами критериев и позволяет выполнять действия с результатами поиска.

Синтаксис команды find:

  • directory-to-search (каталог поиска) – это отправной каталог, с которой find начинает поиск файлов по всем подкаталогам, которые находятся внутри. Если не указать путь, тогда поиск начнется в текущем каталоге;
  • criteria (критерий) – критерий, по которым нужно искать файлы;
  • action (действие) – что делать с каждым найденным файлом, соответствующим критериям.

Поиск по имени

Следующая команда ищет файл s.txt в текущем каталоге:

  • . (точка) – файл относится к нынешнему каталогу
  • -name – критерии по которым осуществляется поиск. В данном случае поиск по названию файла.

В данном случае критерий -name учитывает только символы нижнего регистра и файл S.txt не появиться в результатах поиска. Чтобы убрать чувствительность к регистру необходимо использовать –iname.

Для поиска всех изображений c расширением .jpg нужно использовать шаблон подстановки *.jpg:

Можно использовать название каталога для поиска. Например, чтобы с помощью команды find найти все png изображения в каталоге home:

Поиск по типу файла

Критерий -type позволяет искать файлы по типу, которые бывают следующих видов:

  • f – простые файлы;
  • d – каталоги;
  • l – символические ссылки;
  • b – блочные устройства (dev);
  • c – символьные устройства (dev);
  • p – именованные каналы;
  • s – сокеты;

Например, указав критерий -type d будут перечислены только каталоги:

Поиск по размеру файла

Допустим, что вам необходимо найти все большие файлы. Для таких ситуаций подойдет критерий -size.

  • "+" — Поиск файлов больше заданного размера
  • "-" — Поиск файлов меньше заданного размера
  • Отсутствие знака означает, что размер файлов в поиске должен полностью совпадать.

В данном случае поиск выведет все файлы более 1 Гб (+1G).

Единицы измерения файлов:

Поиск пустых файлов и каталогов

Критерий -empty позволяет найти пустые файлы и каталоги.

Поиск времени изменения

Критерий -cmin позволяет искать файлы и каталоги по времени изменения. Для поиска всех файлов, измененных за последний час (менее 60 мин), нужно использовать -60:

Таким образом можно найти все файлы в текущем каталоге, которые были созданы или изменены в течение часа (менее 60 минут).

Для поиска файлов, которые наоборот были изменены в любое время кроме последнего часа необходимо использовать +60.

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

Критерий -atime позволяет искать файлы по времени последнего доступа.

Таким образом можно найти файлы, к которым не обращались последние полгода (180 дней).

Поиск по имени пользователя

Опция –user username дает возможность поиска всех файлов и каталогов, принадлежащих конкретному пользователю:

Таким образом можно найти все файлы пользователя tisha в каталоге home, а 2>/dev/null сделает выдачу чистой без ошибок в отказе доступа.

Поиск по набору разрешений

Критерий -perm – ищет файлы по определенному набору разрешений.

Поиск файлов с разрешениями 777.

Операторы

Для объединения нескольких критериев в одну команду поиска можно применять операторы:

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

Если файлы могут принадлежать не только пользователю tisha, но и пользователю pokeristo, а также быть размером более 1 Гбайта.

Перед скобками нужно поставить обратный слеш "\".

Действия

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

  • -delete — Удаляет соответствующие результатам поиска файлы
  • -ls — Вывод более подробных результатов поиска с:
    • Размерами файлов.
    • Количеством inode.

    -delete

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

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

    Данное действие является особенным и позволяет выполнить команду по вашему усмотрению в результатах поиска.

    • command – это команда, которую вы желаете выполнить для результатов поиска. Например:
      • rm
      • mv
      • cp

      С помощью –exec можно написать альтернативу команде –delete и применить ее к результатам поиска:

      Другой пример использования действия -exec:

      Таким образом можно скопировать все .jpg изображения в каталог backups/fotos

      Заключение

      Команду find можно использовать для поиска:

      • Файлов по имени.
      • Дате последнего доступа.
      • Дате последнего изменения.
      • Имени пользователя (владельца файла).
      • Имени группы.
      • Размеру.
      • Разрешению.
      • Другим критериям.

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

      • Удаление.
      • Копирование.
      • Перемещение в другой каталог.

      Команда find может сильно облегчить жизнь системному администратору, а лучший способ овладеть ей – больше практиковаться.

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