SharedIT | 묻고 답하기(AMP)

파워셀을 활용하여 공유 폴더에 대한 액세스 권한 부여, 공유 폴더 모두에 대한 액세스 권한 확인 방법이 있을까요?

파워셀을 활용하여 공유 폴더에 대한 액세스 권한 부여, 공유 폴더 모두에 대한 액세스 권한 확인 방법이 있을까요?


특정폴더의 액세스 권한 확인은


 Get-Acl -Path 폴더 | Format-Table -Wrap


이것으로 할 수 있었습니다.




 Get-Acl -Path 폴더 | Format-Table -Wrap를 입력하면 하나의 폴더만 보안 액세스 권한을 확인할 수 있었는데요.

전체 공유폴더에 대하여 보안 권한 확인을 하는 방법이 있을까요?




또 하나로, 폴더 사용권한을 명령어를 사용하여 변경하고 싶은데요.

cacls이 나오더라고요... 근데 어려워서 사용을 못하고 있는데  예제는 이렇더라고요.


cacls <filename> [/t] [/m] [/l] [/s[:sddl]] [/e] [/c] [/g user:<perm>] [/r user [...]] [/p user:<perm> [...]] [/d user [...]]


cacls 폴더 /t /g 유저명:perm 주면 되는 건가요?


https://docs.microsoft.com/en-us/previous-versions/windows/it-pro/windows-server-2012-r2-and-2012/cc732245(v=ws.11)

Tags : 태그가 없습니다.

5개의 답변이 있습니다.

wansoo
  0 추천 | 4년 이하 전

파워셀에 익숙하지 않다 보니...

적응에 어려움이 느껴지네요~ ㅎㅎㅎ

가끔 한번씩 사용할때마다 시행 착오를 너무 겪는거 같네요.

공유 폴더 모두에 대한 액세스 권한 확인 방법에 대한 명령을 한번 적어 볼께요.

PowerShell에 익숙하다면 좀 더 깔끔한 명령을 만들 수 있겠지만...

익숙하지 않다 보니~

제가 생각해도 좀 조잡한 명령이 되어 버린감이 있긴 하네요.

$a=$(net share | foreach-object{ $_.split(" ") -creplace ' ', '' ; } | findstr \ );foreach( $b in $a ) { get-acl -path $b }


DOS용 외부 명령인 net share와 findstr을 이용했고요.

결과값을 foreach 명령에 입력 값으로 사용할 수 있는 방법을 찾지 못해서, 임시로 $a 라는 변수에 넣어서 전달 시켰고요.


콤마등 단일 문자를 기준으로 문자열을 분리 시키기는 쉬운것 같은데, 여러개의 공백 문자열로된 white space를 구분으로해서 문자열을 분리시키는 방법을 찾기가 어려워 시행 착오를 겪으며, 코드가 지저분해 진 느낌이 들고... ㅎㅎㅎ


참고 해서 좀 더 깔끔한 명령을 만들어도 될거 같고, 아니면, 이대로 해서 스크립트로 만들어 사용해도 될거 같고요~


set-acl 명령은 좀 더 연구해보고, 가능하다면 다시 글을 올릴수 있도록 한 번 해 볼께요~ ^^

Genghis Khan
  0 추천 | 4년 이하 전

Powershell 명령어로 한꺼번에 확인하고 설정 변경하는게 

유닉스 계열과 동일하죠~

해당사항 아래 링크 참고하세요 

https://stackoverrun.com/ko/q/7773782

wansoo | 4년 이하 전

Powershell 명령에... 유닉스가 왜 언급될까요...??

전혀 상황에 맞지 않는 용어 사용이 되겠네요~

과연, 유닉스를 제대로 알고서 언급하였을까..? 하는 생각이 들고요.

파워 셀은 제쳐두고서라도... 리눅스나 DOS는 제대로 이해하고 있을까 하는 의문도 들고요~

이렇게 스스로도 제대로 알지 못하는 내용을 확신을 전제로 언급해 버린다면,

내용을 전혀 모르는 사람들은 정말 그런줄 거짓 정보에 속아 넘어가버리겠죠~

쉐어드IT의 발전을 위해서라도 전혀 상황에 맞지 않은 내용을 잘 아는 것 처럼 포장해서 표현하는건 자제하는게 맞지 않을까 싶어 보이네요.

wansoo
  0 추천 | 4년 이하 전

한개 공유 폴더에 대한 권한 확인 방법은 아는데,  모든 공유 폴더에 대한 권한 확인 방법은...

for 문을 사용해도 될 것 같네요.

예를 들어 모든 공유  폴더에 대한 cacls 명령을 수행 시키려 한다면...

for /f "tokens=1,2 delims= " %a in ( 'net share ^| findstr ^\' ) do cacls %b


이라고 명령을 주면 되겠네요.


net share 명령으로 공유되어 있는 모든 공유 폴더 List를 확인할 수 있겠고요.

findstr 명령으로 공유  폴더에 대한  내용만  추려 낸  후에, for 문을 이용해서 각 공유 폴더에 대한 정보를 확인하는 형식으로 작동되고요.


wansoo
  0 추천 | 4년 이하 전

cacls 사용법은...

특정 폴더에 대해 administrator 유저에게 읽기 권한을  주고 싶다면,

cacls 폴더 /p administrator:r       이라고 명령을 주면 될거 같고요.

단, cmd 창을 관리자 권한으로 열어야 사용할 수 있겠고...


d:\abc 폴더에 대해 user1 사용자에게 모든 권한을 주고 싶을 경우에는...

cacls d:\abc /p user1:f        라고 명령을  주면  될거  같고요...


파워셀 get-acl 명령으로 확인 가능한 내용을 변경하고 싶다면

set-acl 명령으로 실행하면  될거  같아 보이네요.

구체적인 실행 방법은 한번 찾아 보고, 다시 올릴 수 있도록 해 볼께요~ ^^;;