Update or modify details for a file or directory on a file system. The information that can be modified would normally be set/updated using file serving protocols or by defaults within the system. Attempting to change both Windows and Unix security at the same time will fail, as the Windows and Unix security information are partially derived from each other. Some updates may remove specifically configured settings, so any changes should be made with care, and reviewed once applied to ensure they produced the expected changes. The security mode of the file system or virtual volume may affect how the changes are stored, depending on which mode they are set to.
When making changes to Discretionary Access Control Lists (DACLs), the order of the Access Control Entries (ACEs) is important, and determines how a client may access the resource. The DACL entries are processed in order to determine if access is allowed or not when a client attempts to access the resource. To specifically deny access to a security principal, any Deny ACEs should be added before any Allow ACEs.
Note: Accepted parameter values may be restricted based on the virtual server access granted by the API key used for authentication.
Note: The authentication required to access this API call differs from the general defaults. The default access to this call is: No user access, Writable API key (key types: callId restricted).
filesystemId
String
required
Either the file system ID or the object ID of the file system
Either the file system ID or the object ID of the file system
7B263DFD1D71E65A0000000000000000
curl -X 'PATCH'
-H "X-Subsystem-User: [[apiKey]]"
\
-H "X-Subsystem-Password: [[apiKey]]"
\
-H "X-Api-Key: [[apiKey]]"
\
-H "Authorization: Basic [[basicHash]]"
\
-H
'Accept: application/json'
-H
'Content-Type: application/json'
'https://172.27.146.40:8444/v9/storage/filesystems/{filesystemId}/path-info'
-d
''
import http.client
conn = http.client.HTTPSConnection("172.27.146.40:8444")
payload = "{\"dacl\":[{\"flags\":16,\"mask\":17957311,\"principal\":\"Everyone\",\"type\":\"ACCESS_ALLOWED_ACE\"}],\"inheritDaclAces\":true,\"inheritSaclAces\":true,\"path\":\"/dir1/lun1.iscsi\",\"sacl\":[{\"flags\":16,\"mask\":17957311,\"principal\":\"Everyone\",\"type\":\"ACCESS_ALLOWED_ACE\"}],\"unixGroupId\":500,\"unixMode\":511,\"unixOwnerId\":700,\"windowsGroup\":\"EXAMPLE\\\\Group1\",\"windowsOwner\":\"EXAMPLE\\\\User1\"}"
headers = {
'Authorization': "Basic REPLACE_BASIC_AUTH",
'content-type': "application/json"
}
conn.request("PATCH", "/v9/storage/filesystems/7B263DFD1D71E65A0000000000000000/path-info", payload, headers)
res = conn.getresponse()
data = res.read()
print(data.decode("utf-8"))require 'uri'
require 'net/http'
require 'openssl'
url = URI("https://172.27.146.40:8444/v9/storage/filesystems/7B263DFD1D71E65A0000000000000000/path-info")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
http.verify_mode = OpenSSL::SSL::VERIFY_NONE
request = Net::HTTP::Patch.new(url)
request["Authorization"] = 'Basic REPLACE_BASIC_AUTH'
request["content-type"] = 'application/json'
request.body = "{\"dacl\":[{\"flags\":16,\"mask\":17957311,\"principal\":\"Everyone\",\"type\":\"ACCESS_ALLOWED_ACE\"}],\"inheritDaclAces\":true,\"inheritSaclAces\":true,\"path\":\"/dir1/lun1.iscsi\",\"sacl\":[{\"flags\":16,\"mask\":17957311,\"principal\":\"Everyone\",\"type\":\"ACCESS_ALLOWED_ACE\"}],\"unixGroupId\":500,\"unixMode\":511,\"unixOwnerId\":700,\"windowsGroup\":\"EXAMPLE\\\\Group1\",\"windowsOwner\":\"EXAMPLE\\\\User1\"}"
response = http.request(request)
puts response.read_bodyconst data = JSON.stringify({
"dacl": [
{
"flags": 16,
"mask": 17957311,
"principal": "Everyone",
"type": "ACCESS_ALLOWED_ACE"
}
],
"inheritDaclAces": true,
"inheritSaclAces": true,
"path": "/dir1/lun1.iscsi",
"sacl": [
{
"flags": 16,
"mask": 17957311,
"principal": "Everyone",
"type": "ACCESS_ALLOWED_ACE"
}
],
"unixGroupId": 500,
"unixMode": 511,
"unixOwnerId": 700,
"windowsGroup": "EXAMPLE\\Group1",
"windowsOwner": "EXAMPLE\\User1"
});
const xhr = new XMLHttpRequest();
xhr.withCredentials = true;
xhr.addEventListener("readystatechange", function () {
if (this.readyState === this.DONE) {
console.log(this.responseText);
}
});
xhr.open("PATCH", "https://172.27.146.40:8444/v9/storage/filesystems/7B263DFD1D71E65A0000000000000000/path-info");
xhr.setRequestHeader("Authorization", "Basic REPLACE_BASIC_AUTH");
xhr.setRequestHeader("content-type", "application/json");
xhr.send(data);HttpResponse<String> response = Unirest.patch("https://172.27.146.40:8444/v9/storage/filesystems/7B263DFD1D71E65A0000000000000000/path-info")
.header("Authorization", "Basic REPLACE_BASIC_AUTH")
.header("content-type", "application/json")
.body("{\"dacl\":[{\"flags\":16,\"mask\":17957311,\"principal\":\"Everyone\",\"type\":\"ACCESS_ALLOWED_ACE\"}],\"inheritDaclAces\":true,\"inheritSaclAces\":true,\"path\":\"/dir1/lun1.iscsi\",\"sacl\":[{\"flags\":16,\"mask\":17957311,\"principal\":\"Everyone\",\"type\":\"ACCESS_ALLOWED_ACE\"}],\"unixGroupId\":500,\"unixMode\":511,\"unixOwnerId\":700,\"windowsGroup\":\"EXAMPLE\\\\Group1\",\"windowsOwner\":\"EXAMPLE\\\\User1\"}")
.asString();import Foundation
let headers = [
"Authorization": "Basic REPLACE_BASIC_AUTH",
"content-type": "application/json"
]
let parameters = [
"dacl": [
[
"flags": 16,
"mask": 17957311,
"principal": "Everyone",
"type": "ACCESS_ALLOWED_ACE"
]
],
"inheritDaclAces": true,
"inheritSaclAces": true,
"path": "/dir1/lun1.iscsi",
"sacl": [
[
"flags": 16,
"mask": 17957311,
"principal": "Everyone",
"type": "ACCESS_ALLOWED_ACE"
]
],
"unixGroupId": 500,
"unixMode": 511,
"unixOwnerId": 700,
"windowsGroup": "EXAMPLE\Group1",
"windowsOwner": "EXAMPLE\User1"
] as [String : Any]
let postData = JSONSerialization.data(withJSONObject: parameters, options: [])
let request = NSMutableURLRequest(url: NSURL(string: "https://172.27.146.40:8444/v9/storage/filesystems/7B263DFD1D71E65A0000000000000000/path-info")! as URL,
cachePolicy: .useProtocolCachePolicy,
timeoutInterval: 10.0)
request.httpMethod = "PATCH"
request.allHTTPHeaderFields = headers
request.httpBody = postData as Data
let session = URLSession.shared
let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
if (error != nil) {
print(error)
} else {
let httpResponse = response as? HTTPURLResponse
print(httpResponse)
}
})
dataTask.resume()<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_PORT => "8444",
CURLOPT_URL => "https://172.27.146.40:8444/v9/storage/filesystems/7B263DFD1D71E65A0000000000000000/path-info",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PATCH",
CURLOPT_POSTFIELDS => "{\"dacl\":[{\"flags\":16,\"mask\":17957311,\"principal\":\"Everyone\",\"type\":\"ACCESS_ALLOWED_ACE\"}],\"inheritDaclAces\":true,\"inheritSaclAces\":true,\"path\":\"/dir1/lun1.iscsi\",\"sacl\":[{\"flags\":16,\"mask\":17957311,\"principal\":\"Everyone\",\"type\":\"ACCESS_ALLOWED_ACE\"}],\"unixGroupId\":500,\"unixMode\":511,\"unixOwnerId\":700,\"windowsGroup\":\"EXAMPLE\\\\Group1\",\"windowsOwner\":\"EXAMPLE\\\\User1\"}",
CURLOPT_HTTPHEADER => [
"Authorization: Basic REPLACE_BASIC_AUTH",
"content-type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}CURL *hnd = curl_easy_init();
curl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, "PATCH");
curl_easy_setopt(hnd, CURLOPT_URL, "https://172.27.146.40:8444/v9/storage/filesystems/7B263DFD1D71E65A0000000000000000/path-info");
struct curl_slist *headers = NULL;
headers = curl_slist_append(headers, "Authorization: Basic REPLACE_BASIC_AUTH");
headers = curl_slist_append(headers, "content-type: application/json");
curl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);
curl_easy_setopt(hnd, CURLOPT_POSTFIELDS, "{\"dacl\":[{\"flags\":16,\"mask\":17957311,\"principal\":\"Everyone\",\"type\":\"ACCESS_ALLOWED_ACE\"}],\"inheritDaclAces\":true,\"inheritSaclAces\":true,\"path\":\"/dir1/lun1.iscsi\",\"sacl\":[{\"flags\":16,\"mask\":17957311,\"principal\":\"Everyone\",\"type\":\"ACCESS_ALLOWED_ACE\"}],\"unixGroupId\":500,\"unixMode\":511,\"unixOwnerId\":700,\"windowsGroup\":\"EXAMPLE\\\\Group1\",\"windowsOwner\":\"EXAMPLE\\\\User1\"}");
CURLcode ret = curl_easy_perform(hnd);var client = new RestClient("https://172.27.146.40:8444/v9/storage/filesystems/7B263DFD1D71E65A0000000000000000/path-info");
var request = new RestRequest(Method.PATCH);
request.AddHeader("Authorization", "Basic REPLACE_BASIC_AUTH");
request.AddHeader("content-type", "application/json");
request.AddParameter("application/json", "{\"dacl\":[{\"flags\":16,\"mask\":17957311,\"principal\":\"Everyone\",\"type\":\"ACCESS_ALLOWED_ACE\"}],\"inheritDaclAces\":true,\"inheritSaclAces\":true,\"path\":\"/dir1/lun1.iscsi\",\"sacl\":[{\"flags\":16,\"mask\":17957311,\"principal\":\"Everyone\",\"type\":\"ACCESS_ALLOWED_ACE\"}],\"unixGroupId\":500,\"unixMode\":511,\"unixOwnerId\":700,\"windowsGroup\":\"EXAMPLE\\\\Group1\",\"windowsOwner\":\"EXAMPLE\\\\User1\"}", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);daclarrayDiscretionary Access Control List (DACL). The order of the list is important, as the Access Control Entries (ACE) are acted on in order. Deny ACEs should generally be supplied before Allow ACEs. An empty list will clear the value
Discretionary Access Control List (DACL). The order of the list is important, as the Access Control Entries (ACE) are acted on in order. Deny ACEs should generally be supplied before Allow ACEs. An empty list will clear the value
flagsintegerint32A set of bit flags that determine whether child containers or objects can inherit the ACE from the primary object to which the ACL is attached, or how auditing is carried out. The value must be supplied as an integer, and should be determined by using a combination of the following values:
- 0x01 ObjectInheritACE
- 0x02 ContainerInheritACE
- 0x04 NoPropagateInheritACE
- 0x08 InheritOnlyACE
- 0x10 InheritedACE
- 0x40 AuditSuccessACE
- 0x80 AuditFailureACE
A set of bit flags that determine whether child containers or objects can inherit the ACE from the primary object to which the ACL is attached, or how auditing is carried out. The value must be supplied as an integer, and should be determined by using a combination of the following values:
- 0x01 ObjectInheritACE
- 0x02 ContainerInheritACE
- 0x04 NoPropagateInheritACE
- 0x08 InheritOnlyACE
- 0x10 InheritedACE
- 0x40 AuditSuccessACE
- 0x80 AuditFailureACE
16maskintegerint32The access mask determines the specific rights associated with the security principal of the ACE. Access rights are divided into generic, standard and object specific - not all rights are applicable to all types of file system object. The value must be supplied as an integer, and should be determined by using a combination of the following values:
- 0x00000001 FileReadData/FileListDirectory
- 0x00000002 FileWriteData/FileAddFile
- 0x00000004 FileAppendData/FileAddSubdirectory/FileCreatePipeInstance
- 0x00000008 FileReadEA
- 0x00000010 FileWriteEA
- 0x00000020 FileExecute/FileTraverse
- 0x00000040 FileDeleteChild
- 0x00000080 FileReadAttributes
- 0x00000100 FileWriteAttributes
- 0x00010000 DeleteRight
- 0x00020000 ReadControl
- 0x00040000 WriteDACL
- 0x00080000 WriteOwner
- 0x00100000 Synchronize
- 0x01000000 AccessSACL
- 0x02000000 MaximumAllowedRight
- 0x10000000 GenericAll
- 0x20000000 GenericExecute
- 0x40000000 GenericWrite
- 0x80000000 GenericRead
The access mask determines the specific rights associated with the security principal of the ACE. Access rights are divided into generic, standard and object specific - not all rights are applicable to all types of file system object. The value must be supplied as an integer, and should be determined by using a combination of the following values:
- 0x00000001 FileReadData/FileListDirectory
- 0x00000002 FileWriteData/FileAddFile
- 0x00000004 FileAppendData/FileAddSubdirectory/FileCreatePipeInstance
- 0x00000008 FileReadEA
- 0x00000010 FileWriteEA
- 0x00000020 FileExecute/FileTraverse
- 0x00000040 FileDeleteChild
- 0x00000080 FileReadAttributes
- 0x00000100 FileWriteAttributes
- 0x00010000 DeleteRight
- 0x00020000 ReadControl
- 0x00040000 WriteDACL
- 0x00080000 WriteOwner
- 0x00100000 Synchronize
- 0x01000000 AccessSACL
- 0x02000000 MaximumAllowedRight
- 0x10000000 GenericAll
- 0x20000000 GenericExecute
- 0x40000000 GenericWrite
- 0x80000000 GenericRead
17957311principalstringWindows security mode security principal that identifies the trustee to which the ACE applies - it can be either a Security ID (SID) or a user/group name
Windows security mode security principal that identifies the trustee to which the ACE applies - it can be either a Security ID (SID) or a user/group name
"Everyone"typestring (Enum)Type of the ACE - the allowed type will depend on whether the ACE is part of a DACL or SACL
Type of the ACE - the allowed type will depend on whether the ACE is part of a DACL or SACL
inheritDaclAcesbooleanTrue indicates that the DACL will allow appropriate ACE entries to be inherited from the parent object. False indicates that the DACL will not inherit any ACE entries from the parent object. Any inheritance is not automatic and the DACL must also be set at the same time
True indicates that the DACL will allow appropriate ACE entries to be inherited from the parent object. False indicates that the DACL will not inherit any ACE entries from the parent object. Any inheritance is not automatic and the DACL must also be set at the same time
inheritSaclAcesbooleanTrue indicates that the SACL will allow appropriate ACE entries to be inherited from the parent object. False indicates that the SACL will not inherit any ACE entries from the parent object. Any inheritance is not automatic and the SACL must also be set at the same time
True indicates that the SACL will allow appropriate ACE entries to be inherited from the parent object. False indicates that the SACL will not inherit any ACE entries from the parent object. Any inheritance is not automatic and the SACL must also be set at the same time
pathstringAbsolute path to the file system item, in Unix format
Absolute path to the file system item, in Unix format
"/dir1/lun1.iscsi"saclarraySystem Access Control List (SACL). An empty list will clear the value
System Access Control List (SACL). An empty list will clear the value
flagsintegerint32A set of bit flags that determine whether child containers or objects can inherit the ACE from the primary object to which the ACL is attached, or how auditing is carried out. The value must be supplied as an integer, and should be determined by using a combination of the following values:
- 0x01 ObjectInheritACE
- 0x02 ContainerInheritACE
- 0x04 NoPropagateInheritACE
- 0x08 InheritOnlyACE
- 0x10 InheritedACE
- 0x40 AuditSuccessACE
- 0x80 AuditFailureACE
A set of bit flags that determine whether child containers or objects can inherit the ACE from the primary object to which the ACL is attached, or how auditing is carried out. The value must be supplied as an integer, and should be determined by using a combination of the following values:
- 0x01 ObjectInheritACE
- 0x02 ContainerInheritACE
- 0x04 NoPropagateInheritACE
- 0x08 InheritOnlyACE
- 0x10 InheritedACE
- 0x40 AuditSuccessACE
- 0x80 AuditFailureACE
16maskintegerint32The access mask determines the specific rights associated with the security principal of the ACE. Access rights are divided into generic, standard and object specific - not all rights are applicable to all types of file system object. The value must be supplied as an integer, and should be determined by using a combination of the following values:
- 0x00000001 FileReadData/FileListDirectory
- 0x00000002 FileWriteData/FileAddFile
- 0x00000004 FileAppendData/FileAddSubdirectory/FileCreatePipeInstance
- 0x00000008 FileReadEA
- 0x00000010 FileWriteEA
- 0x00000020 FileExecute/FileTraverse
- 0x00000040 FileDeleteChild
- 0x00000080 FileReadAttributes
- 0x00000100 FileWriteAttributes
- 0x00010000 DeleteRight
- 0x00020000 ReadControl
- 0x00040000 WriteDACL
- 0x00080000 WriteOwner
- 0x00100000 Synchronize
- 0x01000000 AccessSACL
- 0x02000000 MaximumAllowedRight
- 0x10000000 GenericAll
- 0x20000000 GenericExecute
- 0x40000000 GenericWrite
- 0x80000000 GenericRead
The access mask determines the specific rights associated with the security principal of the ACE. Access rights are divided into generic, standard and object specific - not all rights are applicable to all types of file system object. The value must be supplied as an integer, and should be determined by using a combination of the following values:
- 0x00000001 FileReadData/FileListDirectory
- 0x00000002 FileWriteData/FileAddFile
- 0x00000004 FileAppendData/FileAddSubdirectory/FileCreatePipeInstance
- 0x00000008 FileReadEA
- 0x00000010 FileWriteEA
- 0x00000020 FileExecute/FileTraverse
- 0x00000040 FileDeleteChild
- 0x00000080 FileReadAttributes
- 0x00000100 FileWriteAttributes
- 0x00010000 DeleteRight
- 0x00020000 ReadControl
- 0x00040000 WriteDACL
- 0x00080000 WriteOwner
- 0x00100000 Synchronize
- 0x01000000 AccessSACL
- 0x02000000 MaximumAllowedRight
- 0x10000000 GenericAll
- 0x20000000 GenericExecute
- 0x40000000 GenericWrite
- 0x80000000 GenericRead
17957311principalstringWindows security mode security principal that identifies the trustee to which the ACE applies - it can be either a Security ID (SID) or a user/group name
Windows security mode security principal that identifies the trustee to which the ACE applies - it can be either a Security ID (SID) or a user/group name
"Everyone"typestring (Enum)Type of the ACE - the allowed type will depend on whether the ACE is part of a DACL or SACL
Type of the ACE - the allowed type will depend on whether the ACE is part of a DACL or SACL
unixGroupIdintegerint32Primary Unix group ID associated with the file system item
Primary Unix group ID associated with the file system item
500unixModeintegerint32Unix mode associated with file system item, represented as an integer value
Unix mode associated with file system item, represented as an integer value
511unixOwnerIdintegerint32Unix user ID of the owner of the file system item
Unix user ID of the owner of the file system item
700windowsGroupstringWindows security model primary group of the file system item - it can be either a Security ID (SID) or the group name
Windows security model primary group of the file system item - it can be either a Security ID (SID) or the group name
"EXAMPLE\\Group1"windowsOwnerstringWindows security model owner of the file system item - it can be either a Security ID (SID) or the owner name
Windows security model owner of the file system item - it can be either a Security ID (SID) or the owner name
"EXAMPLE\\User1"{
"dacl": [
{
"flags": 16,
"mask": 17957311,
"principal": "Everyone",
"type": "ACCESS_ALLOWED_ACE"
}
],
"inheritDaclAces": false,
"inheritSaclAces": false,
"path": "/dir1/lun1.iscsi",
"sacl": [
{
"flags": 16,
"mask": 17957311,
"principal": "Everyone",
"type": "ACCESS_ALLOWED_ACE"
}
],
"unixGroupId": 500,
"unixMode": 511,
"unixOwnerId": 700,
"windowsGroup": "EXAMPLE\\Group1",
"windowsOwner": "EXAMPLE\\User1"
}