Як cygwin (минулий 2015 рік) визначає та зберігає групове право власності на NTFS?


0

Наскільки я знаю, NTFS не має поняття власника групового файлу, як це робить POSIX. (Будь ласка, виправте мене, якщо я помиляюся.) Користувач може бути членом однієї або (зазвичай) більшої кількості груп, і файл може мати окремі дозволи для кожної групи, але файл не має власника групи додатково до його звичайної ванілі "власник". Однак "звичайний власник" може бути, можливо, заплутаним, групою.

Тепер, коли я роблю ls -lв Cygwin 2.8.0 баш в Windows 7 для файлу в NTFS (машина і обліковий запис знаходяться в середовищі Active Directory), я бачу групу:

$ ll -n cleartool golden-dev-val.cfgspec
-rwxrwxrwx+ 1 2736485    1049089  277  9. Mai 12:34 cleartool
-rwxrwxrwx+ 1 1493656 3556770305 9159 19. Mai 16:25 golden-dev-val.cfgspec

(Довгий GID - з іншого домену.) Спочатку я подумав, що cygwin виводить групу з первинної групи власника. Це змусило б групу завжди змінюватися разом із користувачем. Однак вони, схоже, незалежні:

$ chown 2736485  golden-dev-val.cfgspec

$ ll -n cleartool golden-dev-val.cfgspec
-rwxrwxrwx+ 1 2736485    1049089  277  9. Mai 12:34 cleartool
-rwxrwxrwx+ 1 2736485 3556770305 9159 19. Mai 16:25 golden-dev-val.cfgspec

$ chgrp 3556770305 cleartool

$ ll -n cleartool golden-dev-val.cfgspec
-rwxrwxrwx+ 1 2736485 3556770305  277  9. Mai 12:34 cleartool
-rwxrwxrwx+ 1 2736485 3556770305 9159 19. Mai 16:25 golden-dev-val.cfgspec

Я прочитав https://cygwin.com/cygwin-ug-net/ntsec.html, в якому описано, як UID та GID Posix обчислюються з Windows SID; але я не бачу, як cygwin зберігає групове право власності на файли (що не є функцією Windows / NTFS, тому йому потрібен надбудова cygwin) окремо від власності користувача (що є функцією Windows / NTFS, тому вона легко доступна) .

Існує Примітка щодо зберігання подібних коментарів <cygwin key="value" key="value" [...] />для локальних облікових записів користувачів net user ..., включаючи клавішу "групу"; але це для локальних облікових записів, і це не для кожного файлу, тому він не може відповісти на моє запитання.

Тож як cygwin зберігає та / або отримує групове право власності на файли? Це механізм Windows? Якщо так, чи існують інструменти Windows для маніпулювання ними?


скористайтеся, cacls <nomefile>щоб побачити, як NTFS зберігає всі права доступу до файлів ACL
matzeri

Перейдіть до вихідного коду.
DavidPostill

@matzeri Я це зробив, і я бачу, які дозволи мають різні користувачі чи групи. Те, що я не бачу, - це підказка, яка з різних груп буде відображатися як "власник групи" файлу, коли я роблю stat або ls-l у cygwin.
Пітер А. Шнайдер

@DavidPostill Я спершу подумав, що ти тролінг, але враховуючи, що ти мод, я думаю, ти це маєш на увазі. (В інших випадках я виявив подібні бази кодів непрозорими для випадкового відвідувача, до того, що я навіть не міг визначити місце проведення певних обчислень, не кажучи вже про їх огляд.) Чи є у вас підказки щодо того, де їх шукати? (Я не маю на увазі, що ти робиш мою роботу, але може бути, що ти знайомий із базою коду cygwin, навіть незважаючи на те, що cygwin не відображається у ваших тегах.) Напевно ви можете підтвердити, що я розумію, що NTFS не має поняття "власник групи" в сенсі POSIX.
Пітер А. Шнайдер

@ PeterA.Schneider Наскільки я можу сказати, код ACL знаходиться в newlib . Я не заглиблювався в нього більше.
DavidPostill

Відповіді:


1

Після поверхового перегляду вихідного коду cygwin, я вважаю, що chgrp.exeце просто побічно дзвонить RtlSetGroupSecurityDescriptor()- через chown(2)та fhandler_disk_file::set_posix_access().

Ця функціональність пропонується на рівні CLI subinacl.exe :

subinacl /file testfile /setprimarygroup=groupname

У моєму тесті, однак, інструмент вимагає SeSecurityPrivilege, щоб досягти успіху, і SeBackupPrivilege, щоб не відображати попередження.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.