[C#] File, Directory 보안 설정

2011. 4. 23. 13:42Others/C# 일반

File 보안 설정

using System.Security.AccessControl;

//파일의 보안 권한을 가져옴
FileSecurity fSecurity = File.GetAccessControl(filename);
fSecurity.AddAccessRule(new FileSystemAccessRule("NETWORK SERVICE", FileSystemRights.FullControl, AccessControlType.Allow)); // NETWORK SERVICE 사용자에 전체권한 추가
File.SetAccessControl(filename, fSecurity);

FileSystemAccessRule 클래스

파일이나 디렉터리에 대한 액세스 규칙을 정의하는 ACE(액세스 제어 항목)을 추상적으로 나타낸 클래스이며, 자식 개체에 액세스 규칙이 전파되는 방법도 지정할 수 있음

FileSystemAccessRight 열거형

  1. AppendData : 파일 끝에 데이터를 추가할 수 있는 권한
  2. ChangePermissions : 파일이나 폴더와 관련된 보안 및 감사 규칙을 변경할 수 있는 권한
  3. CreateDirectories : 폴더를 만들 수 있는 권한
  4. Delete : 폴더나 파일을 삭제할 수 있는 권한
  5. DeleteSubdirectoriesAndFiles : 폴더와 해당 폴더 안에 포함된 모든 파일을 삭제할 수 있는 권한
  6. ExecuteFile : 응용 프로그램 파일을 실행할 수 있는 권한
  7. FullControl : 폴더나 파일을 완전하게 제어하고 액세스 제어 및 감사 규칙을 수정할 수 있는 권한, 모든 작업을 할 수 있는 권한
  8. ListDirectory : 디렉터리의 내용을 읽을 수 있는 권한
  9. Modify : 폴더의 내용을 읽고, 쓰고, 나열하고, 폴더와 파일을 삭제하고, 응용 프로그램 파일을 실행할 수 있는 권한
  10. Read : 폴더나 파일을 일기 전용으로 열고 복사할 수 있는 권한
  11. ReadAndExecute : 폴더나 파일을 읽기 전용으로 열고 복사하고, 응용 프로그램 파일을 실행할 수 있는 권한
  12. ReadAttribute : 폴더나 파일에서 파일 시스템 특성을 열고 복사할 수 있는 권한
  13. ReadData : 파일이나 폴더를 열고 복사할 수 있는 권한
  14. ReadExtendedAttributes : 파일이나 폴더를 열고 복사할 수 있는 권한
  15. ReadPermissions : 폴더나 파일에서 ㅅ액세스 및 감사 규칙을 열고 복사할 수 있는 권한
  16. Synchronize : 응용 프로그램에서 파일 핸들이 I/O작업 완료와 동기화될 때까지 기다릴 수 있는지 여부 지정
  17. TakeOwnership : 폴더나 파일의 소유자를 변경할 수 있는 권한
  18. Traverse : 폴더의 내용을 나열하고 해당 폴더에 포함된 응용 프로그램을 실행할 수 있는 권한
  19. Write : 폴더와 파일을 만들고 파일에서 데이터를 추가하고 제거할 수 잇는 권한
  20. WriteAttributes : 폴더나 파일에서 파일 시스템 특성을 열고 쓸 수 있는 권한
  21. WriteData : 파일이나 폴더를 열고 쓸 수 있는 권한
  22. WriteExtendedAttributes : 폴더나 파일에서 확장된 파일 시스템 특성을 열고 쓸 수 있는 권한 /li>

폴더권한 설정하기

DirectorySecurity dSecurity = Directory.GetAccessControl(folderPath);
dSecurity.AddAccessRule(new FileSystemAccessRule(
    new NTAccount("Users"),
    FileSystemRights.FullControl,
    InheritanceFlags.ObjectInherit|InheritanceFlags.ContainerInherit,
    PropagationFlags.None,
    AccessControlType.Allow
));
Directory.SetAccessControl(folderPath, dSecurity);

FileSystemRights 열거형

권한이 각 항목별로 상속되는지를 지정하는 플래그

  1. None : ACE는 자식 개체에 상속되지 않음
  2. ContainerInherit : ACE는 자식 컨테이너 개체에 상속됨
  3. ObjectInherit : ACE는 자식 리프 개체에서 상속됨

PropagationFlags 열거형

ACE(액세스 제어 항목)가 자식 개체로 전파되는 방법을 지정합니다.

  1. None
  2. NoPropagateInherit : ACE가 가직 개체로 전파되지 않도록 지정
  3. InheritOnly : ACE가 자긱 개체로만 전파되도록 지정. 여기에는 컨테이너와 리프 자식 개체로 모두 포함