Параметры утилиты XCOPY
xcopy источник ] ] [{/a|/m}] ]] [{/y|/-y}]
источник —
Обязательный параметр. Задает местонахождение и имена файлов для копирования. Параметр должен задавать или диск, или путь.
результат
— Задает место, куда будут скопированы файлы. Параметр может включать имя диска с двоеточием, имя каталога, имя файла или их комбинацию.
/w
— Выводит следующее сообщение с ожиданием подтверждения начала копирования: Нажмите любую клавишу, чтобы начать копирование файлов
/p
— Запрашивает подтверждение при создании каждого файла-результата.
/c
— Игнорирует ошибки.
/v
— Проверяет каждый скопированный файл на соответствие его оригиналу.
/q
— Отменяет вывод на экран сообщений команды xcopy.
/f
— Выводит имена исходных файлов и файлов-результатов в процессе копирования.
/l
— Отображает список копируемых файлов.
/g
— Создает незашифрованные файлы-результаты.
/d
— Копирует только файлы, измененные не ранее заданной даты. Если не включить значение мм-дд-гггг, команда xcopy копирует все файлы-источники, которые новее существующих файлов-результатов. Эта возможность позволяет обновлять только измененные файлы.
/u
— Копирует (обновляет) только те файлы-источники, которые уже существуют в каталоге результата.
/i
— Если источником является каталог или источник содержит подстановочные знаки и результат не существует, команда xcopy считает, что результат — это имя каталога, и создает новый каталог. Затем xcopy копирует все указанные файлы в новый каталог. По умолчанию команда xcopy запрашивает подтверждение, является ли параметр результат каталогом или файлом.
/s
— Копирует каталоги и подкаталоги, если они не пусты. Если параметр /s не задан, команда xcopy будет работать только с одним каталогом.
/e
— Копирует все подкаталоги, включая пустые. Параметр /e используется с параметрами /s и /t.
/t
— Копирует только структуру подкаталога (т. е. дерево), а не файлы. Для копирования пустых каталогов следует задать ключ /e.
/k
— Копирует файлы с атрибутом «только для чтения» с сохранением этого атрибута для скопированных файлов, оригиналы которых имеют этот атрибут. По умолчанию команда xcopy удаляет атрибут «только для чтения».
/r
— Копирует файлы с атрибутом «только для чтения».
/h
— Копирует системные и скрытые файлы. По умолчанию команда xcopy не копирует системные и скрытые файлы.
/n
— Копирует с использованием коротких имен файловой системы NTFS. Параметр /n требуется при копировании из файловой системы NTFS в файловую систему FAT или когда на диске-результате требуется использование соглашения об именах файлов как в файловой системе FAT (8.3). Файлы могут записываться в файловую систему FAT или NTFS.
/o
— Копирует сведения о принадлежности файлов и избирательной таблице управления доступом (DACL).
/x
— Копирует сведения о параметрах аудита файла и системной таблице управления доступом (SACL) (подразумевается наличие /p).
/exclude:файл1]]
— Определяет список файлов, содежащих строки.
/y
— Устраняет выдачу запроса на подтверждение перезаписи существующего конечного файла.
/-y
— Выдает запрос на подтверждение перезаписи существующего конечного файла.
/z
— Копирует по сети в режиме перезапуска.
Примеры команды XCOPY
Чтобы копировать все файлы и подкаталоги (включая пустые подкаталоги) с диска D на диск E, введите.
Утилита XCopy — одно из самых старых и полезных средств перемещения данных. Назначение XCopy состоит в изменении местоположения папок. Проводник во многом заменил эту утилиту, и по возможности мы рекомендуем пользоваться именно им. Тем не менее, существуют несколько важных применений утилиты XCopy:
- сценарии для манипуляций с файлами;
- перемещение отдельных файлов в сложной структуре;
- копирование всех доступных файлов, даже если некоторые файлы не могут быть перемещены;
- архивирование данных из одной системы на другую;
- перемещение файлов с конкретными атрибутами.
Многие используют утилиту XCopy в качестве приложения для архивации, поскольку она замечательно справляется с этой задачей. Вы можете легко скопировать файлы данных из папки на архивный носитель, например, другой жесткий диск, дискету, Zip-накопитель или сетевой накопитель. К сожалению, утилита XCopy не поддерживает такой традиционный носитель, как магнитная лента. Кроме того, носитель, на который производится копирование, должен быть размечен, поэтому XCopy не позволяет записывать файлы на компакт диски.
Предоставление и отзыв прав суперпользователя
Каждому пользователю в Linux можно предоставить root-права, добавив его в соответствующую группу. Точно так же их можно и отнять, если вдруг это понадобится. Рассмотрю три варианта действий.
Создание нового пользователя с root
Допустим, что вы, единственный юзер в Linux, хотите создать еще одну учетную запись с правами суперпользователя. В таком случае алгоритм действий обретет следующий вид:
- Откройте Терминал и введите команду sudo adduser user (user замените на нужное имя пользователя).
- В консоли появятся инструкции по созданию нового пользователя. Присвойте пароль и подтвердите действие, чтобы завершить создание.
- Добавьте новую учетную запись в группу sudo, введя sudo usermod -aG sudo user (user здесь тоже понадобится заменить).
- Проверьте выполненные действия, переключившись на новую учетную запись через su testuser. Для подтверждения введите пароль (при вводе символы не отображаются на экране).
- Выполните любую команду с sudo и убедитесь, что все прошло успешно.
Для существующей учетной записи
Если учетная запись уже добавлена, в консоли остается ввести только одну команду, чтобы добавить пользователя в группу sudo и разрешить ему получение рут-прав. Сама команда представлена ниже, вам остается только скопировать ее и поменять имя юзера.
sudo usermod -aG sudo user
Используйте предыдущую инструкцию для проверки внесенных изменений.
Откат прав суперпользователя
Если вдруг вы решили, что одна из учетных записей больше не должна состоять в группе sudo, отзовите права, введя команду:
sudo deluser user sudo
Измените user на необходимое имя. Можете переключиться на эту учетную запись и убедиться в том, что теперь команды с sudo она выполнять не может.
Это была вся основная информация о правах суперпользователя в Linux. Вы знаете, что дают такие привилегии, как их правильно использовать и управлять пользователями. В качестве рекомендации скажу, что всегда нужно читать текст ошибок, появляющихся в Терминале, если что-то пошло не так. Это позволит вам быстрее решить проблему без траты времени на поиски в Google.
Как посмотреть права доступа к файлам в Linux
Конечно, вы можете посмотреть права доступа к файлам в Linux с помощью файлового менеджера. Все они поддерживают эту функцию, но так вы получите неполную информацию. Для максимально подробной информации обо всех флагах, в том числе специальных, нужно использовать команду ls с параметром -l. Все файлы из каталога будут выведены в виде списка, и там будут показаны все атрибуты и биты.
Чтобы узнать права на файл linux выполните такую команду, в папке где находится этот файл:
За права файлов в linux тут отвечают черточки. Первая это тип файла, который рассмотрен в отдельной статье. Дальше же идут группы прав сначала для владельца, для группы и для всех остальных. Всего девять черточек на права и одна на тип.
Рассмотрим подробнее, что значат условные значения флагов прав:
- — — нет прав, совсем;
- —x — разрешено только выполнение файла, как программы но не изменение и не чтение;
- -w- — разрешена только запись и изменение файла;
- -wx — разрешено изменение и выполнение, но в случае с каталогом, вы не можете посмотреть его содержимое;
- r— — права только на чтение;
- r-x — только чтение и выполнение, без права на запись;
- rw- — права на чтение и запись, но без выполнения;
- rwx — все права;
- —s — установлен SUID или SGID бит, первый отображается в поле для владельца, второй для группы;
- —t — установлен sticky-bit, а значит пользователи не могут удалить этот файл.
В нашем примере, файл test1 имеет типичные разрешения для программ, владелец может все, группа только чтение и выполнение, а все остальные — только выполнение. Для test2 дополнительно установлен флаг SUID и SGID. А для папки test3 установлен Sticky-bit. Файл test4 доступный всем. Теперь вы знаете как посмотреть права на файл linux.
Просмотр разрешений
Для просмотра прав доступа к файлу мы используем параметр длинного списка для команды ls.
ls -l
В приведенном выше примере первые 10 символов вывода — это то, на что мы смотрим, чтобы определить разрешения.
Первый символ определяет тип файла. Если это тире (-), то это обычный файл.
Следующие 3 символа представляют разрешения для владельца. Буква обозначает наличие разрешения, а тире (-) обозначает отсутствие разрешения. В этом примере владелец имеет все разрешения (чтение, запись и выполнение).
Следующие 3 символа представляют разрешения для группы. В этом примере группа имеет возможность читать, но не писать или выполнять
Обратите внимание, что порядок разрешений всегда читается, затем записывается и выполняется.
Наконец, последние 3 символа представляют разрешения для других (или всех остальных). В этом примере у них есть разрешение на выполнение и больше ничего.
Разрешения для файлов Linux
Прежде чем идти дальше, давайте объясним базовую модель разрешений Linux.
В Linux каждый файл связан с владельцем и группой и имеет права доступа для трех разных классов пользователей:
- Владелец файла.
- Члены группы.
- Остальные (все остальные).
Владение файлом можно изменить с помощью команд и .
К каждому классу применяются три типа прав доступа к файлам:
- Разрешение на чтение.
- Разрешение на запись.
- Разрешение на выполнение.
Эта концепция позволяет указать, каким пользователям разрешено читать файл, записывать в файл или выполнять файл.
Права доступа к файлам можно просмотреть с помощью команды :
Первый символ показывает тип файла. Это может быть обычный файл ( ), каталог ( ), символическая ссылка ( ) или любой другой специальный тип файла.
Следующие девять символов представляют права доступа к файлу, три тройки по три символа каждая. Первый триплет показывает разрешения владельца, второй — разрешения группы, а последний триплет — разрешения для всех остальных. Разрешения могут иметь разное значение в зависимости от типа файла.
В приведенном выше примере ( ) означает, что владелец файла имеет разрешения на чтение и запись ( ), а группа и другие пользователи имеют разрешения только на чтение ( ).
Каждый из трех троек разрешений может состоять из следующих символов и иметь различные эффекты, в зависимости от того, установлены ли они для файла или для каталога:
Влияние разрешений на файлы
Разрешение | символ | Значение в файле |
---|---|---|
Читать | Файл не читается. Вы не можете просмотреть содержимое файла. | |
Файл доступен для чтения. | ||
Написать | Файл нельзя изменить или модифицировать. | |
Файл можно изменить или модифицировать. | ||
Выполнить | Файл не может быть выполнен. | |
Файл можно запустить. | ||
Если он найден в триплете, он устанавливает бит . Если он находится в тройке , он устанавливает бит . Это также означает, что установлен флаг . Когда для исполняемого файла флаги или , файл выполняется с правами владельца и / или группы. | ||
То же, что и но флаг не установлен. Этот флаг редко используется для файлов. | ||
Если он обнаружен в триплетах, он устанавливает бит . Это также означает, что установлен флаг . Этот флаг бесполезен для файлов. | ||
То же, что и но флаг не установлен. Этот флаг бесполезен для файлов. |
Влияние разрешений на каталоги (папки)
В Linux каталоги — это особые типы файлов, которые содержат другие файлы и каталоги.
Разрешение | символ | Значение в каталоге |
---|---|---|
Читать | Содержимое каталога не отображается. | |
Можно показать содержимое каталога. (например, вы можете перечислить файлы внутри каталога с помощью .) | ||
Написать | Содержимое каталога нельзя изменить. | |
Содержимое каталога может быть изменено. (например, вы можете создавать новые файлы , удалять файлы и т. д.) | ||
Выполнить | Каталог не может быть изменен на. | |
По каталогу можно перемещаться с помощью . | ||
Если он находится в тройке , он устанавливает бит . Если он находится в триплете, он устанавливает бит . Это также означает, что установлен флаг . Когда для каталога флаг новые файлы, созданные в нем, наследуют идентификатор группы каталогов (GID) вместо идентификатора основной группы пользователя, создавшего файл. не влияет на каталоги. | ||
То же, что и но флаг не установлен. Этот флаг бесполезен для каталогов. | ||
Если он обнаружен в триплетах, он устанавливает бит . Это также означает, что установлен флаг . Когда для каталога установлен бит закрепления, только владелец файла, владелец каталога или административный пользователь может удалять или переименовывать файлы в каталоге. | ||
То же, что и но флаг не установлен. Этот флаг бесполезен для каталогов. |
Изменение прав доступа. Команда chmod
Представим, что вы не хотите, чтобы ваш коллега видел ваши личные изображения. Это может быть достигнуто путем изменения прав доступа к файлам с помощью команды (сокр. от «change mode»). Используя эту команду, мы можем установить права доступа (Чтение, Запись, Выполнение) к файлу/каталогу для Владельца, Группы и всех Остальных пользователей.
Синтаксис команды следующий:
Существует два способа использования команды : символьный и числовой.
Использование команды chmod в символьном режиме
Чтобы задать параметры разрешений для каждой отдельной категории пользователей, применяются следующие символы:
— владелец;
— группа;
— остальные пользователи;
— для всех трех категорий (Владелец + Группа + Остальные).
А также используются следующие математические символы:
— добавление разрешений;
— удаление разрешений;
— переопределение существующих разрешений новым значением.
Теперь, когда вы знаете, как это работает, давайте попробуем использовать команду в символьном режиме и установим новые разрешения для ранее упомянутого файла Адреса.txt следующим образом:
чтение, запись и выполнение для Владельца;
чтение и запись для членов Группы;
чтение для Остальных пользователей.
В результате мы получаем:
Как видите, права доступа к файлу изменились с на , что нам и требовалось.
А если мы теперь хотим убрать разрешение на чтение файла для пользователей, не входящих в нашу группу и не являющихся владельцем файла, то достаточно выполнить следующее:
Результат:
Права доступа к файлу изменились с на .
Подумав, мы решаем дать полные права (за исключением права на выполнение) абсолютно всем пользователям системы, и выполняем команду:
Результат:
Права доступа к файлу изменились с на . Все пользователи могут читать и изменять наш файл, но ни у кого нет права на его выполнение.
Использование команды chmod в числовом режиме
Другой способ указать права доступа к файлу — применить команду в числовом режиме. В этом режиме каждое разрешение файла представлено некоторым числом (в восьмеричной системе счисления):
(чтение/просмотр) = 4
(запись/изменение) = 2
(выполнение) = 1
(не задано) =
Допускается объединение данных числовых значений, и таким образом одно число может использоваться для представления всего набора разрешений. В следующей таблице приведены цифры для всех типов разрешений:
Число | Тип разрешения | Символ |
Нет разрешения | −−− | |
1 | Выполнение | −−x |
2 | Запись | −w− |
3 (2+1) | Запись + Выполнение | −wx |
4 | Чтение | r−− |
5 (4+1) | Чтение + Выполнение | r−x |
6 (4+2) | Чтение + Запись | rw− |
7 (4+2+1) | Чтение + Запись + Выполнение | rwx |
Поскольку вы должны определить разрешения для каждой категории пользователей (Владелец, Группа, Остальные), команда будет включать в себя три числа (каждое из которых представляет собой сумму привилегий).
В качестве примера, давайте посмотрим на наш файл Адреса.txt, права которого, я напомню, мы сконфигурировали (в символьном режиме) с помощью команды:
Те же параметры разрешений, но уже в числовом формате, можно определить следующим образом:
Теперь поменяем разрешения файла так, чтобы Владелец мог читать и писать, Группа — только читать, а у Остальных — вообще не было прав на доступ. Судя по вышеприведенной таблице, для Владельца числовое представление прав доступа соответствует числу (), для Группы — числу (), а для Остальных — (). В совокупности должно получиться ():
Результат:
Как видите, права изменились с на , этого мы и хотели.
Повышение пользовательских прав командой sudo
Существует более современный способ повышения пользовательских прав с помощью команды sudo (substitute user and do — подменить пользователя и выполнить).
Sudo является программой системного администрирования, дающей возможность выполнять команды от имени root. Если для выполнения команды su все пользователи должны были знать пароль root, что само по себе небезопасно, то sudo его не требует. В sudo нужен пароль самого пользователя.
Sudo работает следующим образом, перед командой которую необходимо выполнить, нужно добавить sudo, например:
От имени root: yum install -y wget При помощи sudo: sudo yum install -y wget
Sudo определяет пользователя сверяясь с настройками находящимися в файле /etc/sudoers, если пользователь внесен в sudoers, то команда выполняется. Если выполнить команду sudo от имени пользователя не внесенного в sudoers, то можно увидеть такую картину:
$ sudo yum install -y wget password for test: test is not in the sudoers file. This incident will be reported.
При попытке выполнить команду sudo, от имени пользователя test, выдается ответ что такого пользователя в файле sudoers не обнаружено. О событии создается запись в лог файле, также высылается электронное письмо root-пользователю с уведомлением о случившемся.
From [email protected] Sat Feb 11 20:19:12 2017 Return-Path: <[email protected]> X-Original-To: root Delivered-To: [email protected] Received: by test2.localdomain (Postfix, from userid 0) id CD2AF8051BC; Sat, 11 Feb 2017 20:19:12 +0300 (MSK) To: [email protected] From: [email protected] Auto-Submitted: auto-generated Subject: *** SECURITY information for test2 *** Message-Id: <[email protected]> Date: Sat, 11 Feb 2017 20:19:12 +0300 (MSK) test2 : Feb 11 20:19:12 : test : user NOT in sudoers ; TTY=pts/0 ; PWD=/home/test ; USER=root ; COMMAND=/bin/yum install wget
Для того чтобы пользователь мог выполнять sudo, его надо внести в файл sudoers. Сделать это можно двумя способами.
Первый способ — внесение имени пользователя непосредственно в сам файл /etc/sudoers. Для изменения файла sudoers, требуется обладать правами root.
nano /etc/sudoers Находим строку: root ALL=(ALL) ALL Добавляем под нее имя пользователя, которому будет разрешен доступ к sudo: root ALL=(ALL) ALL test ALL=(ALL) ALL Сохраняем и выходим.
После того как пользователь будет внесен в список допущенных к использованию, он может выполнять команду sudo.
Вторым способом разрешить пользователям выполнять команду sudo, является внесение пользователя в группу wheel, точно так же как в случае с командой su.
Вносим пользователя в группу wheel: usermod -a -G wheel techlist_1 Проверяем: id techlist_1 uid=1001(techlist_1) gid=1004(techlist_1) группы=1004(techlist_1),10(wheel) Перезагружаем систему: reboot
После перезагрузки системы, пользователь внесенный в группу wheel, сможет выполнять sudo.
Для того чтобы полностью сменить окружение пользователя на окружение root, используется команда sudo -i, что равносильно использованию команды su —
$ sudo -i password for test: #
Возвращение в свое пользовательское окружение, происходит при помощи команды exit.
Каждый раз при использовании sudo, требуется ввод пароля пользователя. При вводе пароля, происходит обновление временной метки, что позволяет выполнять sudo без ввода пароля на протяжении некоторого времени. По умолчанию ввод пароля не требуется на протяжении пяти минут, после чего пароль опять будет затребован. Временной промежуток можно изменить при помощи опции timeout в файле sudoers. Существует возможность отключения ввода пароля.
Отключить ввод пароля для пользователей принадлежащих к группе wheel:
Открываем для внесения изменений: nano /etc/sudoers Находим строку: # %wheel ALL=(ALL) NOPASSWD: ALL Раскомментировать строку: %wheel ALL=(ALL) NOPASSWD: ALL Сохраняем изменения и выходим.
Отключить ввод пароля для пользователей добавленных вручную:
Открываем для внесения изменений: nano /etc/sudoers Находим строку с нужным пользователем: test ALL=(ALL) ALL Изменяем ее: test ALL=(ALL) NOPASSWD: ALL Сохраняем изменения и выходим.
Sudo гибкая в настройке и позволяет настроить множество различных параметров. Грамотный администратор знающий sudo может творить настоящие чудеса с пользователями.
Для просмотра руководства по настройке sudo, выполняется команда:
Посмотреть руководство sudo: man sudoers Выйти из руководства: q Посмотреть список дополнительных опций команды: sudo -h
Комментарии
-
Использование /z
Если вы потеряли подключение на этапе копирования (например, если сервер переходит в режим «вне сети»), то после повторного подключения Подключение возобновится. /z также отображает процент выполнения операции копирования для каждого файла.
-
Использование /y в переменной среды копикмд.
В переменной среды КОПИКМД можно использовать параметр /y . Эту команду можно переопределить с помощью /-и в командной строке. По умолчанию выводится запрос на перезапись.
-
Копирование зашифрованных файлов
Копирование зашифрованных файлов на том, который не поддерживает EFS, приводит к ошибке. Сначала расшифровать файлы или скопировать их на том, который поддерживает EFS.
-
Добавление файлов
Чтобы добавить файлы, укажите один файл для назначения, но несколько файлов для источника (то есть с помощью подстановочных знаков или формата file1 + file2 + файл3).
-
Значение по умолчанию для назначения
Если опустить назначение, команда xcopy скопирует файлы в текущий каталог.
-
Указание того, является ли назначение файлом или каталогом
Если объект Destination не содержит существующий каталог и не заканчивается обратной косой чертой (), появляется следующее сообщение:
Нажмите клавишу F, если хотите скопировать файл или файлы в файл. Нажмите клавишу D, если хотите скопировать файл или файлы в каталог.
Это сообщение можно отключить с помощью параметра командной строки /i , в результате чего команда xcopy предполагает, что назначение является каталогом, если источником является более одного файла или каталога.
-
Использование команды xcopy для установки атрибута архива для целевых файлов
Команда xcopy создает файлы с установленным атрибутом Archive, независимо от того, был ли этот атрибут задан в исходном файле. Дополнительные сведения об атрибутах файлов и attribсм. в разделе .
-
Сравнение xcopy и diskcopy
Если у вас есть диск, содержащий файлы в подкаталогах, и вы хотите скопировать его на диск, имеющий другой формат, используйте команду xcopy вместо команды diskcopy. Так как команда diskcopy копирует диски по дорожке, исходный и целевой диски должны иметь одинаковый формат. Команда xcopy не имеет этого требования. Используйте xcopy , если вам не нужна полная копия образа диска.
-
Коды выхода для команды xcopy
Для обработки кодов завершения, возвращаемых xcopy, используйте параметр ERRORLEVEL в командной строке If в пакетной программе. Пример пакетной программы, обрабатывающей коды завершения с помощью If, см. в разделе . В следующей таблице перечислены все коды выхода и их описание.
Код выхода Описание Файлы были скопированы без ошибок. 1 Не найдены файлы для копирования. 2 Пользователь нажал клавиши CTRL + C для завершения команды xcopy. 4 Произошла ошибка инициализации. Недостаточно памяти или места на диске, либо в командной строке введено недопустимое имя диска или недопустимый синтаксис. 5 Произошла ошибка записи на диск.