기본 디렉터리에 있는 모든 디렉터리와 파일의 ACL과 기본 ACL을 변경하고 싶습니다. 다른 답변(예:이것), -R
이 플래그를 사용하세요. 그러나 나는 얻는다
$ setfacl -R -m u::rwx my_dir/
setfacl: unknown option -- R
Try `setfacl --help' for more information.
# this is different from what's done on, e.g. Ubuntu
# setfacl -R -d -m u::rwx mydir/
$ setfacl -R -m d:u::rwx mydir/
Cygwin에서 ACL 권한을 재귀적으로 설정하는 방법은 무엇입니까?
답변1
디렉토리에 포함된 모든 파일 및 디렉토리에 대해 명령을 반복하려면 find
해당 -exec
옵션을 사용할 수 있습니다.
find my_dir -exec setfacl -m u::rwx {} \;
답변2
이것은 테스트되었습니다.
outfile="permissions.out"; echo | tee -a "${outfile}"; echo "For directory:" | tee -a "${outfile}"; echo "$(pwd)" | tee -a "${outfile}"; find . -print0 | xargs -I'{}' -0 bash -c 'echo; echo " Changes for {}"; echo "Trying to change the group"; chgrp '"'"'my_group'"'"' "{}"; if [ -f "{}" -o -d "{}" ]; then echo; echo "User to rwx"; setfacl -m u::rwx "{}"; setfacl -m u:bballdave025:rwx "{}"; echo "User-default to rwx"; if [ -d "{}" ]; then setfacl -m d:u::rwx "{}"; setfacl -m d:u:bballdave025:rwx "{}"; else echo " Not a directory, no defaults."; fi; echo "Group to rwx"; setfacl -m g::rwx "{}"; echo "Group-default to rwx"; if [ -d "{}" ]; then setfacl -m d:g::rwx "{}"; setfacl -m d:g:my_group:rwx "{}"; else echo " Not a directory, no defaults."; fi; echo "Other to r-x"; setfacl -m o:r-x "{}"; echo "Other-default to r-x"; if [ -d "{}" ]; then setfacl -m d:o::r-x "{}"; else echo " Not a directory, no defaults"; fi; else echo " Not a file nor a directory, probably a permissions error."; fi; echo "Changing executable bit"; chmod a+x "{}"; echo -e "\nDone with {}\n\n\n";' | tee -a "${outfile}"
또는 더 읽기 쉬운 스크립트일 수도 있지만 더 나은 스크립트의 시작일 가능성이 높습니다. (이것은 테스트되지 않았습니다.)
#!/bin/bash
find $1 -print0 | \
xargs -I'{}' -0 bash -c \
'echo; '\
'echo " Changes for {}"; '\
'echo "Trying to change the group"; '\
'chgrp '"'"'my_group'"'"' "{}"; '\
'if [ -f "{}" -o -d "{}" ]; then '\
' echo; '\
' echo "User to rwx"; '\
' setfacl -m u::rwx "{}"; '\
' setfacl -m u:bballdave025:rwx "{}"; '\
' echo "User-default to rwx"; '\
' if [ -d "{}" ]; then '\
' setfacl -m d:u::rwx "{}"; '\
' setfacl -m d:u:bballdave025:rwx "{}"; '\
' else '\
' echo " Not a directory, no defaults."; '\
' fi; '\
' echo "Group to rwx"; '\
' setfacl -m g::rwx "{}"; '\
' echo "Group-default to rwx"; '\
' if [ -d "{}" ]; then '\
' setfacl -m d:g::rwx "{}"; '\
' setfacl -m d:g:my_group:rwx "{}"; '\
' else '\
' echo " Not a directory, no defaults."; '\
' fi; '\
' echo "Other to r-x"; '\
' setfacl -m o:r-x "{}"; '\
' echo "Other-default to r-x"; '\
' if [ -d "{}" ]; then '\
' setfacl -m d:o::r-x "{}"; '\
' else '
' echo " Not a directory, no defaults"; '\
' fi; '\
'else '\
' echo " Not a file nor a directory, probably a permissions error."; '\
'fi; '\
'echo "Changing executable bit"; '\
'chmod a+x "{}"; '\
'echo -e "\nDone with {}\n\n\n";'