Проверьте, есть ли у группы IUSR разрешение на запись в папку
Я хочу проверить, есть ли у группы IUSER разрешение на запись в папку или нет с помощью кода. Чтобы проверить, что я вручную дал разрешение на запись в группу IUSR в моей папке:
Вот код, который я написал, чтобы проверить, что:
<%@ Page Language="C#" %>
<%@ Import Namespace="System.Collections.ObjectModel" %>
<%@ Import Namespace="System.IO" %>
<%@ Import Namespace="System.Security.Principal" %>
<%@ Import Namespace="System.Security.AccessControl" %>
<script runat="server">
protected void Page_Load(object sender, EventArgs e)
{
try
{
string FilePath = @"D:\\Shared";
FileSystemSecurity security;
if (File.Exists(FilePath))
{
security = File.GetAccessControl(FilePath);
}
else
{
security = Directory.GetAccessControl(Path.GetDirectoryName(FilePath));
}
foreach (AccessRule rule in security.GetAccessRules(true, true, typeof(NTAccount)))
{
Response.Write("<br/>");
Response.Write(string.Format("Identity = {0}; Access = {1}",
rule.IdentityReference.Value, rule.AccessControlType));
}
}
catch (Exception ex)
{
Response.Write(ex.Message);
}
}
</script>
Как видите, группа IUSR не входит в этот список.
Мой вопрос здесь заключается в том, что мне не хватает того, что мешает этой группе IUSR войти в этот список.
Нужно ли добавить какую-то специальную проверку для проверки разрешения IUSR?
1 ответ
Существует полезный пост на Server Fault относительно этого. Основная причина в том, что в IIS 7.5 (и, возможно, в IIS 7) все работники работают с идентификатором пула приложений: пользователь "IISAppPool PoolName", что является причиной, по которой группа IUSR не появляется в списке.
Я бы рекомендовал проверить группу apppool, а не IUSR. Затем попробуйте получить конкретного пользователя, а не группу, и проверьте права на чтение и запись, если вы успешно пройдете этот тест, все в порядке.
проверьте этот пост для справки.