기본 그룹 파일 공유 구성

기본 그룹 파일 공유 구성

사용자가 3명이에요,두번째그리고"관리자" 그룹 내. 다른 사용자가 있습니다''홈 디렉토리에 project폴더가 있습니다. 나는 이미 했어폴더의 소유자가 되고 그룹으로 "admin"을 지정하십시오 chgrp. 그룹과 소유자는 모든 권한을 갖고 있지만 여전히,두번째또는폴더에 접근할 수 없습니다. 두 가지 질문이 있습니다.

  1. 다른 사용자가 다른 사용자의 디렉터리에 있는 모든 항목에 액세스할 수 있는지 여부

  2. 그룹에 권한을 부여하면 해당 그룹의 사용자에게 사용자의 홈 디렉터리 외부에 있는 파일에 대한 액세스 권한만 부여됩니까?

편집하다: 프로젝트의 소유자와 그룹을 설정하는 방법입니다.

sudo chown -R D project
sudo chgrp -R admin project

project폴더에 들어가려고 할 때 오류가 발생합니다 .홈 디렉토리(로그인 시)

cd /home/D/project
-bash: cd: /home/D/project: Permission denied

다음은 명령의 출력입니다 ls -la.

drwxrwsr-x 7 D admin      4096 Nov 18 13:06 project

다음은 그룹에 대한 설명입니다 admin.

getent group admin
admin_users:x:501:A,B,C

또한 사용자로부터 들어가면 그룹이 admin나열되지 않습니다.groups, 그러나 그것을 사용할 때 그것은 보입니다 cut -d: -f1 /etc/group. 제가 언급한 사용자는ec2-user실제로는 (Amazon 서버의 기본 Fedora 사용자) 입니다 .

결국 서버에 git 저장소를 설정했습니다. 저장소를 만들었습니다.홈 디렉토리이지만 원합니다,두번째그리고액세스(및 복제)도 가능합니다.

답변1

  1. 예, 사용자는 다른 사용자의 홈 디렉터리에 있는 파일에 액세스할 수 있습니다.
  2. 아니요, 시스템 파일 권한 이외의 홈 디렉터리에 대해서는 특별한 처리가 없습니다. "그룹에 권한 부여"에는 그룹 소유권 부여와 그룹 권한 설정의 두 부분이 포함됩니다. 귀하의 예에는 소유권만 포함됩니다.

설정할 수 있습니다권한chmod명령을 사용하면 재귀적으로 작동하지만 그것만으로는 그룹의 한 구성원이 만든 새 파일에 다른 구성원이 액세스할 수 있다는 보장이 없습니다.

지금까지 수행한 작업을 자세히 설명하고 git저장소 공유 목표를 명시해 주셔서 감사합니다.

먼저 Unix와 Linux에서 그룹 파일 공유가 어떻게 보편적으로 수행되는지 살펴보고 그 내용을 살펴보겠습니다 git.

기본 그룹 파일 공유 구성

Unix, GNU 등에서 이러한 유형의 파일 공유에 대한 몇 가지 기본 사항은 다음과 같습니다. 이는 그룹의 모든 구성원이 그룹의 다른 사용자가 만든 파일에 대한 읽기 및 쓰기 권한을 갖는 하나 이상의 디렉터리를 설정하는 간단한 방법입니다.

공용 사용자 그룹이 이라고 가정하면 gitusers디렉토리는 입니다 repo.

  1. 공유 멤버를 공개 그룹에 추가합니다(예 gitusers: ).

  2. umask 002그룹의 모든 사용자에 대해 설정합니다. 즉, 기본적으로 대부분의 파일이 그룹 쓰기 가능으로 생성됩니다. 이는 다양한 쉘 시작 파일(예 /etc/bash.bashrc: )에서 설정할 수 있습니다. GNU/Linux 시스템의 경우 및 더 많은 정보를 보려면 man 8 pam_umask및 를 참조하세요.man umask

  3. -R모든 공유 파일에 대해 그룹 소유권을 반복적으로 설정합니다( ).

    chgrp -R gitusers repo
    
  4. 모든 파일에 대해 그룹 읽기 및 쓰기 권한을 반복적으로 설정합니다.

    chmod -R g+rw repo
    
  5. ( ) repo 및 모든 하위 디렉토리를 설정합니다 set group id on execution bit. 이 디렉터리에 새로 생성된 파일과 하위 디렉터리가 상위 디렉터리와 동일한 그룹 소유권을 상속함 setgid을 나타냅니다 . setgid새 하위 디렉터리에도 setgid재귀 효과를 얻기 위해 비트가 설정되어 있습니다.

    find repo -type d -exec chmod g+s {} \;
    

gitusers위 단계를 완료한 후에는 예제에서 동일한 그룹에 있는 모든 사용자가 서로의 파일을 읽고 쓸 수 있도록 허용하는 동시에 gitusers공유 그룹에 속하지 않은 사용자에게는 쓰기 액세스를 거부 할 수 있어야 합니다 . . 뿐만 아니라 원하는 공유 목적을 위해 원하는 만큼 많은 디렉터리에 을 복사 chown하고 명령을 내릴 수 있습니다.chmodfindgit

공유 git저장소

git위의 구성 변경만으로 제대로 작동하는 것 같습니다 . 그러나 git공유 및 그룹 권한도 이해해야 합니다(실제로 위의 작업 중 일부를 수행할 수도 있음).

공유 저장소를 생성하는 경우 git다음 옵션을 고려하십시오.

git init --bare --shared=group  repo

기존 저장소가 있는 경우 다음 설정을 고려하십시오.

  1. 핵심 누드
  2. core.sharedRepository=그룹

보다git-init매뉴얼 페이지그리고매뉴얼 git-config페이지자세한 내용은.

노트

베어 그룹 공유 git저장소는 일반 예제와 동일한 단계 중 일부를 따르지만 일관성을 보장하고 다른 공유 디렉터리 설정의 용이성을 보장하기 위해 일반 예제의 단계도 따르는 것이 좋습니다.

답변2

일부 사항은 필요한 것 같지만(나는 이러한 문제에 대한 전문가가 아니라는 점을 자유롭게 인정하지만) RobertL의 훌륭할 정도로 철저한 답변에서는 다루지 않습니다.

  1. 다른 사용자가 실제로 그룹에 로그인되어 있는지 확인하십시오 admin.

A$ newgrp admin

사용자가 이미 그룹에 속해 있으므로아니요그룹 비밀번호를 설정해야 합니다. 이렇게 하면:

A$ sudo chgpasswd
admin:secret (표준 입력으로 입력)

  1. 확실하게 하다님의 홈디렉토리는 그룹에 속해 있으며 admin, 그룹검색이 가능합니다.

D$ chgrp admin ~
D$ chmod g+x ~
D$ ls -lad ~
drwx--x--- 3 D admin 4096 Nov 24 19:25 /home/D

사용자가 디렉터리나 해당 하위 디렉터리에 들어갈 수 있도록 디렉터리는 검색 가능해야 합니다 project. 그룹을 만들 필요가 없습니다읽을 수 있는, 그래서자신의 파일 이름은 비공개로 유지됩니다. 다른 사용자가 쉽게 액세스할 수 있도록 하려면 project심볼릭 링크를 생성해야 합니다. 그렇지 않으면 매번 전체 경로를 입력해야 합니다(셸이 경로 이름을 읽을 수 없기 때문에 자동 완성은 작동하지 않습니다. ) .

관련 정보