특정 디렉토리 내에서 생성 된 파일에 대한 그룹 및 권한을 어떻게 강제합니까?


27

/ var / www 디렉토리 의 testuser 계정에서 작성된 파일의 경우 g + rwx 가 권한으로, www-data 가 그룹으로 필요합니다.

어떻게하면 되나요?

SSH를 통해 파일을 만들고 있습니다.


1
사용자는 어떻게 파일을 작성합니까? FTP를 통해 stor/ appe? HTTP를 통해 PUT? 쉘 계정을 통해? 이러한 세부 사항은 가능한 답변에 크게 영향을 미치며 귀하의 질문에 포함되어야하기 때문에 중요합니다.
JdeBP

입력 주셔서 감사합니다 :), SSH를 통해 모든 것을 만들고 있습니다.
Mr.Gando

답변:


53

그룹을 설정하려면 줄 setgid를 비트 :/var/www

chgrp www-data /var/www
chmod g+s /var/www

서브 디렉토리도 조정하려면 다음을 수행하십시오. find /var/www -type d -exec chmod g+s {} +

이렇게하면 새로 작성된 모든 파일이 사용자 대신 상위 디렉토리의 그룹을 상속합니다.


기본 그룹 권한을 설정하려면 ACL 을 사용해야 합니다. "기본"ACL을 설정하십시오.

setfacl -m "default:group::rwx" /var/www

서브 디렉토리도 조정하려면 다음을 수행하십시오. find /var/www -type d -exec setfacl -m d:g::rwx {} +

참고 : 파일 시스템에는 ACL 지원이 사용 가능해야합니다. 때로는 기본적으로 켜져 있습니다. 에 EXT3 또는 ext4에 가 수동으로 활성화해야하는 경우에 당신은 "작업을 지원하지 않습니다"얻을 수 있습니다 :

  • 현재 마운트 된 파일 시스템의 경우 : mount -o remount,acl /

  • 영구적으로 – 아래 방법 중 하나 :

    • fstab에 수준 : 편집 /etc/fstab해야하는 acl옵션 필드에

    • 파일 시스템 수준에서 : tune2fs -o acl /dev/diskname


chmod -R g + s / var / www로 하위 디렉토리를 얻을 수 없습니까? find 명령이 필요한 것 같지 않습니다.
bobpaul

4
@bobpaul : 아니요 chmod. 모든 파일도 가져 오기 때문 입니다.
grawity

특히 일부 명령은 install디렉토리 기본 ACL을 무시하도록 관리합니다.
Ulrich Schwarz

@ grawity 이것은 정말 좋은 대답이며 내 문제에 대한 해결책이 있다고 확신하지만 해결할 수는 없습니다. 나는이 /var/www/html/projects폴더를 www가 데이터 파일을 생성 할 때 그것은이 rw-rw-r권한을하지만 콘솔에서 일을 할 때와 파일을 만듭니다 rw-r--r. 새로 만든 파일에 항상 rw-rw-r권한을 부여하려면 어떻게 해야 합니까?
lewis4u

@ lewis4u : 전역 또는 디렉토리별로? 전역 (프로세스 별) 기본 권한은에 의해 제어됩니다 umask. 디렉토리 별 기본 권한은 setfacl기본 게시물과 같이 변경할 수 있습니다.
grawity

3

폴더 그룹이 자신의 그룹과 다르면 chmod를 루트로 실행해야하지만이 작업을 수행해야한다는 오류는 발생하지 않습니다.

$ ls -ld dir
drwxrwxr-x 2 luke testgroup 4096 Mar  9 10:44 dir

$ chmod g+s dir                                    #no errors

$ ls -ld dir
drwxrwxr-x 2 luke testgroup 4096 Mar  9 10:44 dir  #but nothing changed

$ touch dir/nosudo && ls -l dir/
-rw-rw-r-- 1 luke luke 0 Mar  9 10:51 nosudo       #and the group is still wrong


$ sudo chmod g+s dir

$ ls -ld dir
drwxrwsr-x 2 luke testgroup 4096 Mar  9 10:44 dir  #the setgid bit is now on

$ touch dir/withsudo && ls -l dir/
-rw-rw-r-- 1 luke luke      0 Mar  9 10:51 nosudo
-rw-rw-r-- 1 luke testgroup 0 Mar  9 10:51 withsudo #and group is set

나는 이것을 가로 질러 가기 전에 머리를 잡아 당겼다. 감사.
AndrewStevens 2018 년

0

사용자가 생성 한 파일 그룹은 해당 사용자의 그룹입니다 (/ etc / group에 있음). 권한은 매개 변수에 의해 제어된다 UMASK 를 확인

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