Как cygwin (прошлый 2015 г.) определяет и хранит групповое владение NTFS?
289
Peter A. Schneider
Насколько я знаю, в NTFS нет концепции владельца группового файла, как в POSIX. (Пожалуйста, исправьте меня, если я ошибаюсь.) Пользователь может быть членом одной или (обычно) нескольких групп, и файл может иметь отдельные разрешения для каждой группы, но у файла нет владельца группы в дополнение к его простой ванили «владелец». Тем не менее, «простой владелец» может быть, возможно, путаницей, группой.
Теперь, когда я делаю ls -lв cygwin 2.8.0 bash на Windows 7 для файла в NTFS (машина и учетная запись находятся в среде Active Directory), я вижу группу:
(Длинный GID из другого домена.) Сначала я подумал, что cygwin выводит группу из основной группы владельца. Это заставило бы группу всегда меняться вместе с пользователем. Тем не менее, эти два, кажется, независимы:
Я прочитал https://cygwin.com/cygwin-ug-net/ntsec.html, в котором описано, как идентификаторы Posix UID и GID вычисляются из Windows SID; но я не вижу, как cygwin хранит групповое владение файлами (что не является функцией Windows / NTFS, поэтому для него требуется дополнение cygwin) отдельно от владения пользователем (которое является функцией Windows / NTFS, поэтому оно легко доступно) ,
Существует примечание о хранении комментариев такого рода <cygwin key="value" key="value" [...] />для локальных учетных записей пользователей net user ..., включая ключ «группа»; но это для локальных учетных записей, и это не для файла, поэтому он не может ответить на мой вопрос.
Так как же Cygwin хранит и / или получает групповое владение файлами? Это механизм Windows? Если да, есть ли инструменты Windows для управления ими?
использовать `cacls `чтобы увидеть, как NTFS хранит все права доступа к файлу ACL
matzeri 6 лет назад
0
Иди посмотри на исходный код.
DavidPostill 6 лет назад
0
@matzeri Я сделал это, и я могу видеть, какие разрешения имеют различные пользователи или группы. Что я не вижу, так это подсказку, какая из различных групп будет показана как «владелец группы» файла, когда я сделаю stat или ls-l в cygwin.
Peter A. Schneider 6 лет назад
0
@DavidPostill Сначала я подумал, что вы троллинг, но, учитывая, что вы мод, я полагаю, вы это имеете в виду. (В других случаях я обнаружил, что аналогичные базы кода непрозрачны для случайного посетителя до такой степени, что я даже не мог определить место, где выполнялись определенные вычисления, не говоря уже о том, чтобы их осмотреть.) У вас есть подсказка, где искать? (Я не имею в виду, что вы делаете мою работу, но, возможно, вы знакомы с базой кода cygwin, хотя cygwin не присутствует в ваших тегах.) Что вы наверняка можете подтвердить, так это мое понимание того, что NTFS не имеет понятия о «владелец группы» в смысле POSIX.
Peter A. Schneider 6 лет назад
0
@ PeterA.Schneider Насколько я могу судить, код ACL находится в [newlib] (https://cygwin.com/cgi-bin2/package-cat.cgi?file=x86_64%2Fcygwin%2Fcygwin-2.8.0-1 -src & Grep = newlib). Я не углубился в это более глубоко.
DavidPostill 6 лет назад
0
Когда я сказал, посмотрите на исходный код, это потому, что это то, что кто-то еще должен будет сделать, чтобы ответить на ваш вопрос (если только он не знает ответ, что маловероятно). Cygwin использует API ACL POSIX.1e и где-то отображает это на вызовы Win32 API. Это бит, который вам нужно найти в исходном коде.
DavidPostill 6 лет назад
0
1 ответ на вопрос
1
dhvu
После поверхностного просмотра исходного кода cygwin, я считаю, что chgrp.exeэто просто косвенный вызов RtlSetGroupSecurityDescriptor()- через chown(2)и fhandler_disk_file::set_posix_access().
Эта функциональность предлагается на уровне интерфейса командной строки subinacl.exe :