Сценарии безопасности доли и настроек NTFS для AD2003

Вы могли определить пользовательский ErrorDocument для этих 400 Ошибок как так:

ErrorDocument 400 /cgi-bin/handle400.cgi

и затем имейте это, cgi (или php или сервлет или безотносительно) делают перезапись заголовка и перенаправление местоположения.



Править: из-за ответа Jacek я просто протестировал выше решения подтвердить, что это работает над Apache 2.2.

Моя конфигурация сервера:

ScriptAlias     /cgi-bin/ "/var/www/cgi-bin/"
ErrorDocument   400 /cgi-bin/handle400.pl

кошка lukas$/var/www/cgi-bin/handle400.pl

#!/usr/bin/perl
print "Content-type: text/html\n\n";
while (my ($key, $val) = each %ENV) {
        print "$key = $val<BR>\n";
}
exit 0;

Теперь при доступе к поврежденному URL, который произвел бы ошибку 400 Плохих Запросов прежде, я теперь получаю следующий (частичный) вывод:

...
REDIRECT_REQUEST_METHOD = GET
REDIRECT_STATUS = 400
REMOTE_ADDR = xx.xx.xx.xx
REQUEST_URI = /%&%28%7B$%7Beval%28base64_decode%28$_SERVER%5BHTTP_EXECCODE%5D%29%29%7D%7D%7C.+%29&%/
GATEWAY_INTERFACE = CGI/1.1
SCRIPT_URL = /cgi-bin/handle400.pl
...

Таким образом, Вы действительно получаете достаточно информации, чтобы сделать надлежащее изменение кода состояния и перенаправление местоположения.

1
задан 23 June 2011 в 11:55
3 ответа

Должна быть возможность использовать команду calcs .

0
ответ дан 3 December 2019 в 22:06

Вот сценарий PowerShell, который делает то, что вы хотите.

$Computer = "localhost"
$Class = "Win32_Share"
$Method = "Create"
$name = "foldername$"
$path = "C:\Folderpath"
$description = "This is shared for me to test"
$sd = ([WMIClass] "\\$Computer\root\cimv2:Win32_SecurityDescriptor").CreateInstance()
$ACE = ([WMIClass] "\\$Computer\root\cimv2:Win32_ACE").CreateInstance()
$Trustee = ([WMIClass] "\\$Computer\root\cimv2:Win32_Trustee").CreateInstance()
$Trustee.Name = "EVERYONE"
$Trustee.Domain = $Null
$Trustee.SID = @(1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0)
$ace.AccessMask = 2032127
$ace.AceFlags = 3
$ace.AceType = 0

New-Item -type directory -path $path
$Acl = Get-Acl $path
$Ar = New-Object  system.security.accesscontrol.filesystemaccessrule("user\domain","Write","Allow")
$Acl.SetAccessRule($Ar)
Set-Acl $path $Acl
$ACE.Trustee = $Trustee
$sd.DACL += $ACE.psObject.baseobject 
$mc = [WmiClass]"\\$Computer\ROOT\CIMV2:$Class"
$InParams = $mc.psbase.GetMethodParameters($Method)
$InParams.Access = $sd
$InParams.Description = $description
$InParams.MaximumAllowed = $Null
$InParams.Name = $name
$InParams.Password = $Null
$InParams.Path = $path
$InParams.Type = [uint32]0
$R = $mc.PSBase.InvokeMethod($Method, $InParams, $Null)
switch ($($R.ReturnValue))
 {
  0 {Write-Host "Share:$name Path:$path Result:Success"; break}
  2 {Write-Host "Share:$name Path:$path Result:Access Denied" -foregroundcolor red -backgroundcolor yellow;break}
  8 {Write-Host "Share:$name Path:$path Result:Unknown Failure" -foregroundcolor red -backgroundcolor yellow;break}
  9 {Write-Host "Share:$name Path:$path Result:Invalid Name" -foregroundcolor red -backgroundcolor yellow;break}
  10 {Write-Host "Share:$name Path:$path Result:Invalid Level" -foregroundcolor red -backgroundcolor yellow;break}
  21 {Write-Host "Share:$name Path:$path Result:Invalid Parameter" -foregroundcolor red -backgroundcolor yellow;break}
  22 {Write-Host "Share:$name Path:$path Result:Duplicate Share" -foregroundcolor red -backgroundcolor yellow;break}
  23 {Write-Host "Share:$name Path:$path Result:Reedirected Path" -foregroundcolor red -backgroundcolor yellow;break}
  24 {Write-Host "Share:$name Path:$path Result:Unknown Device or Directory" -foregroundcolor red -backgroundcolor yellow;break}
  25 {Write-Host "Share:$name Path:$path Result:Network Name Not Found" -foregroundcolor red -backgroundcolor yellow;break}
  default {Write-Host "Share:$name Path:$path Result:*** Unknown Error ***" -foregroundcolor red -backgroundcolor yellow;break}
 }

Я скопировал его и пропатчил с нескольких других сайтов, 1 и 2 . Он работает на моей машине с Windows 7. Для получения дополнительной информации об объекте filesystemaccessrule см. здесь .

1
ответ дан 3 December 2019 в 22:06

Мне нравится CMD. EXE ... (не совсем):

mkdir x:\directory\to\make
cacls x:\directory\to\make /e /t /g DOMAIN\user:C
net share sharename=X:\directory\to\make

Это создает каталог, добавляет «ДОМЕН \ пользователь» с разрешениями «Изменить» в каталог (который унаследует подпапки и файлы) и разделяет каталог. Первые две команды могут быть запущены для UNC-путей, если хотите, но общий сетевой ресурс должен выполняться на сервере, где находится общий каталог. (В одном из дистрибутивов Windows NT Resource Kit был старый инструмент rmtshare.exe , который имел примерно тот же синтаксис, что и net share , но мог создавать общие ресурсы на удаленных компьютерах.

1
ответ дан 3 December 2019 в 22:06

Теги

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