유닉스 : 한 사람 만 같은 fs에서 내 폴더를 볼 수있게하려면 어떻게해야합니까?


9

친구의 디렉토리에 액세스하고 싶습니다. 디렉토리가있는 파일 시스템에 액세스 할 수 있습니다. 모든 사용자에게 권한을 설정하고 싶지 않습니다. 한 사람 만 디렉토리를 볼 수 있도록하려면 어떻게해야합니까? 우리 중 누구도 수퍼 유저가 아닙니다.

[BOUNTY CHALLENGE] Ubuntu를 사용한 답글이 없습니다.

1. jamuraa의 접근 방식이 작동하지 않습니다

$ setfacl -m user:friend:rwx classroom.xml 
setfacl: classroom.xml: Operation not supported

2. Nik의 접근 방식이 작동하지 않습니다 : 존재하지 않는 파일에 액세스 할 수 없습니다

3. ba의 접근 방식이 작동하지 않습니다. 루트가 아닌 그룹을 만들 수 없습니다.

4. ToK의 접근 방식이 작동하지 않으면 사용자는 "사용자"와 "필드"의 두 그룹에 속합니다.

chown -R myFriend:users ~/TEST
chown: changing ownership of `/u/myFriend/TEST/you_see_it': Operation not permitted
chown: changing ownership of `/u/myFriend/TEST': Operation not permitted

1
이 답변이 문제를 일으키는 방법에 대해 한 줄짜리 줄을 주면 유용합니다. 다른 옵션을 형성하는 데 더 나은 문제 정의를 줄 것입니다.
nik

nik : 오류 프로파일이 추가되었습니다.

답변:


12

일반적인 UNIX 권한 (사용자, 그룹, 모든 사람) 만 있으면이 작업을 쉽게 수행 할 수 없습니다. 더 이상 디렉토리에 액세스 할 필요가 없으면 디렉토리 소유자를 친구로 변경할 수 있습니다. 일부 Unices에서는 유효하지만 대부분은 그렇지 않습니다.

그러나 Linux에서 ACL을 사용하도록 설정 한 경우 파일의 소유자 인 경우이를 수행 할 수 있습니다. 그냥 명령을 실행 setfacl -m user:friend:rwx filename어디 친구가 친구의 계정 이름과 파일 이름이 파일입니다. 를 실행하여 효과가 있는지 확인할 수 있습니다 . 목록에 getfacl filename트라이어드가 표시되어야 user:friend:rwx합니다. ACL을 사용하도록 설정 한 Linux 시스템이 너무 많지 않았습니다.


파일 시스템이 활성화되어 있다고 가정하면이 문제에 대한 표준 솔루션은 ACL입니다.
Ryan C. Thompson

HHH는 이것이 효과가 없다고 말합니다. 몇 가지 이상한 이유로 ACL이 활성화되지 않은 경우가 아니라고 생각합니다. HHH, 무엇을 제공합니까?
pboin

pboin :이 방법은 작동하지 않으므로 ACL이 활성화되지 않았거나 확실하지 않은 이유 일 수 있습니다.

11

이것은 우리가 학교에서 다시 논의한 것입니다.
대략 이런 식으로갑니다

  1. (라는 디렉토리 만들기 data여기 참조를)
    • 권한을 " chmod 711 data" 로 변경
    • 그룹과 다른 사람들은 x-디렉토리를 입력 할 수있는 권한 만 갖습니다
    • 그들은 디렉토리를 나열 할 수 없습니다
    • 이제 디렉토리를 만듭니다 difficult-name-here(해시 문자열 일 수 있음).
    • 권한을 " chmod a+rx difficult-name-here" 로 변경
    • 이 디렉토리의 내용은 안전하지만 외부 디렉토리는 나열 할 수 없습니다
    • "어려운 이름"을 아는 사람들은이 두 번째 디렉토리로 이동할 수 있습니다
      • " cd path/to/data/difficult-name-here"
      • 다른 사람은 이름을 볼 수없고 디렉토리 내용에 액세스 할 수 없습니다
      • 그러나 root항상 모든 것에 액세스 할 수 있습니다 (여기서는 문제가되지 않습니다)
    • difficult-name-here이 데이터를 제공하려는 사람들과 공유
    • 이 두 번째 디렉토리에 공유 파일 유지

상당히 조잡하지만 유닉스 액세스 제어가 손상되지 않고 이것이 깨질 수 있다면 알고 싶습니다.


에서 코멘트에 업데이트 dmckee,
이것은 우리가 도달 한 결론은 정확하게!
"불분명 한 보안"은 안전이 제한되어 있습니다.

데이터 보호를 설계 할 때는
그 가치를 식별하는 것이 중요합니다.

목표로 삼아야합니다

  • 보안을 깨뜨리는 비용보다
  • 보안 콘텐츠 비용
  • 편집증에 비례하는 요인으로

이 경우 root디렉토리 트리를 공개 액세스로 열거하기로 결정하면
비밀이 사라집니다! 그러나 근본 또는 잠재적 무책임으로부터 보호하고 있습니까?
이 경우 공유 파일에 대해 걱정할 것이 더 많습니다.


질문에서 작동하지 않는 메모에 대해 업데이트하십시오 .
나는 리눅스 초기에 이것을 사용하여 그것이 작동한다는 것을 알았다. '대신
' cannot access non-existant file' 'permissions denied가 표시되면 시퀀스에서 실수했을 가능성이 큽니다. 원하는 것은 다음과 같아야합니다.

 755 711 755 무엇이든-=== 액세스 권한

 BasePath / CoverDir / Obscure / protectedFile.txt
          | | ^^^^^^^^^^^^^^^^^ 없이는 볼 수 없습니다
          | ^^^^^^^ 디렉토리 이름 읽기 권한
          ^^^^^ 공개적으로 친구와 공유했습니다. 불명확 한 디렉토리.
                얻기 쉬운 
                예배 규칙서.
  1. ' CoverDir'access as 'rwx--x--x' 를 설정하면
    그룹 및 기타 사용자는 디렉토리를 입력 할 수 있지만 내용을 읽을 수는 없습니다.
  2. 당신이 모호한 디렉토리 이름을 사용하는 경우 자,
    ' Obscure', 그 안에 및 전체 읽기 액세스 권한을 부여 ' rwxr-xr-x'
    이 이름을 knowning 사람이 그 내용을 나열 할 수 있습니다.
  3. 이 액세스는 ' ls BasePath/CoverDir/Obscure'
    그룹의 사람들과 다른 사람들이 ' ls BasePath/CoverDir' 할 수 없으므로 ' ' 외부에서 수행해야합니다 .

7
"알고 싶은 것처럼 [...] 깨질 수 있다면" 글쎄, 그것은 모호함에 의한 보안의 매우 모범적이고 따라서 깨지기 쉽다. 장기적으로는 의지하지 마십시오. 그래도 깔끔합니다.
dmckee --- 전 운영자 고양이

유닉스 액세스 제어가 안전하게 구현된다면, 이것은 쉐도우 패스워드 데이터베이스 (또는 ssh개인 키) 만큼 안전합니다 .
nik

5

Ryan은 실제로 100 % 정확했습니다. 친구가 자신의 사용자 이름과 관련된 고유 한 그룹을 가지고 있기 때문에 문제가되는 디렉토리의 그룹 소유권을 해당 그룹으로 변경합니다 (대부분 친구의 사용자 이름). 두 사람간에 컨텐츠를 공유 할 수 있으려면 사용자로서 소유권을 보유해야합니다.

chown -R youruser:friendgroup ~/foo/bar

그런 다음 다른 사용자가 원하는 액세스 권한에 따라 디렉토리에 적절한 권한을 지정하십시오.

chmod -R 770 ~/foo/bar

디렉토리와 전체 내용에 대한 전체 rwx 액세스 권한을 부여합니다.

친구 그룹에 다른 사용자가 추가되지 않았다고 가정합니다. 이전에 언급했듯이 시스템은이 할당을하지 않았을 것입니다. 그러나 루트 사용자는 원하는 것을 수행 할 수 있습니다. groups 명령을 사용하여 친구 또는 임의의 사용자가 속한 각 그룹을 볼 수 있습니다. 또한 어떤 이유로 권한이 변경되지 않은 경우 시스템의 각 그룹에 대한 그룹 할당이 포함 된 / etc / group 파일을 볼 수 있어야합니다.


4

나는 당신과 당신의 친구를 위해 새로운 그룹을 만들고 디렉토리에 대한 setgid 비트와 함께 소유자 및 그룹에 대한 폴더 권한을 전체로 설정합니다.

그러나 필요에 따라 그룹을 자동으로 설정하여 새 파일을 변경할 수 있도록 사용자 및 친구의 umask를 변경해야 할 수도 있습니다.

# groupadd bestfriends
# chmod 2770 dir
# chgrp bestfriends dir
# usermod -G bestfriends FRIENDLOGIN

3
여기에는없는 슈퍼 유저 권한이 필요할 수 있습니다.
Keck

1
오, 나는 그 라인을 완전히 놓쳤다. : x 그러면 나는졌다. 최선의 해결책은 아니지만 적어도 파일이 다른 사람에게 전달되는 것처럼 로컬로 메일을 통해 보내는 것이 좋습니다.
gaqzi

2

액세스 제어 목록은이를위한 완벽한 방법입니다.

그러나 (정확하게 기억한다면) 파일 시스템은 / etc / fstab을 통해 ACL로 초기화해야합니다 (예 : "/ dev / sda6 / home ext3 defaults, acl "). 이것은 수퍼 유저 만 할 수있는 작업입니다. ..


2

grsec / selinux와 같은 RBACS가 필요합니다.


이것이 문제인지 확실하지 않으면 인용을 추가 할 수 있습니까?

2

기본적으로 Ubuntu 시스템의 각 사용자에게는 동일한 이름의 관련 그룹이 있습니다. 따라서 친구를 그룹에 추가 한 다음 해당 폴더를로 표시하면 g+rwx설정됩니다. 각 사용자에 대해 그룹을 작성하는 이유로이 사용 사례가 인용되고 있다는 것을 모호하게 기억합니다.


그룹에 사용자를 추가하려면 루트 액세스 권한이 필요하지만 OP는 그렇지 않습니다.
Dave Sherohman


2

이것을 시도하지는 않았지만 암호화 된 사용자 공간 FS가있는 공개 읽을 수있는 디렉토리는 어떻습니까 (예 : encfs). 그런 다음 해당 비밀번호를 친구와 공유 할 수 있으며 다른 사람이 해당 데이터를 사용할 수 없습니다 (자신이 데이터를 가져 와서 오프라인으로 비밀번호 크래커를 실행할 수 있을까요?).


2

Linux에게 파일 권한의 창과 동일한 Finesse를 제공하려면 그룹을 중첩해야합니다. 친구가 원하는 것처럼 폴더에 액세스 할 수있는 하나의 그룹을 만듭니다. 해당 그룹 또는 그가 속한 그룹에 추가하십시오. 예를 들어

/ foo는 공유하려는 폴더입니다. 원하는 폴더 액세스 권한이있는 그룹 FooGroup을 작성하십시오. 이 폴더에 액세스하려는 그룹 및 사용자를이 그룹에 추가하십시오.

각 폴더 나 파일마다 그룹을 만드는 것은 큰 고통이지만 Windows와 같은 수준에서 액세스를 제한하는 가장 좋은 방법입니다.


1

로 디렉토리를 암호화 할 수 gpg있습니다. 그런 다음 nik이 제안한 것과 같은 위치를 난독 처리하십시오.

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