ASP.NET Tutorial/File Directory/Access Control
Содержание
Access Control List information (C#)
<%@ Page Language="C#" %>
<%@ Import Namespace="System.IO" %>
<%@ Import Namespace="System.Security.AccessControl" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
protected void Page_Load(object sender, EventArgs e)
{
System.Security.AccessControl.FileSecurity sec = File.GetAccessControl(Server.MapPath("Data.txt"));
this.Label1.Text = sec.GetOwner( typeof(System.Security.Principal.NTAccount) ).Value;
AuthorizationRuleCollection auth = sec.GetAccessRules(true, true, typeof(System.Security.Principal.NTAccount));
TableCell tc;
foreach (FileSystemAccessRule r in auth)
{
TableRow tr = new TableRow();
tc = new TableCell();
tc.Text = r.AccessControlType.ToString();
tr.Cells.Add(tc);
tc = new TableCell();
tc.Text = r.IdentityReference.Value;
tr.Cells.Add(tc);
tc = new TableCell();
tc.Text = r.InheritanceFlags.ToString();
tr.Cells.Add(tc);
tc = new TableCell();
tc.Text = r.IsInherited.ToString();
tr.Cells.Add(tc);
tc = new TableCell();
tc.Text = r.PropagationFlags.ToString();
tr.Cells.Add(tc);
tc = new TableCell();
tc.Text = r.FileSystemRights.ToString();
tr.Cells.Add(tc);
Table1.Rows.Add(tr);
}
}
</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>Untitled Page</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<b>File Owner:</b>
<asp:Label ID="Label1" runat="server" Text="Label" />
Access Rules:<br />
<asp:Table ID="Table1" runat="server" CellPadding="2" GridLines="Both">
<asp:TableRow>
<asp:TableHeaderCell>Control Type</asp:TableHeaderCell>
<asp:TableHeaderCell>Identity</asp:TableHeaderCell>
<asp:TableHeaderCell>Inheritance Flags</asp:TableHeaderCell>
<asp:TableHeaderCell>Is Inherited</asp:TableHeaderCell>
<asp:TableHeaderCell>Propagation Flags</asp:TableHeaderCell>
<asp:TableHeaderCell>File System Rights</asp:TableHeaderCell>
</asp:TableRow>
</asp:Table>
</div>
</form>
</body>
</html>
Access Control List information (VB)
<%@ Page Language="VB" %>
<%@ Import Namespace="System.IO" %>
<%@ Import Namespace="System.Security.AccessControl" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs)
Dim sec As System.Security.AccessControl.FileSecurity = System.IO.File.GetAccessControl(Server.MapPath("TextFile.txt"))
Me.Label1.Text = sec.GetOwner(System.Type.GetType("System.Security.Principal.NTAccount")).Value
Dim auth As AuthorizationRuleCollection = sec.GetAccessRules(True, True, System.Type.GetType("System.Security.Principal.NTAccount"))
Dim tc As TableCell
For Each r As FileSystemAccessRule In auth
Dim tr As New TableRow()
tc = New TableCell()
tc.Text = r.AccessControlType.ToString()
tr.Cells.Add(tc)
tc = New TableCell()
tc.Text = r.IdentityReference.Value
tr.Cells.Add(tc)
tc = New TableCell()
tc.Text = r.InheritanceFlags.ToString()
tr.Cells.Add(tc)
tc = New TableCell()
tc.Text = r.IsInherited.ToString()
tr.Cells.Add(tc)
tc = New TableCell()
tc.Text = r.PropagationFlags.ToString()
tr.Cells.Add(tc)
tc = New TableCell()
tc.Text = r.FileSystemRights.ToString()
tr.Cells.Add(tc)
Table1.Rows.Add(tr)
Next
End Sub
</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>Untitled Page</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<b>File Owner:</b>
<asp:Label ID="Label1" runat="server" Text="Label" />
Access Rules:<br />
<asp:Table ID="Table1" runat="server" CellPadding="2" GridLines="Both">
<asp:TableRow>
<asp:TableHeaderCell>Control Type</asp:TableHeaderCell>
<asp:TableHeaderCell>Identity</asp:TableHeaderCell>
<asp:TableHeaderCell>Inheritance Flags</asp:TableHeaderCell>
<asp:TableHeaderCell>Is Inherited</asp:TableHeaderCell>
<asp:TableHeaderCell>Propagation Flags</asp:TableHeaderCell>
<asp:TableHeaderCell>File System Rights</asp:TableHeaderCell>
</asp:TableRow>
</asp:Table>
</div>
</form>
</body>
</html>
Adding a rule to the Access Control List (C#)
<%@ Page Language="C#" %>
<%@ Import Namespace="System.IO" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
protected void Page_Load(object sender, EventArgs e)
{
System.Security.AccessControl.FileSecurity sec =
System.IO.File.GetAccessControl(Server.MapPath("Data.txt"));
sec.AddAccessRule(
new System.Security.AccessControl.FileSystemAccessRule(
@"DEMOXP\TestUser",
System.Security.AccessControl.FileSystemRights.FullControl,
System.Security.AccessControl.AccessControlType.Allow
)
);
File.SetAccessControl(Server.MapPath("TextFile.txt"), sec);
}
</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>Untitled Page</title>
</head>
<body>
<form id="form1" runat="server">
<div>
</div>
</form>
</body>
</html>
Adding a rule to the Access Control List (VB)
<%@ Page Language="VB" %>
<%@ Import Namespace="System.IO" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs)
Dim sec As System.Security.AccessControl.FileSecurity = _
System.IO.File.GetAccessControl(Server.MapPath("Data.txt"))
sec.AddAccessRule( _
New System.Security.AccessControl.FileSystemAccessRule( _
"DEMOXP\TestUser", _
System.Security.AccessControl.FileSystemRights.FullControl, _
System.Security.AccessControl.AccessControlType.Allow _
) _
)
File.SetAccessControl(Server.MapPath("Data.txt"), sec)
End Sub
</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>Untitled Page</title>
</head>
<body>
<form id="form1" runat="server">
<div>
</div>
</form>
</body>
</html>
Removing the rule from the Access Control List (C#)
<%@ Page Language="C#" %>
<%@ Import Namespace="System.IO" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
protected void Page_Load(object sender, EventArgs e)
{
System.Security.AccessControl.FileSecurity sec =
File.GetAccessControl(Server.MapPath("Data.txt"));
sec.RemoveAccessRule(
new System.Security.AccessControl.FileSystemAccessRule(
@"DEMOXP\TestUser",
System.Security.AccessControl.FileSystemRights.FullControl,
System.Security.AccessControl.AccessControlType.Allow)
);
File.SetAccessControl(Server.MapPath("Data.txt"), sec);
}
</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>Untitled Page</title>
</head>
<body>
<form id="form1" runat="server">
<div>
</div>
</form>
</body>
</html>
Removing the rule from the Access Control List (VB)
<%@ Page Language="VB" %>
<%@ Import Namespace="System.IO" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs)
Dim sec As System.Security.AccessControl.FileSecurity = _
System.IO.File.GetAccessControl(Server.MapPath("Data.txt"))
sec.RemoveAccessRule( _
New System.Security.AccessControl.FileSystemAccessRule( _
"DEMOXP\TestUser", _
System.Security.AccessControl.FileSystemRights.FullControl, _
System.Security.AccessControl.AccessControlType.Allow _
) _
)
File.SetAccessControl(Server.MapPath("Data.txt"), sec)
End Sub
</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>Untitled Page</title>
</head>
<body>
<form id="form1" runat="server">
<div>
</div>
</form>
</body>
</html>