Маска имени файла linux

Маска имени файла linux

При выполнении операций копирования и перемещения (или переименования) файлов вы имеете возможность изменить имена копируемых или перемещаемых файлов. Для этого вы должны задать маску для имен файлов-источников и маску для имен файлов, которые будут созданы (файлы-приемники). Обычно эта вторая маска представляет собой несколько символов замены (wildcards) в конце строки, определяющей место назначение создаваемых файлов. Задание масок осуществляется в строках ввода, отображаемых в окне, появляющемся после обращения к командам копирования / переноса (рис. 6.6).

Все файлы, удовлетворяющие маске источника, будут переименованы (скопированы или перемещены с новыми именами) в соответствии с маской файла-приемника. Если имеются помеченные файлы, то копируются (перемещаются) только помеченные файлы, удовлетворяющие заданной маске для файлов-источников.

Рис. 6.6. Диалоговое окно для переименования файлов

Есть еще несколько опций, которые влияют на выполнение операций копирования/перемещения файлов, и которые устанавливаются в том же окне запроса, где задаются маски имен файлов, либо через команду меню Настройки | Конфигурация .

Опция Разименовывать ссылки (Follow links) определяет, будут ли при копировании жестких или символических ссылок в каталоге-приемнике (и рекурсивно в подкаталогах) создаваться такие же ссылки, или будут копироваться файлы (и подкаталоги), на которые эти ссылки указывают.

Опция Внутрь каталога, если есть (Dive into subdirs) определяет, что делать, если в каталоге-приемнике уже существует подкаталог, имя которого совпадает с именем файла (каталога), который копируется (источника). По умолчанию (опция отключена) содержимое каталога-источника копируется в каталог-приемник. Если опция включена, то в каталоге приемнике будет создан новый подкаталог с тем же именем, в который и будет осуществляться копирование.

Лучше показать это на примере. Пусть вы хотите скопировать содержимое каталога one в каталог /two/one, который уже существует. Обычно (опция отключена) mc будет просто копировать все файлы из one в /two/one. Если опцию включить, копирование файлов будет производиться в /two/one/one.

Опция Сохранять атрибуты (Preserve attributes) определяет, будут ли при копировании/перемещении сохранены атрибуты исходного файла: права доступа, временные метки и, если вы root, UID и GID исходного файла. Если опция отключена, атрибуты будут установлены в соответствии с текущим значением umask.

На процедуры копирования и перемещения файлов оказывает также влияние установка опции Образцы в стиле shell в меню Настройки / Конфигурация. Когда эта опция включена, вы можете использовать символы замены (wildcards) ‘*’ и ‘?’ в маске источника. Они обрабатываются аналогично тому, как это делается в shell. В маске приемника разрешается использовать только ‘*’ и ‘\ цифра > ‘. Первый символ ‘*’ в маске приемника соответствует первой группе символов замены в маске источника, второй символ ‘*’ соответствует второй группе и т. д. Аналогично, символ замены ‘\1’ соответствует первой группе символов замены в маске источника, символ ‘\2’ — второй группе и т. д. Символ ‘\0’ соответствует целому имени файла-источника. Приведем пару примеров.

Пример 1 . Если маска источника «*.tar.gz», а маска приемника — «/two/*.tgz», и имя копируемого файла — «foo.tar.gz», копия будет называться «foo.tgz» и будет находиться в каталоге «/two».

Пример 2. Предположим, вы хотите поменять местами имя и расширение файла, так чтобы «file.c» стал файлом «c.file». Маска источника для этого должна иметь вид «*.*», а маска приемника — «\2.\1».

Когда опция Образцы в стиле shell ( » Use shell patterns ” ) выключена, mc не осуществляет автоматической группировки. Для указания групп символов в маске источника, которые будут соответствовать символам замены в маске приемника, вы должны в этом случае использовать скобки ‘\(. \)’. Этот способ более гибкий, но требует больше усилий при вводе. Снова приведем два примера

Пример 3 . Если маска источника имеет вид «^\(.*\)\.tar\.gz$», копирование производится в «/two/*.tgz» и копируется файл «foo.tar.gz», то результатом будет «/two/foo.tgz».

Пример 4 . Предположим, что вы хотите поменять местами имя файла и его расширение, так чтобы имена вида «file.c» приняли вид «c.file».

Маска источника для этого — «^\(.*\)\.\(.*\)$», а маска приемника — «\2.\1».

При выполнении операций копирования/перемещения вы можете также преобразовать регистр символов в именах файлов. Если вы используете ‘\u’ или ‘\l’ в маске приемника, то следующий символ имени будет образован в верхнем (заглавные символы) или нижнем (строчные) регистре соответственно.

Если использовать в маске приемника ‘\U’ или ‘\L’, то к соответствующему регистру будут преобразованы все последующие символы, вплоть до следующего вхождения ‘\L’ или ‘\U’, или же до конца имени файла.

Читайте также:  Криптопро для линукс альт

Применение ‘\u’ и ‘\l’ обеспечивает более широкие возможности, чем ‘\U’ и ‘\L’.

Например, если маска источника есть ‘*’ (опция Образцы в стиле shell включена) или ‘^\(.*\)$’ (опция Образцы в стиле shell выключена), а маска приемника есть ‘\L\u*’, имена файлов будут преобразованы таким образом, что первые буквы имени будут заглавными, а все остальные — строчными.

Символ ‘\’ в масках используется для отмены специальной интерпретации отдельных символов. Например, ‘\\’ означает просто обратный слэш (как литерал) и ‘\*’ означает просто звездочку (asterisk).

Источник

Команда Umask в Linux

Umask Command in Linux

В операционных системах Linux и Unix все новые файлы создаются с набором разрешений по умолчанию. umask

Утилита позволяет просматривать и устанавливать маску режима создания файла, который определяет разрешения для вновь создаваемых файлов или каталогов.

Он используется командами mkdir, touch, tee и другими, которые создают новые файлы и каталоги.

Разрешения Linux

Прежде чем идти дальше, давайте кратко объясним модель разрешений Linux.

В Linux каждый файл связан с владельцем и группой и ему назначены права доступа для трех разных классов пользователей:

  • владелец файла.
  • члены группы.
  • все остальные.

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

  • разрешение на чтение.
  • разрешение на запись.
  • разрешение на выполнение.

Эта концепция позволяет вам указать, каким пользователям разрешено читать файл, записывать в файл или выполнять файл.

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

Первый символ представляет тип файла, который может быть обычным file ( — ), directory ( d ), символической ссылкой ( l ) или любым другим специальным типом файла.

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

Символ r с восьмеричным значением 4 стоит для чтения, w с восьмеричным значением 2 для записи, x с восьмеричным значением 1 для разрешения на выполнение и ( — ) с восьмеричным значением 0 для без разрешений.

Есть также три типа разрешений специального файла: setuid , setgid и Sticky Bit .

В приведенном выше примере ( rwxr-xr-x ) означает, что владелец имеет разрешения на чтение, запись и выполнение ( rwx ), группа и другие пользователи имеют разрешения на чтение и выполнение.

Если мы представим права доступа к файлу с помощью числовой записи, мы подойдем к числу 755 :

  • Владелец: rwx = 4+2+1 = 7
  • Группа: r-x = 4+0+1 = 5
  • Другое: r-x = 4+0+1 = 5

Когда они представлены в цифровом формате, разрешения могут иметь три или четыре восьмеричных цифры (0-7). Первая цифра представляет специальные разрешения, а если она опущена, это означает, что никаких специальных разрешений для файла не установлено. В нашем случае так 755 же, как 0755 . Первая цифра может быть комбинацией 4 для setuid , 2 для setgid и 1 для Sticky Bit .

Права доступа к файлам можно изменить с помощью chmod команды, а владельца — с помощью chown команды.

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

По умолчанию в системах Linux разрешения 666 на создание по умолчанию предназначены для файлов, которые дают права на чтение и запись для пользователя, группы и других, а также 777 для каталогов, что означает разрешение на чтение, запись и выполнение для пользователя, группы и других. Linux не позволяет создавать файл с разрешениями на выполнение.

Разрешения на создание по умолчанию можно изменить с помощью umask утилиты.

umask влияет только на текущую среду оболочки. В большинстве дистрибутивов Linux значение umask по умолчанию для всей системы устанавливается в файле pam_umask.so или /etc/profile .

Если вы хотите указать другое значение для каждого пользователя, отредактируйте файлы конфигурации оболочки пользователя, такие как

/.zshrc . Вы также можете изменить текущее umask значение сеанса , выполнив с umask последующим желаемым значением.

Чтобы просмотреть текущее значение маски, просто введите umask без аргументов:

Выход будет включать

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

Как мы уже упоминали, разрешения на создание файлов по умолчанию 666 и для каталогов 777 . Чтобы вычислить биты прав доступа для новых файлов, вычтите значение umask из значения по умолчанию.

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

  • Файлы: 666 — 022 = 644 . Владелец может читать и изменять файлы. Группа и другие могут только читать файлы.
  • Каталоги: 777 — 022 = 755 Владелец может перейти в каталог и просмотреть список, изменить, создать или удалить файлы в каталоге. Группа и другие могут cd в каталог и список и читать файлы.

Вы также можете отобразить значение маски в символической записи, используя -S опцию:

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

Установка значения маски

Маска создания файла может быть установлена ​​с использованием восьмеричной или символической записи. Чтобы сделать изменения постоянными, установите новое umask значение в глобальном файле конфигурации, таком как /etc/profile файл, который будет влиять на всех пользователей, или в файлах конфигурации оболочки пользователя, таких как

Читайте также:  Иконки микрофона для windows

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

Прежде чем вносить изменения в umask значение, убедитесь, что новое значение не представляет потенциальной угрозы безопасности. Значения менее строгие, чем 022 следует использовать с большой осторожностью. Например, umask 000 означает, что любой пользователь будет иметь права на чтение, запись и выполнение для всех вновь создаваемых файлов.

Допустим, мы хотим установить более строгие разрешения для вновь создаваемых файлов и каталогов, чтобы другие не могли обращаться cd к каталогам и читать файлы. Разрешения, которые мы хотим, 750 для каталогов и 640 для файлов.

Чтобы вычислить umask значение, просто вычтите требуемые разрешения из разрешения по умолчанию:

Umask значение: 777-750 = 027

Желаемое umask значение, представленное в числовой записи 027 .

Чтобы навсегда установить новое значение для всей системы, откройте /etc/profile файл в текстовом редакторе:

и измените или добавьте следующую строку в начале файла:

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

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

Если вы проверите разрешения с помощью ls команды, вы заметите, что новый файл имеет 640 и новый каталог 750 разрешений, как мы хотели:

Другой способ установить маску создания файла — использовать символическую запись. Например так umask u=rwx,g=rx,o= же, как umask 027 .

Вывод

В этом руководстве мы объяснили права доступа Linux и как использовать umask команду для установки битов разрешений для вновь создаваемых файлов или каталогов.

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

Источник

Персональный блог Толика Панкова

Стихи, рассказы, философия, IT, политика, панкизм, раздолбайство и болтовня.

ТАКОГО ВЫ ЕЩЕ НЕ ВИДЕЛИ: депутат Никонов лайкал в фейсбуке депутата Железняка

Linux. Получение списка файлов по маске с игнорированием регистра символов имени файла.

Всем известна команда ls , выводящая список файлов на консоль. Если требуется вывести только файлы с расширением .iso , то в команду подставляется маска файла: ls *.iso
И все бы хорошо, но команда ls , как и другие команды Linux, любит строгое совпадение регистра имен файлов, т.е. если в каталоге есть файлы с расширением .ISO , .Iso и .iso , то ls *.iso выдаст только те, которые с расширением именно что .iso , и проигнорирует остальные. А вот Windows регистр имен файлов глубоко пофиг, хотя, современные версии Windows и сохраняют регистр в имени файлов. Но для аналогичной линуксовой команде ls команды Windows dir , что .ISO , что .Iso , что .iso — равнозначны, и все командой dir *.iso будут выведены.

Можно воспользоваться мощной командой find , которая умеет игнорировать регистр имен файлов (на самом деле, она кучу всего умеет, см. в источниках):

-maxdepth 1 -iname

— путь к каталогу, в котором производится поиск.
-maxdepth 1 — глубина поиска 1 — только в текущем каталоге, без параметра -maxdepth — во всех подкаталогах и ниже.
-iname — игнорировать регистр имени файла.
— маска файла

Чтобы обрезать полный путь (а find выдает полный путь к файлу(-ам)) до имени, можно воспользоваться командой

— полный путь к файлу

Объединить работу двух команд можно с помощью цикла for

Создадим отдельную функцию create_list() , принимающую два параметра — путь к каталогу и маску файла, и выдающую список файлов в переменную $FOUNDLST :

Источник

Команда Umask в Linux

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

Он используется командами mkdir, touch, tee и другими, которые создают новые файлы и каталоги.

Разрешения Linux

Прежде чем идти дальше, давайте вкратце объясним модель разрешений Linux.

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

  • владелец файла.
  • члены группы.
  • все остальные.

К каждому классу применяются три типа разрешений:

  • разрешение на чтение.
  • разрешение на запись.
  • разрешение на выполнение.

Эта концепция позволяет указать, каким пользователям разрешено читать файл, записывать в файл или выполнять файл.

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

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

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

Символ r с восьмеричным значением 4 обозначает чтение, w с восьмеричным значением 2 для записи, x с восьмеричным значением 1 для разрешения на выполнение и ( — ) с восьмеричным значением 0 для отсутствия разрешений.

Читайте также:  Nexus 3 mac os �� ����� ����������

Есть также три других специальных типа разрешений для файлов: setuid , setgid и Sticky Bit .

В приведенном выше примере ( rwxr-xr-x ) означает, что владелец имеет разрешения на чтение, запись и выполнение ( rwx ), группа и другие имеют разрешения на чтение и выполнение.

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

  • Владелец: rwx = 4+2+1 = 7
  • Группа: rx = 4+0+1 = 5
  • Другое: rx = 4+0+1 = 5

В числовом представлении права доступа могут иметь три или четыре восьмеричных цифры (0-7). Первая цифра представляет особые разрешения, а если она не указана, это означает, что для файла не установлены специальные разрешения. В нашем случае 755 совпадает с 0755 . Первая цифра может быть комбинацией 4 для setuid , 2 для setgid и 1 для Sticky Bit .

Права доступа к файлам можно изменить с помощью команды chmod а владельца — с помощью команды chown .

Понимание umask

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

Разрешения на создание по умолчанию можно изменить с помощью утилиты umask .

umask влияет только на текущую среду оболочки. В большинстве дистрибутивов Linux общесистемное значение umask по умолчанию устанавливается в pam_umask.so или /etc/profile .

Если вы хотите указать другое значение для каждого пользователя, отредактируйте файлы конфигурации оболочки пользователя, такие как

/.zshrc . Вы также можете изменить значение umask текущего сеанса, запустив umask за которым следует желаемое значение.

Чтобы просмотреть текущее значение маски, просто введите umask без аргументов:

Вывод будет включать

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

Как мы уже упоминали, права на создание по умолчанию для файлов — 666 а для каталогов — 777 . Чтобы вычислить биты прав доступа для новых файлов, вычтите значение umask из значения по умолчанию.

Например, чтобы рассчитать, как umask 022 повлияет на вновь созданные файлы и каталоги, используйте:

  • Файлы: 666 — 022 = 644 . Владелец может читать и изменять файлы. Группа и другие могут только читать файлы.
  • Каталоги: 777 — 022 = 755 755. Владелец может перейти в каталог и просмотреть список для чтения, изменения, создания или удаления файлов в каталоге. Группа и другие могут cd в каталог и список и читать файлы.

Вы также можете отобразить значение маски в символьной нотации, используя параметр -S :

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

Установка значения маски

Маска создания файла может быть задана с использованием восьмеричной или символьной записи. Чтобы сделать изменения постоянными, установите новое значение umask в глобальном файле конфигурации, таком как /etc/profile file, который повлияет на всех пользователей, или в файлах конфигурации оболочки пользователя, таких как

/.zshrc которые затронет только пользователя. Пользовательские файлы имеют приоритет над глобальными файлами.

Прежде чем вносить изменения в значение umask убедитесь, что новое значение не представляет потенциальной угрозы безопасности. Значения менее строгие, чем 022 следует использовать с большой осторожностью. Например, umask 000 означает, что любой пользователь будет иметь права на чтение, запись и выполнение для всех вновь созданных файлов.

Допустим, мы хотим установить более строгие разрешения для вновь создаваемых файлов и каталогов , так что другие не смогут cd справочников и читать файлы. Нам нужны разрешения 750 для каталогов и 640 для файлов.

Чтобы вычислить значение umask просто вычтите желаемые разрешения из значения по умолчанию:

Значение 777-750 = 027 : 777-750 = 027

Желаемое значение umask представленное в числовой записи, равно 027 .

Чтобы навсегда установить новое значение для всей системы, откройте файл /etc/profile текстовом редакторе:

и измените или добавьте следующую строку в начало файла:

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

Чтобы проверить новые настройки, мы создадим один новый файл и каталог с помощью mkdir и touch :

Если вы проверите разрешения с помощью команды ls вы заметите, что новый файл имеет разрешения 640 а новый каталог — 750 , как мы и хотели:

Другой способ установить маску создания файла — использовать символическую нотацию. Например, umask u=rwx,g=rx,o= совпадает с umask 027 .

Выводы

В этом руководстве мы объяснили разрешения Linux и как использовать команду umask для установки битов разрешений для вновь создаваемых файлов или каталогов.

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

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

Источник

Оцените статью