+Ro+Di+Ri слабее, чем просто +Di+Ri ?

Обсуждение технических вопросов по продуктам Novell

+Ro+Di+Ri слабее, чем просто +Di+Ri ?

Сообщение Сергей Дубров » 15 дек 2010, 07:36

Как говорится, "век живи, век учись" или "Netware неисчерпаема, как атом" :). Полез тут кое-что в своих старых скриптах упорядочить и наткнулся на интересную вещь с аттрибутами на файловой системе NW (у меня это проявилось на NSS NW6.5, NSS NW5.1, TFS NW5.1 - различий не обнаружил).

1. Оказалось (просто не обращал на это особого внимания раньше), что если вы ставите атрибут +Ro на файл, то к нему автоматом добавляются атрибуты DiRi. Так ведёт себя штатный FLAG.EXE, точно также ведёт себя SETATTR от JRB. Автор JRB utilities предложил убедиться в этом самостоятельно, с помощью Wireshark - всё точно, так и есть.

2. А вот что меня лично шокировало - если поставить на файл/каталог только DiRi - этот файл/директорию никому не удастся удалить, даже админу - пока явно не снимет эти атрибуты. Но если добавить к DiRi атрибут Ro (или - см.п.1 - просто сделать +Ro) - то такой файл/директория... спокойно удаляются! Т.е., "усиление" защиты в виде дополнительного Ro-атрибута на самом деле защиту ослабляет. Удалял проводником, FAR-ом, TC.

Ещё немного по теме - стандартный FLAG.EXE не даёт поставить Ro на директорию:

FLAG-4.16 PTF-980818-906: Attributes specified are not applicable to Directories.

А вот SETATTR - ставит. В документации автор пишет, что просто игнорирует аттрибуты, которые нельзя поставить на директорию. Но по факту обнаружено, что 'SETATTR dir +Ro' (автоматом добавляются DiRi) отличается по поведению от 'SETATTR dir +Di+Ri' - точно также, как и с файлами, в случае с Ro директорию удалить МОЖНО, а БЕЗ Ro - НЕЛЬЗЯ. Чудеса.

Самое дурацкое для директории в этом случае, что SETATTR только ставит атрибуты, но не показывает (точнее, показывает фактически поставленные атрибуты только в момент установки, а просто посмотреть текущие аттрибуты - не имеет возможности). А FLAG для директорий колонку "DOS Attr" вообще не выводит. Получается, что поставив +Ro(+Di+Ri) на директорию, я потом не смогу визуально отличить этот вариант от +Di+Ri (без Ro). Но по факту-то они разные - с Ro удалить можно, без - нельзя.

Народ, у кого время и желание будет - попробуйте поиграться с Ro атрибутом для файлов и каталогов, мне интересно, как на других версиях с этим дело обстоит. John Baird пишет, что ему не удалось воспроизвести проблему с RoDiRi для директорий на NW6.0 и OES2 Linux SP2a. Для такого дела я выложу куда-нибудь в обменник утилиту SETATTR (напомню, стандартный FLAG.EXE отказывается ставить Ro на каталог).
Аватара пользователя
Сергей Дубров
 
Сообщения: 2096
Зарегистрирован: 05 июн 2002, 06:07
Откуда: Новосибирск, ин-т ядерной физики СО РАН

Re: +Ro+Di+Ri слабее, чем просто +Di+Ri ?

Сообщение vasya_r » 15 дек 2010, 12:00

Мне казалось, что все гораздо проще. Я давно заметил, что при снятии RO атрибутов с файла снимаются и DiRi. Поэтому удаляя файл RODiRi Far, например, обязательно спросит о подтверждении и удалит файл, т.к. перед этим снимет ВСЕ атрибуты. Я теперь для удаления файлов с DiRi атрибутами просто сначала attrib напускаю на файлы, а потом запросто удаляю (flag, знаете ли, под Vista и W7 не запускается).
vasya_r
 
Сообщения: 31
Зарегистрирован: 14 окт 2009, 16:11
Откуда: Брест, Беларусь

Re: +Ro+Di+Ri слабее, чем просто +Di+Ri ?

Сообщение Павел Гарбар » 15 дек 2010, 12:04

ReadOnly - стандартный атрибут для клиентских машин. С установленным новелловским клиентом, при установке RO, автоматом добавляются Di и Ri. Соответственно, когда снимается атрибут RO, то снимаются и специальные нетваревые атрибуты Di и Ri. Некоторые современные файловые утилиты (тот же Far и TC), при удалении файлов с RO, снимают этот атрибут, даже не задавая вопросов. Вот только Explorer еще, как приличный, спрашивает:"Ой, а тут только для чтения! Удалять будем?"
Так вот если поставить Di и Ri, но не ставить RO, то такие приложения, ничего не зная о NW, не снимают атрибут RO (его же нет), а расширенные атрибуты NW им не известны и они их не трогают. И, естесственно, удалить не могут. Так что логично.
А вот возник у меня вопрос (сейчас провериь негде) - а если эти атрибуты поставить на CIFS-шаре и зайти на нее без новелловского клиента, то будут ли сниматься Di и Ri, при снятии RO?
Павел Гарбар
 
Сообщения: 710
Зарегистрирован: 05 июн 2002, 09:36
Откуда: Санкт-Петербург

Re: +Ro+Di+Ri слабее, чем просто +Di+Ri ?

Сообщение Сергей Дубров » 15 дек 2010, 12:11

vasya_r писал(а):Мне казалось, что все гораздо проще. Я давно заметил, что при снятии RO атрибутов с файла снимаются и DiRi.

Да. И ставятся тоже, в нагрузку к Ro. Но речь, вообще-то, немного о другом была.

vasya_r писал(а): Поэтому удаляя файл RODiRi Far, например, обязательно спросит о подтверждении и удалит файл, т.к. перед этим снимет ВСЕ атрибуты.

Да, верно. Но, читайте внимательнее, я говорил немного о другом - наличие DiRi предотвращает удаление файла, а RoDiRi - нет. Вроде как дополнительный "усиливающий" атрибут, а защиту от удаления ослабляет.

vasya_r писал(а):Я теперь для удаления файлов с DiRi атрибутами просто сначала attrib напускаю на файлы, а потом запросто удаляю (flag, знаете ли, под Vista и W7 не запускается).

На 64-х разрядных не запускается, это факт (flag.exe - 16-ти битное приложение). Но, используя а-ля досовский attrib, вы НЕ МОЖЕТЕ поставить только DiRi, предотвращающие удаление файла. А я, с помощью setattr - могу. Вот цитата из документации к setattr, относящаяся к теме:

"In some situations, the resulting set of attributes may differ from what was requested. For example, on NetWare, an attempt to remove Di is ignored by NSS when Ro is also set. If RoDiRi is set, “-Di” is ignored, but if only DiRi is set, “-Di” succeeds. Consequently, setattr reads the attribute values for the file or directory after making the change, and reports the actual result rather than the expected result. Note that on NSS volumes on OES2 SP2a, Di can be removed regardless of whether Ro is also set."
Аватара пользователя
Сергей Дубров
 
Сообщения: 2096
Зарегистрирован: 05 июн 2002, 06:07
Откуда: Новосибирск, ин-т ядерной физики СО РАН

Re: +Ro+Di+Ri слабее, чем просто +Di+Ri ?

Сообщение Сергей Дубров » 15 дек 2010, 12:20

Павел Гарбар писал(а):ReadOnly - стандартный атрибут для клиентских машин. С установленным новелловским клиентом, при установке RO, автоматом добавляются Di и Ri. Соответственно, когда снимается атрибут RO, то снимаются и специальные нетваревые атрибуты Di и Ri. Некоторые современные файловые утилиты (тот же Far и TC), при удалении файлов с RO, снимают этот атрибут, даже не задавая вопросов. Вот только Explorer еще, как приличный, спрашивает:"Ой, а тут только для чтения! Удалять будем?"

А у меня было строго наоборот - FAR спрашивал про удаление RO-атрибута, а проводник удалял молча :).

Павел Гарбар писал(а):Так вот если поставить Di и Ri, но не ставить RO, то такие приложения, ничего не зная о NW, не снимают атрибут RO (его же нет), а расширенные атрибуты NW им не известны и они их не трогают. И, естесственно, удалить не могут. Так что логично.

Согласен, уговорил :)
Аватара пользователя
Сергей Дубров
 
Сообщения: 2096
Зарегистрирован: 05 июн 2002, 06:07
Откуда: Новосибирск, ин-т ядерной физики СО РАН

Re: +Ro+Di+Ri слабее, чем просто +Di+Ri ?

Сообщение Сергей Дубров » 17 дек 2010, 07:11

Кстати, только сейчас дошло: даже имея установленными только DiRi, можно, не используя никаких новеловских тулзов, такой файл удалить. Лехко. Дополнительно ставим на файл штатными вендовыми средствами Ro и получаем то самое сочетание RoDiRi. Которое преодолевается описанным выше способом - снимаем Ro -> автоматом снимаются DiRi -> файл удаляется.

С директориями, как оказалось, та же фигня - Ro на них ставится (по крайней мере, бит Di появляется, хотя явно Ro не видно).
Аватара пользователя
Сергей Дубров
 
Сообщения: 2096
Зарегистрирован: 05 июн 2002, 06:07
Откуда: Новосибирск, ин-т ядерной физики СО РАН

Re: +Ro+Di+Ri слабее, чем просто +Di+Ri ?

Сообщение Андрей Тр. aka RH » 17 дек 2010, 14:09

Сергей Дубров писал(а):даже имея установленными только DiRi, можно, не используя никаких новеловских тулзов

Не имея никаких новелловских тулзов - это как, и без Client32 можно удалить ? используя только родной вендозный "клиент для сетей ноувэлл" ( который по IPX ) ? Я так подозреваю, что при снятии Ro Client32 просто упрощает задачу.
Даешь отдельный раздел по ZENworks ... :bad-words: .. и печати !
Аватара пользователя
Андрей Тр. aka RH
 
Сообщения: 3937
Зарегистрирован: 18 июн 2002, 11:27

Re: +Ro+Di+Ri слабее, чем просто +Di+Ri ?

Сообщение Сергей Дубров » 17 дек 2010, 17:41

Андрей Тр. aka RH писал(а):
Сергей Дубров писал(а):даже имея установленными только DiRi, можно, не используя никаких новеловских тулзов

Не имея никаких новелловских тулзов - это как, и без Client32 можно удалить ? используя только родной вендозный "клиент для сетей ноувэлл" ( который по IPX ) ? Я так подозреваю, что при снятии Ro Client32 просто упрощает задачу.

Я имел в виду FLAG.EXE (или SETATTR). То, что в "нагрузку" к Ro добавляются DiRi - это, конечно, заслуга клиента (подтверждает Wireshark). Реализовано не очень логично, на мой взгляд. И есть там ещё неясные моменты, н-р, недокументированные биты атрибутов. Вот что пишет по этому поводу John Baird:

"For example if I request to set the attributes for a directory to 0x11 (directory bit + read-only), the result is 0x40060011. I don't know what the 0x40000000 bit represents, its undocumented and I think directory specific. But the 0x00060000 part of the value represents DiRi."
Аватара пользователя
Сергей Дубров
 
Сообщения: 2096
Зарегистрирован: 05 июн 2002, 06:07
Откуда: Новосибирск, ин-т ядерной физики СО РАН


Вернуться в Novell

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2

cron