Назад | Перейти на главную страницу

Что изменилось с Win 2008 Server, что Samba rpc control больше не работает?

Я с удовольствием использую Samba net rpc service ... для управления службами на сервере Windows 2003 из моего окна Linux, однако теперь управление сервером Windows 2008 дает мне WERR_ACCESS_DENIED ошибки.

Похоже, проблемы существуют и в WinXP (с использованием sc) а вот с Win7 все работает. Изменилось ли что-то в том, как сервер Windows 2008 разрешает удаленный доступ, и можно ли что-нибудь сделать на стороне клиента (Samba), чтобы обойти это?

Заранее спасибо!

(Samba 3.6.3, Win2008R2)

Похоже, что разрешения изменились с 2003 SP1; "Безопасность диспетчера управления службами для пользователей без прав администратора"содержит дополнительную информацию и исправление, которое позволяет аутентифицированным пользователям возможность перечислять услуги.

Я играю с командами «sc sdshow» и «sc sdset», чтобы дать мне возможность управлять службой cygwin sshd в доме win7 с моей машины unbuntu. Первая команда sdset в этой статье дала мне возможность перечислить некоторые службы из Linux, так что это выглядит многообещающе.

Я постараюсь опубликовать ответ с более подробными инструкциями, но этого должно быть достаточно, чтобы вы начали. Удачи.

Обновить

ХОРОШО; Итак, вот что я сделал, и, похоже, это помогает. Обратите внимание, что вы должны запускать эти команды в «cmd.exe» с повышенными привилегиями - найдите в начальном пузыре «cmd», щелкните правой кнопкой мыши, запустите от имени администратора.

  1. Сначала получите текущий дескриптор безопасности для диспетчера управления службами:

    sc sdshow scmanager
    
    D:(A;;CC;;;AU)(A;;CCLCRPRC;;;IU)(A;;CCLCRPRC;;;SU)(A;;CCLCRPWPRC;;;SY)(A;;KA;;;BA)S:(AU;FA;KA;;;WD)(AU;OIIOFA;GA;;;WD)
    

    Это дало мне почти то же, что указано в приведенной выше ссылке. Форма вывода: D:(DACL)(DACL)(...)S:(SACL)(SACL)(...). Каждый DACL структурирован как ;-ограниченная строка. Первое, третье и последнее поля являются важными частями. Первый - это A для "разрешить" и D для "отрицать". Последняя часть - это либо аббревиатура известного пользователя или группы, либо SID пользователя или группы. Третья строка представляет собой серию разрешений - одно разрешение на пару символов. Полная разбивка находится на "Статья MSDN: строки ACE". Значение символов в поле" права "немного отличается для диспетчера управления службами и снова для служб. Если вы сделаете перекрестную ссылку на три таблицы из этой первой ссылки, вы поймете, что я имею в виду. Так, например , (A;;CC;;;AU) как дано sc sdshow scmanager Команда означает, что аутентифицированным пользователям разрешено подключаться к диспетчеру управления службами. В статье рекомендуется расширить это до (A;;CCLCRPRC;;;AU) это «CC», «LC», «RP» и «RC» - «соединение», «перечисление», «состояние блокировки запроса» и «управление чтением». По сути, мы просто даем «AU» - «Authenticated Users» те же права, что и «IU» - «Interactive Users» - тем пользователям, которые вошли в Windows. Когда вы меняете DACL с помощью sc sdset, вы замена запись целиком, поэтому вам нужно изменить только тот DACL, который важен для ваших целей, и скопировать остальные.

    sc sdset "D:(A;;CCLCRPRC;;;AU)(A;;CCLCRPRC;;;IU)(A;;CCLCRPRC;;;SU)(A;;CCLCRPWPRC;;;SY)(A;;KA;;;BA)S:(AU;FA;KA;;;WD)(AU;OIIOFA;GA;;;WD)"
    

    Обратите внимание, как я только что заменил DACL, относящийся к «Прошедшим проверку пользователям».

  2. ХОРОШО; теперь самое легкое. Для этого вам понадобится «subinacl» - если у вас его нет, вы можете загрузить его с различных сайтов Microsoft. (Вы можете использовать 'sc sdset', но 'subinacl' намного проще. К сожалению 'subinacl' работает только с реальными службами, а не с диспетчером управления службами, отсюда и первый шаг.) Лично я немного отклонился от статьи и вместо того, чтобы предоставить мои пользовательские разрешения на сервис, я создал локальную группу и добавил себя в нее.

    net localgroup "Service Operator" /add
    net localgroup "Service Operator" "My Login Account" /add
    
  3. Затем я дал этой группе полный контроль над службой sshd:

    subinacl /service sshd "/grant=Service Operator=F"
    
  4. На моей Linux-машине теперь я могу запускать и останавливать службу:

    beltorak@kryos [~]
    $ net -S diabolique rpc service stop sshd
    Enter beltorak's password:
    ..
    sshd service is stopped.
    
    beltorak@kryos [~]
    $ net -S diabolique rpc service start sshd
    Enter beltorak's password:
    ..............................
    Failed to start service: sshd [WERR_OK]
    

Я не знаю, почему написано «failed: WERR_OK» - я думаю, что это эквивалент диалогового окна с ошибкой, которое говорит «ERROR: Success». Проверка состояния службы на машине Win7 определенно указывает на то, что теперь я могу управлять службой с моей машины Linux.

ПРИМЕЧАНИЕ. Вероятно, было бы разумно предоставить группе операторов службы эти дополнительные разрешения над диспетчером управления службами - я уверен, что ограничение прав для "аутентифицированных пользователей" было сделано не просто так - и ограничить разрешения на sshd только те, которые необходимы для запуска и остановки службы. Я был просто счастлив, что это заработало, а это домашняя сеть, так что я закончил.