파일과 디렉토리의 권한을 재귀 적으로 변경하려면 어떻게해야합니까?


65

아파치 / PHP / mysql을 사용하여 로컬 컴퓨터에 우분투를 설치했습니다.

나는 / var / www에 디렉토리를 가지고 있는데, 그 안에는 진행중인 프로젝트가 여러 개 있습니다. 나는 또한 오픈 소스 (drupal, magento, sugarcrm)로 작업합니다.

내가 겪고있는 문제는 터미널로 파일 권한을 변경하는 것입니다. 때로는 전체 폴더와 그 이후의 하위 폴더 및 파일의 권한을 변경해야합니다. 사용하여 개별적으로 변경해야합니다

sudo chmod 777 foldername

이 작업을 재귀 적으로 수행하려면 어떻게해야합니까?

또한 왜 항상 777 을해야합니까? 폴더 는 755 , 파일은 644 를 시도했지만 작동하지 않습니다.

답변:


90

-R파일의 권한을 재귀 적으로 변경 하는 옵션을 추가하십시오 . 예를 들어 다음에 소유자 및 그룹에 대한 읽기 및 쓰기 권한을 반복적으로 추가합니다 foldername.

chmod -R ug+rw foldername

권한은 664 또는 775와 같습니다.

권한을 777로 설정 하지 않는 것이 좋습니다 . Apache가 사용자와 다른 사용자 ( www-data) 에서 실행되기 때문에 권한에 관한 Apache 또는 편집기에서 오류가 발생 합니다.

에 쓰려면 그룹 /var/www에 자신을 추가 www-data하고 그에 따라 umask + permissions를 설정하십시오.

  • www-data그룹에 자신을 추가하십시오 .sudo adduser $USER www-data
  • 다음에서 파일의 소유권을 변경하십시오 /var/www.sudo chown -R www-data:www-data /var/www
  • umask를 변경하면 Apache에서 새로 작성된 파일에 그룹에 대한 쓰기 권한도 부여됩니다. 추가 umask 007/etc/apache2/envvars.
  • 자신에게 (기술적으로는 그룹 www-data) 쓰기 권한을 부여하십시오 sudo chmod -R g+w /var/www.

예, 잘못된 위치에 r 플래그를 추가하고 있었고 chmod의 o + w 뒤에 추가했습니다.
JohnMerlino

또한 chmod -r blablabla(-R 대신 작은 -r) 을 사용하려고하면 모든 사람에 대한 읽기 권한이 제거 될 수 있습니다.
Cyril Duchon-Doris

1
이 지침 후에 .htaccess는 아파치에 대한 쓰기 권한이있는 파일 이 없는지 확인하는 것이 좋습니다 . find /var/www/ | grep .htaccess | xargs ls -l.
reynoldsnlp

23

무차별 :

sudo find foldername -exec chmod a+rwx {} ";"

작동하지 않는 것은 무엇입니까? 더 구체적으로!

sudo find foldername -type d -exec chmod 755 {} ";"
sudo find foldername -type f -exec chmod 644 {} ";"

폴더 안에있을 때 "foldername"을 제거
Enrique

4
...로 교체하십시오.
djjeck

4

아무것도 777이 필요하지 않습니다. 최악의 경우, 특정 파일 및 디렉토리의 소유자를 "www-data"사용자로 변경해야합니다.

sudo find /var/www -type d -print0 | xargs -0 chmod 755
sudo find /var/www -type f -print0 | xargs -0 chmod 644
sudo find /var/www/some/subset -print0 | xargs -0 chown www-data:www-data

Lekensteyn의 그룹 멤버쉽 방법을 사용하는 경우 위의 755를 각각 775로, 644를 664로 변경 한 다음 그룹 고정을 강제하십시오.

sudo find /var/www/some/subset -type d -print0 | xargs -0 chmod g+s

3

노틸러스에서 하위 폴더와 파일을 변경할 수 있습니다. 아래 이미지에서 볼 수 있듯이. 버튼에 권한을 부여하기 위해 Ubuntu Tweak에서 옵션을 활성화 할 수 있습니다.

여기에 이미지 설명을 입력하십시오


LANG=C [command]영어 번역을하는 데 사용 합니다.
Lekensteyn

1

모든 파일을 전세계에서 읽을 수있게하려면 (즉, 정적 HTML 파일 / 이미지 세트 일뿐)이 명령을 사용하십시오.

chmod -R a+r <base directory>

그것은 모든 파일과 하위 디렉토리를 재귀 적으로 살펴보고 그들에게 읽기 권한을 추가합니다.

경고 : 실행 가능한 파일에 대해서는이 작업을 수행하지 마십시오! 모든 사람이 볼 수있는 파일 만.


" chmod -R a+x아무것도하지 않는다"또는 " chmod -R a+r실행 파일을 하지 않는다 "는 말입니까?
aleclarson

나는 그것을 고쳤다. 후자는 사실이다. 다른 사람이 자신이 만든 실행 파일에 액세스 할 수 있도록주의하십시오.
Ryan Shillington
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.