이 시스템의 사용자는주의해서 umask를 매우 비공개 0077로 설정합니다. 그러나 사용자는 파일이있는 그룹 별 디렉토리를 갖고 싶어합니다. 다른 그룹 구성원간에 명시 적으로 공유하기 위해 복사 할 수 있습니다. 이러한 공유 디렉토리는 여러 개있을 수 있지만 각각은 그룹에 고유합니다.

공유에 사용할 특정 디렉토리에 그룹 고정 비트를 설정하는 것만으로는 충분하지 않습니다. 고정 비트를 설정하면 디렉토리에있는 파일에 대한 그룹 소유권이 정확 해지지 만, 해당 파일에 대한 권한은 종종 파일을 읽거나 편집 할 수 없도록 설정됩니다. 즉, 실제로 공유 할 수 없습니다. 디렉토리 목록에만 나타납니다. 이는 일부 사용자가 읽기 및 쓰기를 허용하기 위해 필요한 그룹 권한 조정을 수동으로 수행하는 방법을 생각하지 않거나 방법을 모르기 때문입니다. 결국 사용자는 관리자가 아니기 때문에 이에 대해 휴식을 취할 수 있습니다. acls 를 사용하면 ACL이없는 그룹 권한에 관계없이 특정 그룹이 공유 디렉토리의 파일에 액세스 할 수 있음을 지정할 수 있습니다. 이것이 완벽한 솔루션이지만 제대로 작동하지 않습니다.

다음에서 공유 그룹은 “customer_gateway”이고 파일 공유를 시도하는 예제 사용자는 “svw”입니다. 기록에서 볼 수 있듯이 svw 사용자는 customer_gateway 그룹의 구성원입니다. 공유가 발생하는 디렉토리는 “customer_gateway /”라고도합니다.

다음은 acls를 사용합니다. 그룹 권한, 기본 그룹 권한, 마스크 및 기본 마스크를 설정합니다. 디렉토리에서 생성 된 파일이나 cat (또는 tar)를 통해 이동 한 파일에 대해서는 잘 작동하지만 이상하게도 “cp”가있는 파일에는 적합하지 않습니다.

# rm -r customer_gateway/ # umask 0077 # cat ~/script1 mkdir customer_gateway chown :customer_gateway customer_gateway/ chmod g+rwx customer_gateway/ setfacl -m group:customer_gateway:rwX customer_gateway/ setfacl -m d:group:customer_gateway:rwX customer_gateway/ setfacl -m m::rwX customer_gateway/ setfacl -m d:m::rwX customer_gateway/ getfacl customer_gateway cd customer_gateway touch cga cat << EOF > cgb c g b EOF ls -l # . ~/script1 # file: customer_gateway # owner: root # group: customer_gateway user::rwx group::rwx group:customer_gateway:rwx mask::rwx other::--- default:user::rwx default:group::rwx default:group:customer_gateway:rwx default:mask::rwx default:other::--- total 4 -rw-rw----+ 1 root root 0 Mar 2 20:43 cga -rw-rw----+ 1 root root 6 Mar 2 20:43 cgb # su - svw /home/svw/bin:/usr/local/bin:/usr/bin:/bin (note umask is 0077) > cd /share/customer_gateway/ > groups svw adm dip video plugdev google-sudoers customer_gateway > cat >> cga e f g > cat > cgc c g c > ls -l total 12 -rw-rw----+ 1 root root 6 Mar 2 20:44 cga -rw-rw----+ 1 root root 6 Mar 2 20:43 cgb -rw-rw----+ 1 svw svw 6 Mar 2 20:44 cgc > ls ~/dat ta tb tc > cat ~/dat/ta > ta > cp ~/dat/tb tb > ls -l total 20 -rw-rw----+ 1 root root 6 Mar 2 20:44 cga -rw-rw----+ 1 root root 6 Mar 2 20:43 cgb -rw-rw----+ 1 svw svw 6 Mar 2 20:44 cgc -rw-rw----+ 1 svw svw 4 Mar 2 20:45 ta -rw-------+ 1 svw svw 4 Mar 2 20:45 tb > getfacl ta # file: ta # owner: svw # group: svw user::rw- group::rwx #effective:rw- group:customer_gateway:rwx #effective:rw- mask::rw- other::--- > getfacl tb # file: tb # owner: svw # group: svw user::rw- group::rwx #effective:--- group:customer_gateway:rwx #effective:--- mask::--- other::--- > 

이것이 보여주는 것은 파일이 디렉토리에 생성 될 때 기본 권한을 받고 공유 가능하다는 것입니다. 하지만 사용자는 항상 거기에서 파일을 생성하는 것은 아닙니다. 일반적으로 거기에서 cp 파일을 생성합니다.

하지만 복사를 수행하려면 먼저 새 파일을 생성해야하기 때문에 복사를 수행하는 것은 동일합니다. 여기에는 권한 보존 사본이 아닌 일반 사본이 있습니다. 다음 형식과 동일합니다. btw는 원래 그룹 권한과 관계없이 디렉토리에서 공유 할 수있는 파일을 작동하고 복사합니다.

cat < data.in > shared/data.out 

잘 작동하고 tar를 통한 파이핑도 작동하지만 양식

cp data.in shared/data.out 

실패합니다. cat ed 파일은 기본 마스크와 기본 사용 권한을 갖습니다. cp ed 파일은 마치 acl 마스크와 그룹 사용 권한의 사용 권한을 그대로 유지합니다. a cp -p (그러나 그것은 아님), 따라서 유효한 권한은 acl이 설정된 것이 아니라 원본 파일처럼 읽습니다.

두 번째 시도로이 실험을 그룹 스티키 비트, chmod g + rwxs, facl ch와 함께 anges, 똑같은 결과를 얻었습니다. 모든 공유 파일에 대해 그룹 소유권이 표시되기 때문에 디렉토리 목록이 더 예쁘지 만. 또한 setfacl없이 그룹 고정 비트 만 설정하여 실행했습니다. 또한 복사 된 파일에 대해서도 동일한 결과를 나타냅니다 (따라서 파일이 공유 될 파일이 복사되는 디렉토리에 대해서는 facl이 상당히 쓸모 없게 보입니다).

리눅스 facl이 다른 형식을 구분하는 근거와 근거는 무엇입니까? 데이터 생성? 왜 이렇게하라는 지시를받지 않았는데도 cp가 권한을 보존하도록 강제하는 이유는 무엇입니까? 타르 작업을 통해 cat과 파이핑 사이의 이러한 구분으로 인한 혼란을 정당화하는 이유는 무엇입니까? cp가 작동하지 않는 이유는 무엇입니까?이 구별을 할 수있는 마법 주문을 놓쳤습니까 evaporate?

이 요약이 맞습니까? facls를 사용하면 소유권을 극복하여 파일을 공유 할 수 있습니다. cp 명령으로 인해 생성되지 않는 한 파일을 “생성”할 때 umask보다 권한이 더 허용됩니다. 왜냐하면 … 이유 때문입니까?

댓글

  • 어떤 운영 체제 (리눅스 배포판 및 버전)와 어떤 파일 시스템을 사용하고 있습니까? 사람들이 cat를 사용하도록해도 괜찮을까요? 아마도이 목적을 위해 전용 쉘 스크립트를 통해 가능합니까?
  • 그룹의 모든 사용자가 수정하거나 삭제할 수 있도록 하시겠습니까? 어떤 파일이든 생성자 만 그러한 권한을 가져야합니까? 즉, o에 대한 읽기 권한 (및 실행 권한) 만 사용자.
  • Debian 10. 파일 생성이 작동하기 때문에 ‘ 타르를 통해 복사본을 파이핑했습니다. ‘ / usr / local / bin에 proj_cp 명령으로 패키지화합니다. 그러나 사용자가 특수 복사 명령을 사용해야하는 경우 facls없이 그룹 고정 비트로 이동하여 권한을 설정할 수 있습니다. cat tar cp가 작동하도록 acls를 설정하는 방법을 알고 싶습니다.저는 ‘ cp 동작 대신 cp -p 동작을 수행하기 때문에 cp에 acl에 문제가 있다고 생각합니다. 저는 ‘ 권한 전문가의 의견을 기다리고 있습니다.
  • 여러분이 지적했듯이 그룹 공유는 변형에서 반복되는 문제입니다. 이 경우 소프트웨어 개발자는 테스트 릴리스 디렉토리에 액세스 할 수 있습니다. 함께 먹어 치우는 것은 그들의 것입니다. 그들은 그 디렉토리에서 작업하고, 가상 환경에서 푸시, 풀, 설치 등을 할 수 있습니다. 문제는 그들이 작업하고있는 다른 영역에서 사물을 복사 할 때 발생하며 그들의 umask가 그룹 권한으로 설정되지 않았습니다. tar에 의한 파일 생성 및 복사가 잘 작동하기 때문에 혼란 스럽습니다. cp가하는 일을하는 복사 스크립트를 그들에게 주어야한다는 것도 재미 있습니다. ‘ acls ‘ 그들은 마법입니다. 저는 LOL이라고 말합니다.
  • 저는 권한 전문가는 아니지만 제 질문이 귀하의 답변은 전문가가 관련 답변을 제공하는 데 도움이 될 수 있습니다.

답변

디렉토리를 만드는이 사실은 사용자가 들어갈 수있는 것은 매우 간단하고 쉽게 할 수 있습니다.

  • 먼저이 디렉토리를 만들 적절한 위치를 찾아야합니다. 액세스 할 수있는 디렉토리 아래에 만드는 것이 좋습니다. 모두에게 (현재로서는). sudo mkdir 명령을 사용하여 새 디렉터리를 만듭니다.

  • 두 번째로 그룹을 만들어야합니다. 그룹은 Linux 시스템의 특정 부분을 제한하거나 액세스하기 위해 반올림 한 사용자 모음입니다. 다음과 같은 내용을 나열하는 ls -l 명령을 입력 할 때 그룹을 보았을 것입니다.

rwxrwxrwx 3 루트 관리자 4736 Oct 24 12:32 File1.doc

root 라는 부분이 소유자이고 ** admins **는 파일을 소유 한 그룹입니다. 그룹을 사용하면 특정 사용자가 파일을 쉽게 볼 수 있습니다. 그룹 유형을 “sudo groupadd으로 만들려면이 그룹이 디렉토리에 사용됩니다.

  • 그룹이 만들어지면 디렉토리에 액세스 할 사용자를 여기에 추가 할 수 있습니다. 다음 명령을 사용하여 sudo adduser 사용자를 추가 할 수 있습니다. 사용자가 그룹에 속해 있는지 확인할 수 있습니다.

이 작업이 완료되면 생성 한 디렉토리로 이동하여 그룹 권한을 7 (rwx)로 설정하십시오.이를 기본 설정에 맞게 조정할 수 있지만 7은 그룹의 사용자에게 전체 권한을 부여합니다. 디렉토리에 “sudo chmod 770″을 입력하여이 작업을 수행 할 수 있습니다.

다음으로 디렉토리의 그룹 소유권을 변경해야합니다. 그러면 디렉토리의 그룹 소유자가 만든 그룹이됩니다. 다음 명령을 사용하여 “sudo chown -R : groupname.

이 작업이 모두 완료되면 이제 그룹에 원하는 사람을 추가 할 수 있으며 해당 사용자는 파일을 복사하고 공유 할 수 있습니다. ey는 디렉토리에 액세스하기 위해 특정 그룹에 있습니다. 이 정보가 도움이 되었으면 알려주세요 !!!!!!

댓글

  • 감사합니다. 원래 게시물을 명확히하여 제가 왜 그렇게하지 않았는지 설명했습니다. ‘이 수동 접근 방식을 사용하지 마십시오.

답변

I 모든 ACL을 제거하고 사용자 및 그룹 권한 만 사용합니다. 그런 다음 모든 사람이 액세스 할 수있는 폴더를 chmod 777 한 다음 액세스를 테스트합니다.

그런 다음 chmod 770 폴더 테스트 액세스를 다시 시도하십시오.

이 작업이 수행되면 한 번에 하나씩 acl을 다시 추가하십시오.

실행 권한이 필요하지 않은 경우 chmod 660 폴더 이름을 사용하여 rw *, rx *, ***로 더 낮출 수 있습니다.

acl “및 chmod 777 권한이없는 기간을 기억하십시오. 폴더는 모든 사람에게 열려 있으므로 그렇게 두지 마십시오.

댓글

  • 모든 사람이 아니라 특정 그룹의 사람입니다. 디렉토리에 그룹 고정 비트를 설정할 수 있습니다. 문제는 사용자가 디렉토리에 파일을 넣고 그룹이 정확하지만 그룹 액세스를 설정하는 것을 ‘ 모르거나 잊어 버린다는 것입니다. acls를 사용하여 특정 그룹이 그룹 권한과 관계없이 파일에 액세스 할 수 있도록 지정할 수 있습니다. 그것은 완벽한 대답입니다. 문제는 acl에 마스크가 있고 cp가 사용자 umask와 일치하도록 acl 마스크를 지워서 유효 권한으로 인해 파일을 읽을 수 없다는 것입니다.

답변

해보았습니다. 그룹 권한이 ACL의 마스크이기 때문에 umask가 그룹 권한을 방해하는 것 같습니다. 모든 그룹과 ACL을 차단합니다.

해결 방법은 umask를 덜 제한적으로 만드는 것입니다.이 작업을 안전하게 수행하려면 각 사용자에 대한 그룹을 추가하고이 그룹을 기본 그룹으로 만들어야합니다. ( 모든 사용자가 자신의 그룹을 갖는 이유는 무엇입니까? 참조).

아직 다른 umask에 대한 사례가 있기 때문에 이상적이지 않습니다. (g = rx 및 g = rwx). 이 전략을 사용하면 그룹 권한이 필요하지 않습니다.

댓글

  • 예, 그렇게했습니다. 대신 사용자 마스크를 007로 설정했습니다. 해결 방법으로 077의. 하지만 ´ 완벽하지는 않습니다. 많은 파일이 여전히 권한이 적고 복사되기 때문입니다. 여기서 배우고 싶었던 것은 cp가 이런 방식으로 작동하는 이유였습니다. 나에게 이것은 cp -p 동작이어야합니다. 나는 여기 누군가가 그것을 설명 할 수 있기를 바랐다.

답변

지금까지의 모든 답변은 그룹 디렉토리를 통한 파일 공유를 처리합니다. Non가 주요 질문에 답한 것 같습니다. cp a bcp -p a b가 지정된 것처럼 작동하는 이유는 무엇입니까? 맨 페이지 는 그것에 대해 설명하지 않지만 texinfo 에 세부 사항이 있습니다. info coreutils "cp invocation"는 다음을 표시합니다.

 ‘-p’ ‘--preserve[=ATTRIBUTE_LIST]’ Preserve the specified attributes of the original files. ... ... In the absence of this option, the permissions of existing destination files are unchanged. Each new file is created with the <=== mode of the corresponding source file minus the set-user-ID, <=== set-group-ID, and sticky bits as the create mode; the operating system then applies either the umask or a default ACL, possibly resulting in a more restrictive file mode. ... 

따라서 대상이 존재하면 내용이 교체되지만 모드 비트는 변경되지 않았습니다. 대상이 존재하지 않으면 모드 비트가 소스에서 복사됩니다.

답글 남기기

이메일 주소를 발행하지 않을 것입니다. 필수 항목은 *(으)로 표시합니다