Linux에서 폴더와 모든 하위 폴더 및 파일에 대한 권한을 한 단계로 변경하려면 어떻게합니까? [닫은]


1806

Linux에서 폴더와 모든 하위 폴더 및 파일의 권한을 한 단계 (명령)로 변경하고 싶습니다.

이미 아래 명령을 시도했지만 언급 된 폴더에서만 작동합니다.

chmod 775 /opt/lampp/htdocs

설정하는 방법이 chmod 755를 위해 /opt/lampp/htdocs및 하위 폴더 및 파일을 포함하여 모든 콘텐츠는?

또한 나중에 내부에 새 폴더 또는 파일을 만들면 htdocs해당 권한을 어떻게 자동으로 설정할 수 755있습니까?

나는이 링크를 보았다 :

http://stackoverflow.com/questions/3740187/how-to-set-default-chmod-in-linux-terminal


4
당신이 쓰는하고자 했는가 chmod 75 /opt/lampp/htdocs또는 정말해야 chmod 755 /opt/lampp/htdocs?
HelloGoodbye

232
리눅스에 대한 4 번째로 큰 의문이 "비 주제로 닫혀있다"는 사실은 유쾌합니다. 프로그래머를 제외한 누가 chmod에 관심이 있습니까? 이 주제는 어떻습니까? "권한", "폴더"및 "cmod"가 주제를 벗어난 태그 인 이유는 무엇입니까?
Arthur Dent

8
@ArthurDent는이 질문 (완전히 유효하고 도움이되는)이 SuperUser 또는 ServerFault와 같은 시스템 중심의 SE 사이트에 더 적합하기 때문입니다. 프로그래밍과 관련이 없습니다.
timelmer

26
@timelmer 물론입니다. 왜 "permissions", "folder"및 "cmod"태그입니까? cmod는 언제 프로그래밍에 '명시 적으로'사용됩니까?
Arthur Dent

9
정말로 까다 롭고 싶다면 Bash는 실제로 스크립팅 언어이지만 PHP도 마찬가지입니다.
timelmer

답변:


2957

다른 답변은 chmod -R 755이 권한을 트리의 모든 파일과 하위 폴더에 설정 한다는 점에서 맞습니다 . 하지만 왜 지구상에서 하시겠습니까? 디렉토리에는 의미가 있지만 모든 파일에서 실행 비트를 설정하는 이유는 무엇입니까?

실제로 원하는 것은 디렉토리를 755로 설정하고 파일을 그대로 두거나 644로 설정하는 것입니다.이를 위해 find명령을 사용할 수 있습니다 . 예를 들면 다음과 같습니다.

모든 디렉토리를 755 ( drwxr-xr-x) 로 변경하려면 다음을 수행하십시오 .

find /opt/lampp/htdocs -type d -exec chmod 755 {} \;

모든 파일을 644 ( -rw-r--r--) 로 변경하려면

find /opt/lampp/htdocs -type f -exec chmod 644 {} \;

231
누구든지 {} \;선의 의미 를 설명해야 합니까?
Nilzor

307
@Nilzor 는 각 파일에 대해 chmod 644 {} \;실행될 명령을 지정 find합니다. {}은 파일 경로로 대체되고 세미콜론은 명령의 끝을 나타냅니다 (이스케이프 된 경우 그렇지 않은 경우 쉘 대신 셸로 해석 됨 find).
tobbez

25
"그러나 왜 모든 파일에 실행 비트를 설정합니까?" Ubuntu / Linux를 처음 사용합니다 ...
FlavorScape

12
@FlavorScape Womble은 find에 의해 리턴 된 디렉토리에서만 실행 비트를 설정합니다. 디렉토리에 대한 실행 권한을 통해 사용자 클래스는 해당 디렉토리의 내용을 나열하고 CD에 넣을 수 있습니다. 일반적으로 말해서 디렉토리에 r과 x가 둘 다 액세스 가능하기를 원하지만, 둘 중 하나만 설정하는 이상한 경우가있을 수 있습니다. 자세한 내용은이 안내서를 참조하십시오 : nixsrv.com/llthw/ex23
Alexandr Kurilin

25
sleepynate를 제외하고, 모든 응답은 미래에 만들어진 파일 / 폴더에 대한 권한 설정에 관한 그의 질문의 측면을 다루기 위해 무시되었습니다 .
JGarrido

781

-R 옵션 확인

chmod -R <permissionsettings> <dirname>

앞으로 맨 페이지를 먼저 확인하면 많은 시간을 절약 할 수 있습니다.

man <command name>

따라서이 경우 :

man chmod

147
그게 뭐야 man?
Adam

36
매뉴얼 페이지를 나타내며 명령에 대한 매뉴얼 페이지를 표시하는 linux 명령입니다 (대부분의 Linux 명령에는 매뉴얼 페이지가 있음). man ls 또는 man man을 사용해보십시오.
Steve Robillard

8
Mac OS X의 터미널에서는이 기능이 작동하지 않았습니다. "chmod -R <permissionsettings> <dirname> *"에서 작동했습니다.
Einar Ólafsson

127
지금은 실제로 여기에 게시하거나 Google을 사용하는 것보다을 사용하는 것이 더 빠르다고 생각합니다 man. 특히 grep새로운 곳이라면 man문서에서 예제를 찾는 데 시간이 많이 걸리지 만 Google 또는 SO는 몇 초 내에 예제를 제공합니다.
ely

17
기록에 따르면 Linux에 익숙하지 않은 사람은 사람에 익숙하지 않을 수 있습니다. 나는 그것이 존재한다는 것을 알고 있지만 그것을 사용하는 방법을 찾으려면 구글 어드벤쳐가 필요합니다. 아마도 가치있는 벤처 일지 모르지만 Google을 통해이 VERY 게시물을 찾았으며 내가 묻는 정확한 질문에 답했다는 것을 알아야합니다. 자원, 내 친구. 자원은 귀중합니다. 그리고 당신은 이것이 무의미하고 그가 방금 그 남자를 확인했다고 생각할 수도 있지만, 이것은 나와 다른 사람들 (수천 명)의 수백 명을 도왔습니다. 그래서 그것을 고려하십시오.
Soundfx4

391

모든 파일에 대한 권한을 모든 a+r디렉토리 에로 설정 a+x하고 전체 서브 디렉토리 트리를 통해 재귀 적으로 수행하려면 다음을 사용하십시오.

chmod -R a+rX *

X(자본이 X아니라 작은 x(아직 누군가를 위해 실행하지 않는 한) 파일을 무시하지만, 디렉토리에 사용됩니다!)가.


27
좋은 대답입니다. *는 숨겨진 파일 (점으로 시작하는 이름)과 일치하지 않습니다. 그러면을 사용하는 것이 더 합리적 일 수 있습니다. (현재 디렉토리).
Aaron Adams

21
이것이 정답입니다. 필자의 경우 모든 디렉토리를 775 로 설정 하고 모든 파일을 664 로 설정하고 싶었습니다 . @Pete의 훌륭한 답변으로 chmod문서를 찾게되어 사용할 수 있다고 생각했습니다 chmod -R g+wX .. 브라보!
chadoh

8
x파일이 이미 있으면 파일에서 제거되지 않습니다 .
Benoit Duffez

5
완전히 명확하지 않은 경우 대문자 X는 "모든 디렉토리를 실행 가능하게 만들기"(파일은 아님)를 의미합니다.
Matt Browne

4
@BenoitDuffez 목표가 파일에서 실행 비트를 제거하는 것이라면 "a-x + rX"와 같은 지시문을 결합하여 모든 것에서 "x"를 제거한 다음 "r"을 모든 것으로, "x"를 디렉토리로만 설정할 수 있습니다 .
nunks

144

모든 파일 및 하위 폴더의 재귀 순회에 -R함께 사용할 수 있습니다 chmod.

현재 사용자 또는 다른 사용자가 설치 한 LAMP 에 따라 sudo가 필요할 수 있습니다 .

sudo chmod -R 755 /opt/lampp/htdocs

17
어떻게 든 sudo chmod 755 -R /directory작동하지 않았지만 작동했습니다 sudo chmod -R 755 /directory. 기묘한. 그건 그렇고 Mac OS X를 사용하고 있습니다.
lomse

8
이것은 내 경험에 맞습니다. 플래그는 문자열의 아무 곳이 아니라 chmod 바로 뒤에 나타나야합니다.
orionrush

1
위의 서면 명령이 잘못되었습니다. 올바른 재귀 명령은 다음과 같습니다. sudo chmod -R 755 / opt / lampp / htdocs 참고 : -R은 755 이전이어야합니다
Sandip Patel-SM

이 솔루션은 Redhat에서 잘 작동합니다. 감사!
Lavande

RHEL에서 잘 sudo chmod 755 -R작업 하고 일했습니다
AnBisw

79

올바른 재귀 명령은 다음과 같습니다.

sudo chmod -R 755 /opt/lampp/htdocs

-R: 현재 폴더를 포함한 모든 하위 폴더 변경


1
안녕 당신은 현재 폴더에 대한 경로에도 불구하고 하나입니까?
shareef

OSX 사용 : sudo chmod 777 로그 / -R GETTING : chmod : -R : 해당 파일이나 디렉토리가 없어야합니다. sudo chmod -R 777 logs /
elad silver

76

모든 하위 폴더를 (재귀 적으로) 설정하려면 -R을 사용하십시오.

chmod 755 /folder -R

그리고 umask를 사용하여 기본값을 새 폴더 / 파일로 설정하십시오 cd / folder umask 755


24
umask755로 설정하지 마십시오 ! 작성한 파일이나 디렉토리를 나열하거나 읽거나 사용할 수 없습니다!
sleepynate

14
umask 022을 의미 했습니까?
Xkeeper

4
파일을 포함하여 모두 755로 설정됩니다.!
Patrick Mutwiri

@sleepynate 당신은 무엇을 말하는가? 755는 소유자가 읽고 쓰고 실행할 수 있으며 다른 모든 사용자는 읽고 쓸 수 있지만 개체에 쓸 수는 없음을 의미합니다.
svin83

2
@NicHartley @ svin83 umask는 권한에서 마스킹되는 비트이므로 사실상 chmod의 반대입니다. λ ~ → umask 022 λ ~ → umask -S u=rwx,g=rx,o=rx λ ~ → umask 755 λ ~ → umask -S u=,g=w,o=w
sleepynate

51

chmod 755 -R /opt/lampp/htdocs재귀 적으로 권한을 설정합니다. 권한을 설정 한 후 생성 된이 디렉토리에서만 파일에 대한 권한을 자동으로 설정하는 방법은 없지만을 설정하여 시스템 전체 기본 파일 권한을 변경할 수 있습니다 umask 022.


9
sleepynate의 대답은 정답입니다. 이 포스터는 1) 파일 및 폴더에 대한 권한을 수정하는 방법과 2) 기본값 ( "미래"파일을 의미)을 변경하는 방법에 대해 두 가지 질문을했습니다. nate가 말했듯이, 첫 번째는 "chmod"이고 두 번째는 "umask"입니다. 또한 하나의 디렉토리에서 umask를 변경할 방법이 없다고 덧붙입니다. umask는 사용자마다 "모두 또는 아무것도 없습니다". 그러나 그룹을 공유하는 새 사용자를 만드는 데 방해가되는 것은 아무것도 없습니다. 따라서 "sudo -u someuser [create file]"만 가능합니다. 상자 밖에서 약간 생각하고 있지만 좋은 해결 방법입니다.
Scott Prive

나는 당신이 옳다고 생각하지만 inherit많은 경우에 해결책이 될 수 없거나 NTFS-3G와 독점적으로 작동합니까?
Sebastian Schlicht

나중에 폴더에 대한 권한을 부여하지 않으면 폴더를 myforlderPC와 같은 다른 위치에서 서버 의이 대상 디렉토리 로 복사하지 못할 수 있습니다 . myfolder 권한이없는 이름의 대상 디렉토리 내가 가진 것처럼 root, 나는 단지 사용 chown -R username:usergroup /directory합니다.
Jason Goal

27

수퍼 유저에서 nik이 제공 한이 답변 을 고려하고 다음 과 같이 모든 파일 / 폴더에 "one chmod"를 사용할 수 있습니다.

chmod 755 $(find /path/to/base/dir -type d)
chmod 644 $(find /path/to/base/dir -type f)

9
경고 : 명령 줄 제한에 쉽게 도달 할 수 있습니다.
Lothar

1
이 오류가 있습니다 : -bash : / bin / chmod : 인수 목록이 너무 깁니다
Oleg Abrazhaev

오류 를 극복하려면 -exec옵션 을 사용하는 것이 좋습니다 . findArgument list too long
miravalls


20

사용하다:

sudo chmod 755 -R /whatever/your/directory/is

그러나 조심하십시오. 잘못된 파일 / 폴더의 권한을 변경하면 실제로 당신을 해칠 수 있습니다.


20

다음은 디렉토리를 775로 설정하고 파일을 664로 설정하는 다른 방법입니다.

find /opt/lampp/htdocs \
\( -type f -exec chmod ug+rw,o+r {} \; \) , \
\( -type d -exec chmod ug+rwxs,o+rx {} \; \)

오래 보일지 모르지만 다음과 같은 세 가지 이유로 매우 시원합니다.

  1. 파일 시스템을 두 번이 아니라 한 번만 검색합니다.
  2. 파일 처리 방법과 디렉토리 처리 방법을보다 잘 제어 할 수 있습니다 . 이것은 sticky bit 와 같은 특수 모드로 작업 할 때 유용 하지만 파일에는 제외하고 디렉토리에는 적용하려고합니다.
  3. man페이지에서 바로 기법을 사용 합니다 (아래 참조).

이 솔루션과 단순히 두 개의 찾기 명령을 사용하여 (Peter Mortensen의 솔루션에서와 같이)이 솔루션 간의 성능 차이 (있는 경우)를 확인하지 않았습니다. 그러나 매뉴얼에서 비슷한 예를 보는 것이 좋습니다.

man find페이지 예 :

find / \
\( -perm -4000 -fprintf /root/suid.txt %#m %u %p\n \) , \
\( -size +100M -fprintf /root/big.txt %-10s %p\n \)

Traverse the filesystem just once, listing setuid files and  direc‐
tories into /root/suid.txt and large files into /root/big.txt.

건배


이제 셸 스크립트에서 어떻게 바꾸어 openmod $ folder를 실행할 수 있습니까?
StR

xargs를 사용하십시오. 수천 개의 프로세스 호출을 저장합니다.
seanahern

13

chmod -R 755 directory_name작동하지만 어떻게 새 파일을 755로 유지 하시겠습니까? 파일의 권한이 기본 권한이됩니다.


나는 그것을했지만 거기에서 터미널을 열 수 없습니다. 고칠 수 없습니다.
Kavindu Gayantha

9

Mac OS X 10.7 (Lion)의 경우 다음과 같습니다.

chmod -R 755 /directory

그리고 다른 모든 사람들이 그렇듯이 이것을 할 때 조심하십시오.


9

적절한 파일 및 디렉토리가 chmod-ed / permissions인지 확인하려고합니다. 원하는 모든 디렉토리

find /opt/lampp/htdocs -type d -exec chmod 711 {} \;

그리고 모든 이미지, JavaScript, CSS, HTML에 대해서는 실행하지 않아야합니다. 그래서 사용

chmod 644 img/* js/* html/*

그러나 모든 논리 코드 (예 : PHP 코드)에 대해 사용자가 해당 코드를 볼 수 없도록 권한을 설정해야합니다.

chmod 600 file

6

Adam은 /opt/lampp/htdocs디렉토리 에서 작동하는 모든 프로세스의 umask 값을 변경하는 방법을 묻고 있다고 생각합니다 .

사용자 파일 작성 모드 마스크 (umask)는 새로 작성된 파일에 대한 파일 권한을 결정하는 데 사용됩니다. 새 파일에 대한 기본 파일 권한을 제어하는 ​​데 사용할 수 있습니다.

따라서 ftp 프로그램을 사용하여 파일을 업로드 /opt/lampp/htdocs하려면 원하는 umask를 사용하도록 ftp 서버를 구성해야합니다.

PHP로 파일 / 디렉토리를 만들면 PHP 코드를 수정해야합니다

<?php
umask(0022);
// other code
?>

bash 세션에서 새 파일 / 폴더를 만들려면 쉘 프로파일 ~ / .bashrc에서 umask 값을 설정 /etc/bashrc하거나 /etc/profile모든 사용자에 대해 umask를 설정 하거나 파일을 설정할 수 있습니다 . 파일에 다음을 추가하십시오. umask 022

Sample umask Values and File Creation Permissions
If umask value set to   User permission     Group permission     Others permission
000                         all              all                   all
007                         all              all                   none
027                         all          read / execute            none

이미 작성된 파일의 권한을 변경하려면 find를 사용할 수 있습니다. 도움이 되었기를 바랍니다.


4

파일을 찾아서 적용 chmod하는 데에는 두 가지 답변이 있습니다. 첫 번째는 find파일이며 chmod찾은대로 적용 합니다 (@WombleGoneBad에서 제안한대로).

find /opt/lampp/htdocs -type d -exec chmod 755 {} \;

두 번째 해결책은 find명령 으로 모든 파일 목록을 생성 하고이 목록을 chmod명령에 제공하는 것입니다 (@lamgesh에서 제안한대로).

chmod 755 $(find /path/to/base/dir -type d)

이 두 버전은 find명령에 의해 리턴되는 파일 수가 적 으면 잘 작동합니다. 두 번째 솔루션은 첫 번째 솔루션보다 눈에 잘 띄고 읽기 쉽습니다. 많은 수의 파일이 있으면 두 번째 솔루션은 오류를 반환합니다.Argument list too long.

그래서 내 제안은

  1. chmod -R 755 /opt/lampp/htdocs모든 파일 및 디렉토리의 권한을 한 번에 변경 하려면 사용하십시오 .
  2. 사용중인 find /opt/lampp/htdocs -type d -exec chmod 755 {} \;파일 수가 매우 많은 경우 사용하십시오 . 이 -type x옵션은 특정 유형의 파일 만 검색합니다. 여기서 d는 디렉토리를 찾는 데, f는 파일을, l은 링크를 찾는 데 사용됩니다.
  3. chmod 755 $(find /path/to/base/dir -type d)그렇지 않으면 사용
  4. 어떤 상황에서도 첫 번째를 사용하는 것이 좋습니다

2

매우 간단합니다.

터미널에서 파일 관리자로 이동하십시오. 예 : sudo nemo. 이동 /opt/누른 다음 속성 → 권한을 . 그런 다음 Other . 마지막으로, 작성 및 삭제로 변경하고 파일 적용 및 읽기 버튼을 클릭하고 적용하는 작업을 수행하십시오.


sudo nemo 란 무엇입니까?
Vikranth Inti
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.