Лично я считаю, что xargs - это весело и все такое, но я предпочитаю циклы для такого рода вещей. Почему? Что ж, это дает вам больше гибкости ... а также дает вам довольно простой способ обрабатывать пробелы:
mpc | head -n 1 | while read filename
do
ls -al "$filename" # Look at the file you're deleting
rm -i "$filename" # Ask if you want it deleted (or not)
done
Когда вы используете такой цикл while, ваши данные перекачиваются в любое имя переменной, которое появляется после "read"; чтобы ссылаться на переменную, вам понадобится ведущий знак доллара. Кавычки нужны для изящной обработки пробелов, поэтому они не похожи на разделители. Подобные петли, хотя и менее элегантны, чем простой однострочный, предлагают вам большую гибкость и безумно удобны в долгосрочной перспективе.
Эта 3-битная -система ACL берет свое начало в TRUSIX. Другие системы ACL, такие как системы в стиле NFS4 -в FreeBSD, MacOS, AIX, Illumos и Solaris, работают иначе, и эта концепция записи управления доступом по маске отсутствует.
Маска — это, как следует из названия, маска, которая применяется к маскированию разрешений, предоставленных записями управления доступом для пользователей и групп. Это максимальное разрешение, которое может быть предоставлено любой записью управления доступом, кроме владельца файла или «другой» записи. Его 3 бита and
объединены с 3 битами этих других записей.
Так, например, если пользователю предоставлено rw-
записью управления доступом, но маска имеет значение r--
, пользователь фактически будет иметь только r--
доступ. И наоборот, если пользователю предоставляется только --x
запись управления доступом, маска rwx
не предоставляет дополнительных разрешений, и пользователь имеет только доступ --x
.
Маска по умолчанию для родительского каталога — это настройка маски, которая применяется к объектам, созданным в нем. Это форма наследования.
Жалко, что IEEE 1003.1e так и не стал стандартом и был отозван в 1998 году. На практике, девятнадцать лет спустя, это стандарт, который поддерживает широкий спектр операционных систем — от Linux до FreeBSD — Solaris(вместе со списками ACL в стиле NFS4 -в последних случаях )— фактически реализованы.
Рабочий проект IEEE 1003.1e #17 представляет интерес для чтения, и я рекомендую его. В приложении B § 23.3 рабочая группа приводит подробное восьмистраничное обоснование несколько сложного способа работы списков контроля доступа POSIX по отношению к старым флагам разрешений группы S_IRWXG
. (Стоит отметить, что люди из TRUSIX предоставили почти такой же анализ десятью годами ранее. )Это покрывает raison d'être для маски, которую я только уточню здесь.
chmod(…,000)
. При наличии списков ACL это только отключает все разрешения пользователей и групп, если есть маска и старая S_IRWXG
соответствует ей. Без этого установка старых прав доступа к файлу на 000
не повлияет ни на какие записи, не являющиеся -владельцами user
или group
, а другие пользователи, как ни странно, по-прежнему будут иметь доступ к объекту. Временное изменение битов доступа к файлу на «нет доступа» с помощью chmod 000
, а затем обратное их изменение было старым механизмом блокировки файлов, использовавшимся до того, как в Unix появились рекомендательные механизмы блокировки, которые — как вы можете видеть — люди все еще используют. даже в 21 веке . (С конца 1990-х годов рекомендательную блокировку легко использовать в сценариях с хорошо -переносимыми инструментами, такими как setlock
.)
chmod go-rwx
, и в конечном итоге только владелец объекта сможет получить доступ к объекту. Опять же, это не работает, если нет маски и к ней не привязаны старые разрешения S_IRWXG
; потому что в противном случае эта команда chmod
не отключила бы никакие записи управления доступом, не являющиеся -владельцами user
или group
, что привело бы к тому, что пользователи, не являющиеся владельцами, и группы, не являющиеся -владельцами, сохраняли бы доступ к тому, что ] ожидается, что будет доступен только владельцу.И снова — как видите — такого рода chmod
повеления все еще были общепринятой мудростью двенадцать лет спустя. Обоснование остается в силе.
and
объединены с ними, в большинстве случаев требовала бы, чтобы флаги прав доступа к файлам были rwxrwxrwx
, что чертовски запутало бы многие приложения Unix, которые жалуются, когда они видят то, что они считают -доступным для записи материалом. or
объединены с ними, имела бы проблему chmod(…,000)
, упомянутую ранее. Следовательно, система ACL с маской.