Значения по умолчанию ACL, не повиновавшись на копии по NFS

В предположении,

  1. Ваша локаль использует кодировку UTF-8, и

  2. Приблизительно 10% Вашего файла состоят из символов, которые требуют, чтобы больше чем один октет закодировал в UTF-8.

Между прочим, от man wc:

   -c, --bytes
          print the byte counts

   -m, --chars
          print the character counts
3
14.11.2013, 00:24
2 ответа

Я думаю, что ACLs эпизодически поддерживаются различными способами в NFS. См. эту статью о веб-сайте проекта NFS.

Если бы это не проблема, то я был бы чрезвычайно подозрителен к cp. Я, кажется, вспоминаю Вопросы и ответы относительно команды cp не полностью копируя ACLs независимо от целенаправленный тип монтирования.

Я полагаю, что это было это названные Вопросы и ответы U&L: Используя setfacl, чтобы позволить элементам группы писать в любой файл в каталоге, который привел меня к этому SF названные Вопросы и ответы: Почему CP не уважает ACLs?.

Иронически наш собственный @Gilles записал ответ на том, что Вопросы и ответы SF, который объясняет почему cp не поддерживает распространение ACLs. Я полагаю, что это - все еще текущая ситуация!

выборка из ответа @Gilles

Если CP создает целевой файл, оно копирует полномочия исходного файла, за исключением битов, которые установлены в umask. Это - стандартное поведение (см., например, шаг 3.b в Единственном Unix v3 (POSIX 2001) спецификация.

Почему CP было разработано этот путь? Поскольку существует много случаев, где это поведение желательно, например, сохраняя конфиденциальность файла, когда исходные полномочия строги, и исполняемость сохранения является почти всегда правильным поступком. Однако неудачно, что даже CP GNU не имеет опцию выключить это поведение.

Большинство инструментов копии (например, мир, rsync) ведет себя таким же образом. Можно удостовериться, что файл будет создан с разрешением по умолчанию путем отделения источника от места назначения, например, с кошкой foo/baz.

Пример

Я устанавливаю следующий файл, afile и добавил ACL к нему.

$ touch afile
$ setfacl -m user:sam:rwx,group:users:rwx afile

Мы теперь имеем:

$ getfacl afile 
# file: afile
# owner: root
# group: root
user::rw-
user:sam:rwx
group::r--
group:users:rwx
mask::rwx
other::r--

Когда я копирую эти файлы в долю NFSv3:

$ cp afile ~sam/
$ getfacl ~sam/afile 
getfacl: Removing leading '/' from absolute path names
# file: home/sam/afile
# owner: root
# group: root
user::rw-
group::rwx
other::r--

ACLs были потеряны. Попытка использовать --preserve переключатели к cp:

$ cp --preserve afile ~sam/
cp: preserving permissions for `/home/sam/afile': Operation not supported
cp: preserving ACL for `/home/sam/afile': Operation not supported

Включение ACL на NFS

Включение ACL на NFS монтируется, кажется, не имеют никакого эффекта также:

mulder:/export/r1/home/sam on /home/sam type nfs (rw,intr,tcp,nfsvers=3,acl,rsize=16384,wsize=16384,addr=192.168.1.1)

$ cp --preserve afile ~sam/
cp: preserving permissions for `/home/sam/afile': Operation not supported
cp: preserving ACL for `/home/sam/afile': Operation not supported

Тот же жесткий диск работал

Интересно --preserve переключатель действительно работал при копировании файла локально на том же подсоединенном внешнем диске EXT4.

$ cp --preserve afile afile2
$ getfacl afile2
# file: afile2
# owner: root
# group: root
user::rw-
user:sam:rwx
group::r--
group:users:rwx
mask::rwx
other::r--

Путь вперед?

В моем исследовании и экспериментировании казалось бы, что что-либо ниже NFSv4 не поддерживает ACLs. cp команда кажется способной сохранить ACLs, пока базовая файловая система поддерживает ACLs.

Я нашел эту статью: Проекты: Ссылочная Реализация Открытого исходного кода Версии 4 NFS, которая обсуждает использование ACLs в NFSv4. Таким образом, я ожидал бы, что копирование ACLs к доле NFSv4 могло бы быть возможным, я не полагаю, что это - возможное использование NFSv2 или NFSv3 все же.

Ссылки

2
27.01.2020, 21:23
  • 1
    Предоставление Вам принятие для продвижения меня к ServerFault и предложению rsync. Найденный этим в ServerFault: serverfault.com/questions/455111 / …, Который дает пример использования --chmod флаг rsync достигнуть желаемого результата. Однако -a флаг не обработал полномочия группы правильно, таким образом, я использовал -rt вместо этого. Таким образом, похоже, что ACLs бесполезны в этой конкретной ситуации. –  embedded.kyle 15.11.2013, 04:03

Возможное решение состоит в том, чтобы вынудить umask сохранить ACL.

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

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

1
27.01.2020, 21:23
  • 1
    Таким образом, Вы предлагаете не использовать ACLs вообще затем и просто стандартные группы Unix и полномочия, правильно? –  slm♦ 14.11.2013, 00:56
  • 2
    Корень проблемы - это, когда ACL и umask не соглашаются победы umask. –  xae 14.11.2013, 00:59
  • 3
    I diagree, проблема для OP состоит в том, что метаданные ACL рассматривают как 2-го гражданина класса, и инструменты не сохраняют его вместе с его данными. По крайней мере инструменты должны предоставить Вам возможность сохранить или отбросить данные, cp просто не соответствует. Если я неправ, то, почему делает cp имейте a --preserve переключатель для позволения/отбрасывания, что конкретные метаданные? –  slm♦ 14.11.2013, 01:01
  • 4
    cp имеет флаг-p при использовании его, команда пытается сохранить ACL и предупреждает если не возможный. –  xae 14.11.2013, 01:03
  • 5
    Существует 3 уровня к EA (Расширенные Атрибуты), ACLs является одним из них. Потребность удостовериться, что версия он использует, может спорить со всеми ними. От человека CP: "..., если возможные дополнительные атрибуты: контекст, ссылки, xattr, все". совершенство –  slm♦ 14.11.2013, 01:08

Теги

Похожие вопросы