새 파일이 동일한 권한을 상속 받도록 파일 권한을 설정하는 방법은 무엇입니까? [복제]


35

이 질문에는 이미 답변이 있습니다.

스크립트에 의해 새 하위 폴더와 파일이 자동으로 생성되는 폴더가 있습니다.

부모 디렉터리에있는 모든 새 폴더와 파일에 대해 사용자 및 그룹 권한을 반복적으로 유지하려고합니다. 나는 이것이 끈적 끈적한 비트 설정과 관련이 있다는 것을 알고 있지만 필요한 것을 정확하게 보여주는 명령을 찾을 수없는 것 같습니다.

이것이 내가 지금까지 한 일입니다.

sudo mkdir -p /path/to/parent
sudo chmod -R 660 myself:somegroup /path/to/parent

그런 다음에 배치 된 모든 폴더와 파일에 660 권한을 반복적으로 설정하려고합니다 /path/to/parent.

그러나 지금까지 시도한 모든 것이 실패했습니다. 누군가 도와주세요?

실제로 8 진 플래그 (660)는 아마도 정확하지 않을 수도있다. 내가 원하는 권한은 다음과 같습니다.

  1. 아래 /path/to/parent에 배치 된 디렉토리는 권한이있는 사용자가 eXecutable합니다
  2. 파일은 사용자 본인과 일부 그룹 구성원이 읽고 쓸 수 있습니다
  3. 의 파일 및 폴더 /path/to/parent는 세계가 읽을 수 없습니다

우분투 10.0.4 LTS에서 실행 중입니다.

누군가 도와주세요?

답변:


10

Grawity는 훌륭한 답변을 제공하지만 편집 된 질문이 약간 변경되었을 수 있습니다.

아파치 사용자 / 그룹이 소유 한 디렉토리를 남겨 두는 것이 좋습니다. 이것은 아마도 배포판에 따라 아파치 또는 httpd 일 것입니다 .

예 :

chown -R apache:apache /path/to/parent

그런 다음 https://serverfault.com/questions/164078/is-adding-users-to-the-group-www-data-safe-on-debian 과 같은 작업을 수행 하거나 아파치 그룹에 자신을 추가하여 디렉토리에 대한 그룹 액세스 권한이 있습니다. (같은 것 usermod -aG apache username)

내가하고자하지 chmod -R당신이 HTML 스크립트 또는 JPG의 또는 임의의 다른 일을 실행하지 않기 때문에 전체 디렉토리. 필요에 따라 권한을 변경해야합니다. (660으로 재설정하는 것이 최악의 아이디어는 아닙니다.)

시도해보고 싶은 것은 :

chmod o+w file

'o'는 'other'를 의미하고 'w'는 'write'를 의미합니다. 또한 'user'에 대해 'u'와 'group'에 대해 'g'를 가질 수있을뿐만 아니라 자명 한 설명 인 'r'& 'x'도 가질 수 있습니다. '+'대신 '-'를 사용하여 권한을 제거 할 수 있습니다.


내가 생각하는 가장 간단한 해결책은 아파치 사용자 그룹에 자신을 추가하는 것입니다. 제안 해 주셔서 감사합니다. 내가 왜 그렇게 생각하지 않았는지 모르겠어요!
oompahloompah

1
o+w좋은 선택이 여기에? 변경 내용에 국한되어서는 안 u하고 g? 그렇지 않으면 디렉토리와 하위 디렉토리에서 보안을 유지하려는 이유는 무엇입니까?
jww

61

찾고있는 권한 비트는 0770과 0660입니다.

  • rw-권한 → 110이진 → 68 진

다음 과 같이 setgid 비트를 설정하여 / path / to / parent 폴더에 생성 된 새 파일 및 폴더로 그룹 소유권 을 상속 할 수 있습니다 chmod g+s.

chmod g+s /path/to/parent

이제 / path / to / parent에서 생성 된 모든 새 파일과 폴더에는 / path / to / parent에서 설정 한 것과 동일한 그룹이 할당됩니다.


POSIX 파일 권한은 상속 되지 않습니다 . 그것들은 생성 프로세스에 의해 주어지고 현재 umask 값과 결합됩니다.

그러나 POSIX ACL 을 사용 하여이를 수행 할 수 있습니다 . 디렉토리 에서 기본 ACL 을 설정하십시오 .

setfacl -d -m u::rwX,g::rwX,o::- /path/to/parent

이것은 setfacl/ path / to / parent 디렉토리에 -m적용되어 -default ACL (새로 만든 항목에 적용되는 ACL)을 수정합니다. (대문자 X는 디렉토리 만 +x비트를 수신함을 의미합니다 .)

(필요한 경우 ACL에 그룹을 추가 u:someuser:rwX하거나 g:someuser:rwX그룹을 추가 할 수 있습니다 .)


참고 : ext3 / ext4를 사용하는 이전 시스템에서는 acl옵션 을 사용하여 파일 시스템을 마운트해야했습니다 . 그렇지 않으면 모든 ACL을 무시하고 새 ACL을 설정할 수 없습니다.

mount -o remount,acl /

이것을 영구적으로 설정하려면을 사용 tune2fs -o acl <device>하거나 편집하십시오 /etc/fstab.


5
답변 해 주셔서 감사합니다. 불행히도, 나는이 모든 것에 아주 익숙하지 않으며, 당신이 쓴 것은 그리스어와 구별 할 수 없습니다 (그리스어 SO'ers에게는 미안합니다!). 나는 당신이 쓴 대부분을 이해하지 못했습니다. 웹 프로세스가 있고 Apache (소유자)와 I (그룹)만이 파일을 rw하고 디렉토리로 변경할 수있는 상위 폴더에 Apache와 폴더를 작성할 수있는 기능을 Apache에 제공하려고합니다. 다른 사람은 모두 금지되어 있습니다. 그게 내가하려고하는 전부입니다. Apache는 하위 폴더를 생성하고 파일을 저장할 수 있어야합니다.
oompahloompah

이 작동하지 unzip않습니까?
datasn.io

2

문제가 너무 복잡하다고 생각합니다. 다른 사람이 최상위 디렉토리에 액세스 할 수 없으면 다른 사람이 트리 내에서 파일을 작성할 수 없습니다. 아파치 만 쓰기를 수행하는 경우 그룹 쓰기 액세스가 필요하지 않습니다.

이 단계는 원하는 작업을 수행해야합니다 (명령의 디렉토리를 사용하려는 디렉토리로 바꾸십시오).

  • umask 027아파치 기본 스크립트에 추가 합니다 /etc/default/apache. 이렇게하면 다른 사람이 아파치가 만든 파일이나 디렉토리에 액세스하지 못하게됩니다.
  • chown www-data:www-data directory아파치가 쓰기를 원하는 디렉토리에서 실행 하십시오.
  • chmod 750 directory아파치가 쓰기를 원하는 디렉토리에서 실행 하십시오.

아파치가 디렉토리에 쓰도록 허용하면 제공하는 콘텐츠에 모든 종류의 맬웨어를 삽입 할 수 있습니다. 이 디렉토리 트리의 내용을 적절히 모니터하십시오.

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