디렉토리의 모든 파일 및 폴더 권한을 644/755로 변경하십시오.


184

명령 프롬프트 chmod에서 모든 파일을 644로, 모든 폴더를 755로 변경하려면 어떻게 linux합니까? (단말기)


6
누군가 (@animuson)가 저를 설명 해줄 수 있다면, 왜이 chmod 질문이 주제에 맞지 않고 다른 모든 것들 (14,438 개 결과)이 그렇지 않습니까?
hugo der hungrige

조금 늦었지만이 명령은 한 번에 허용 된 답변을 수행합니다. chmod -R a = r, a + X, u + w / your / path
MichaelICE

좋은 질문입니다. 닫을 자격이 없습니다. 이것들은 닫히지 않고 stackoverflow 하위 사이트로 옮겨야합니다.
Erik Friesen

1
@ hugoderhungrige : http://superuser.com: P 와 같은 서버 사이트에서 물어 보는 것을 의미 하지만이 질문이 도움이되었습니다.
emotality

답변:


345

한 가지 방법은 find를 사용하는 것입니다.

디렉토리

find /desired_location -type d -print0 | xargs -0 chmod 0755

파일

find /desired_location -type f -print0 | xargs -0 chmod 0644

21
나 같은 다른 사람을 위해, 이것은 대신 sudo find /your/location -type f -exec chmod 644 {} \;파일과 sudo find /your/location -type d -exec chmod 755 {} \;디렉토리 를 시도하지 않습니다
NineCattoRules

원래 솔루션을 실행했는데 파일과 디렉토리에 대한 권한이 엉망이되었습니다. 조심해! 의견에 대한 해결책이 효과적이었습니다. 감사합니다!
Mahsa Mortazavi

3
왜 더 나은 chmod -R a=r,u+w,a+X /foo가요?
피터 크라우스

unable to execute /bin/chmod: Argument list too long
vladkras

desired_location을 지정할 때 하위 폴더 만 chmod 755가 되려면 어떻게해야합니까? 이것은 또한 부모 폴더를 755
MaXi32

105

가장 쉬운 방법은 다음과 같습니다.

chmod -R u+rwX,go+rX,go-w /path/to/dir

이는 기본적으로 다음을 의미합니다.

ch앤지 파일 mod말이지 -R함으로써 ecursively :

  • user : read, w의식 및 Xecute 권한,
  • group 및 해당 o사용자 : read 및 Xecute 권한이지만 -write 권한은 없습니다.

참고 X이미 검색 / 실행 아니라면, 파일 디렉토리의 실행 파일을 만들 수 있지만됩니다.

+X -디렉토리 나 파일이 이미 누구나 검색 가능 / 실행 가능하다면 누구나 검색 가능 / 실행 가능하도록하십시오.

man chmod자세한 내용을 확인 하십시오.

참조 : 파일을 제외한 모든 디렉토리를 chmod하는 방법 (재귀 적으로)? SU에서


7
chmod -R a = r, u + w, a + X / foo
존 Allsup

9
이 대답은 깔끔하지만 문제가 있습니다. 명령을 실행하기 전에 실행 가능한 파일은 나중에 실행 가능합니다. 이 결함이없는 명령에 대해서는 @JohnAllsup의 답변을 참조하십시오.
mzuther

4
@mzuther이 문제가 실제로 당신을위한 것이 아니라면
RiaD

37

내가 얻을 수있는 가장 짧은 것은 다음과 같습니다.

chmod -R a=r,u+w,a+X /foo

이것은 GNU / Linux에서 작동하며 일반적으로 Posix를 믿습니다 ( http://pubs.opengroup.org/onlinepubs/9699919799/utilities/chmod.html 참조 ).

이것이하는 일은 :

  1. 파일 / 디렉토리를 r__r__r__로 설정하십시오 (0444).
  2. rw_r__r__을 얻기 위해 소유자에 w를 추가하십시오 (0644).
  3. 디렉토리 인 경우 모두 실행을 설정하십시오 (dir의 경우 0755, 파일의 경우 0644).

중요하게, 1 단계 권한은 모든 실행 비트를 지우므로 3 단계는 디렉토리 (파일이 아닌)에 대한 실행 비트 만 다시 추가합니다. 또한 디렉토리가 되풀이되기 전에 세 단계가 모두 수행되므로 (예 :

chmod -R a=r /foo
chmod -R u+w /foo
chmod -R a+X /foo

a = r은 디렉토리에서 x를 제거하므로 chmod는 그 디렉토리로 재귀 할 수 없습니다.)


훌륭한! 나를 많이 도와주었습니다
Jannie Theunissen

13

내가 기억하기 가장 쉬운 것은 두 가지 작업입니다.

chmod -R 644 dirName
chmod -R +X dirName

+ X는 디렉토리에만 영향을줍니다.


1
가장 간단하고 안전한
Marco Marsala

12

https://help.directadmin.com/item.php?id=589 그들은 쓰기 :

public_html 데이터를 디렉토리의 경우 755로, 파일의 경우 644로 빠르게 재설정하는 방법이 필요한 경우 다음과 같이 사용할 수 있습니다.

cd /home/user/domains/domain.com/public_html
find . -type d -exec chmod 0755 {} \;
find . -type f -exec chmod 0644 {} \;

나는 테스트하고 ... 작동합니다!


생명의 은인! 이 문제에 대한 깨끗한 해결책에 감사드립니다! WordPress 설치에 대한 권한 문제를 해결해야 할 때 나를 위해 일했습니다!
twknab

디렉토리 내에서 조정하는 데 효과적입니다.
Christian Berendt

8

이것은 나를 위해 일했다 :

find /A -type d -exec chmod 0755 {} \;
find /A -type f -exec chmod 0644 {} \;

3
주의 :이 명령은 이름에 공백이있는 파일 또는 디렉토리를 처리하지 않습니다. 허용 된 답변의 명령이 적용됩니다.
차드 누이 스

1
{}를 따옴표로 묶지 않은 경우에만이 경고가 적용됩니다. 따라서 print0 및 xargs -0을 사용할 이유가 없습니다.find /A -type X -exec chmod Y '{}' \;
Michael Stumpfl

6

단일 패스로 두 가지를 모두 수행하십시오.

find -type f ... -o -type d ...

에서와 같이 유형 f OR 유형 d를 찾고 파일의 경우 첫 번째 ...를 수행하고 디렉토리의 경우 두 번째 ...를 수행하십시오. 구체적으로 특별히:

find -type f -exec chmod --changes 644 {} + -o -type d -exec chmod --changes 755 {} +

--changes자동으로 작동하려면를 사용하지 마십시오 .


2

public_html 데이터를 디렉토리의 경우 755로, 파일의 경우 644로 빠르게 재설정하는 방법이 필요한 경우 다음과 같이 사용할 수 있습니다.

cd /home/user/domains/domain.com/public_html
find . -type d -exec chmod 0755 {} \;
find . -type f -exec chmod 0644 {} \;

또한 PHP가 "apache"가 아닌 사용자로 실행된다는 것을 알고 있다면 다음과 같은 추가 보안을 위해 PHP 파일을 600으로 설정할 수 있습니다.

find . -type f -name '*.php' -exec chmod 600 {} \;

https://help.directadmin.com/item.php?id=589 에서이 reource를 찾을 수 있습니다.


-9

이것은 또한 작동 할 수 있습니다 :

chmod -R 755 *  // All files and folders to 755.

chmod -R 644 *.*  // All files will be 644.

1
아무도하지 마십시오! 완전한 서버에 영향을 미칩니다!
T.Todua
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.