지정된 권한으로 파일 및 폴더 추출


11

7zip으로 Windows에 많은 하위 폴더와 파일이있는 폴더를 포장하고 VPS에 업로드 한 후 다음 명령을 실행합니다.

tar -xvzf file.tar.gz

압축을 푼 모든 파일 및 폴더의 권한은 777입니다. 폴더의 권한이 755 및 파일 644가되도록하려면 어떻게해야합니까?


"Command Line Fu"라는 웹 사이트가 있으며 다른 아이디어도 많이 있습니다.
djangofan

답변:


13

tar(1)일반 사용자로 실행중인 경우 umask기본적으로 적용됩니다 . 당신이 실행하는 경우 tar(1)와 같은 root, 당신은 줄 수 --no-same-permissions요청하는 명령 행 옵션 tar(1)을 존중를 umask.

따라서 일반 사용자로 실행하십시오.

umask 022
tar zxvf file.tar.gz

또는 이것을 다음과 같이 실행하십시오 root:

umask 022
tar zxvf file.tar.gz --no-same-permissions

당신은 충실 할 수 있습니다 umask 022당신에 ~/.bashrc, ~/.bash_profile또는 ~/.profile. bash(1)시작 파일에 대한 자세한 내용은 맨 페이지를 참조하십시오 . 복잡합니다.

자세한 내용은 umask셸 맨 페이지, umask(2)시스템 호출 맨 페이지 또는 umask(1posix)POSIX 제공 유틸리티 맨 페이지 ( manpages-posix설치된 경우)에서 찾을 수 있습니다.


umask 022 tar zxvf file.tar.gz-> 파일을 추출하려면 각 파일에 대해 별도로 확인을 요청합니다.

그렇게 할 때 기존 파일을 덮어 쓰고 있습니까?
sarnold

6

디렉토리의 루트에서 다음 명령을 실행하여 디렉토리 및 파일에 대한 원하는 권한을 설정하십시오.

find . -type d -exec chmod 755 {} \;
find . -type f -exec chmod 644 {} \;

닫는 중괄호와 백 슬래시 사이의 공간에 유의하십시오


찾기 :`-exec '에 대한 인수 누락

왜이 명령이 나에게 "find :`-exec '에 대한 인수 누락"이라고 말하는가? 감사.

닫는 중괄호와 사이에 공백을 추가\;
poussma

2

대문자 X를 chmod사용하는 경우이를 사용하여 디렉토리에 대해서만 실행 권한을 설정할 수 있습니다. 즉

chmod -R ugo+X .

1

나는 나를 위해 일한이 솔루션을 발견했다. 폴더 및 하위 폴더의 경우 :

chmod -R 777 */

또한 모든 파일 (폴더 및 하위 폴더에도 있음) :

find . -type f -name "*" | xargs chmod 644

이것이 좋은 방법이 아니라면 모든 의견을 환영합니다. 방금 Linux를 배우기 시작했습니다.

다음과 같이 특수 문자를 잘 처리하는보다 강력한 솔루션은 다음과 같습니다.

find . -type f -print0 | xargs -0 chmod 644  # For files
find . -type d -print0 | xargs -0 chmod 755  # For directories

그러나 두 번째 명령은 많은 파일에서 다음과 같은 출력을 제공합니다. chmod : the': No such file or directory chmod: cannot access Logo.txt에 액세스 할 수 없습니다 : 해당 파일 또는 디렉토리가 없습니다 di

2
777위험하며 매우 소수의 시스템에만 적용됩니다.
sarnold

2
두 번째 명령을 향상시키기 위해 find . -type f -print0 | xargs -0 chmod 644. 은 -name "*"필요하지 않습니다, 그리고 xargs(1)에 파일 이름 구문 분석 에 공백 이나 줄 바꿈 당신이 사용하지 않는 -0- 아스키에 파일 이름 구문 분석 NUL파일 이름에 표시 할 수없는 문자를. -print0용은 find(1)적합한 모드 출력을 포맷으로 요청 xargs -0입력.
sarnold

0

찾기 . -타입 f -exec chmod 644 {} \;


2
수퍼 유저에 오신 것을 환영합니다. 한 줄의 답변은 거의 받아 들여지지 않습니다. 더 자세한 답변을 원하십니까?
50-3
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.