public void ParseSymbolicPermissions() { AssertPathPermissionsEquality(new PathPermissions( owner: AllPermissions, group: AllPermissions, other: AllPermissions), PathPermissions.ParseSymbolicPermissions("rwxrwxrwx")); AssertPathPermissionsEquality(new PathPermissions( owner: AllPermissions, group: AllPermissions, other: AllPermissions, stickyBit: true), PathPermissions.ParseSymbolicPermissions("rwxrwxrwt")); AssertPathPermissionsEquality(new PathPermissions( owner: AllPermissions, group: AllPermissions, other: AllPermissions, extendedInfoInAcl: true), PathPermissions.ParseSymbolicPermissions("rwxrwxrwx+")); AssertPathPermissionsEquality(new PathPermissions( owner: AllPermissions, group: AllPermissions, other: AllPermissions, stickyBit: true, extendedInfoInAcl: true), PathPermissions.ParseSymbolicPermissions("rwxrwxrwt+")); }
/// <summary> /// Azure DataLakeGen2 Item constructor /// </summary> /// <param name="item">datalake gen2 listout item</param> public AzureDataLakeGen2Item(PathItem item, DataLakeFileSystemClient fileSystem, bool fetchProperties = false) { this.Name = item.Name; this.Path = item.Name; this.ListPathItem = item; this.IsDirectory = item.IsDirectory is null ? false : item.IsDirectory.Value; DataLakePathClient pathclient = null; if (this.IsDirectory) // Directory { this.Directory = fileSystem.GetDirectoryClient(item.Name); pathclient = this.Directory; } else //File { this.File = fileSystem.GetFileClient(item.Name); pathclient = this.File; } this.Owner = item.Owner; this.Group = item.Group; this.Permissions = PathPermissions.ParseSymbolicPermissions(item.Permissions); this.LastModified = item.LastModified; this.Length = item.ContentLength is null ? 0 : item.ContentLength.Value; if (fetchProperties) { this.Properties = pathclient.GetProperties(); this.AccessControl = pathclient.GetAccessControl(); this.ACL = PSPathAccessControlEntry.ParsePSPathAccessControlEntrys(this.AccessControl.AccessControlList); this.ContentType = Properties.ContentType; } }
public void SetPermissions() { // Make StorageSharedKeyCredential to pass to the serviceClient string storageAccountName = NamespaceStorageAccountName; string storageAccountKey = NamespaceStorageAccountKey; Uri serviceUri = NamespaceBlobUri; StorageSharedKeyCredential sharedKeyCredential = new StorageSharedKeyCredential(storageAccountName, storageAccountKey); // Create DataLakeServiceClient using StorageSharedKeyCredentials DataLakeServiceClient serviceClient = new DataLakeServiceClient(serviceUri, sharedKeyCredential); // Get a reference to a filesystem named "sample-filesystem-acl" and then create it DataLakeFileSystemClient filesystem = serviceClient.GetFileSystemClient(Randomize("sample-filesystem-per")); filesystem.Create(); try { #region Snippet:SampleSnippetDataLakeFileClient_SetPermissions // Create a DataLake file so we can set the Access Controls on the files DataLakeFileClient fileClient = filesystem.GetFileClient(Randomize("sample-file")); fileClient.Create(); // Set the Permissions of the file PathPermissions pathPermissions = PathPermissions.ParseSymbolicPermissions("rwxrwxrwx"); fileClient.SetPermissions(permissions: pathPermissions); #endregion Snippet:SampleSnippetDataLakeFileClient_SetPermissions // Get Access Control List PathAccessControl accessControlResponse = fileClient.GetAccessControl(); // Check Access Control permissions Assert.AreEqual(pathPermissions.ToSymbolicPermissions(), accessControlResponse.Permissions.ToSymbolicPermissions()); Assert.AreEqual(pathPermissions.ToOctalPermissions(), accessControlResponse.Permissions.ToOctalPermissions()); } finally { // Clean up after the test when we're finished filesystem.Delete(); } }
public void ParseSymbolicPermissions_invalid() { TestHelper.AssertExpectedException( () => PathPermissions.ParseSymbolicPermissions("rwxrwxrw"), new ArgumentException("s must be 9 or 10 characters. Value is \"rwxrwxrw\"")); }
/// <summary> /// execute command /// </summary> public override void ExecuteCmdlet() { IStorageBlobManagement localChannel = Channel; bool foundAFolder = false; DataLakeFileClient fileClient = null; DataLakeDirectoryClient dirClient = null; if (ParameterSetName == ManualParameterSet) { DataLakeFileSystemClient fileSystem = GetFileSystemClientByName(localChannel, this.FileSystem); foundAFolder = GetExistDataLakeGen2Item(fileSystem, this.Path, out fileClient, out dirClient); } else //BlobParameterSet { if (!InputObject.IsDirectory) { fileClient = InputObject.File; } else { dirClient = InputObject.Directory; foundAFolder = true; } } if (foundAFolder) { if (ShouldProcess(GetDataLakeItemUriWithoutSas(dirClient), "Update Directory: ")) { //Set Permission if (this.Permission != null || this.Owner != null || this.Group != null) { //PathAccessControl originPathAccessControl = dirClient.GetAccessControl().Value; dirClient.SetPermissions( this.Permission != null ? PathPermissions.ParseSymbolicPermissions(this.Permission) : null, this.Owner, this.Group); } //Set ACL if (this.Acl != null) { dirClient.SetAccessControlList(PSPathAccessControlEntry.ParseAccessControls(this.Acl)); } // Set Properties SetDatalakegen2ItemProperties(dirClient, this.BlobProperties, setToServer: true); //Set MetaData SetDatalakegen2ItemMetaData(dirClient, this.BlobMetadata, setToServer: true); WriteDataLakeGen2Item(localChannel, dirClient); } } else { if (ShouldProcess(GetDataLakeItemUriWithoutSas(fileClient), "Update File: ")) { //Set Permission if (this.Permission != null || this.Owner != null || this.Group != null) { fileClient.SetPermissions( this.Permission != null ? PathPermissions.ParseSymbolicPermissions(this.Permission) : null, this.Owner, this.Group); } //Set ACL if (this.Acl != null) { fileClient.SetAccessControlList(PSPathAccessControlEntry.ParseAccessControls(this.Acl)); } // Set Properties SetDatalakegen2ItemProperties(fileClient, this.BlobProperties, setToServer: true); //Set MetaData SetDatalakegen2ItemMetaData(fileClient, this.BlobMetadata, setToServer: true); WriteDataLakeGen2Item(localChannel, fileClient); } } }