사용자가 다른 사용자의 홈 디렉토리를 읽을 수 있도록 허용


10

시스템 관리가 처음이며 권한 관련 쿼리가 있습니다. 라는 그룹이 administration있습니다. 내부 administration그룹, 나는 사용자가 user1, user2, user3, superuser. 모든 사용자가 administration그룹에 있습니다. 이제 다른 사용자 superuser/home디렉토리 를 볼 수 있는 권한을 사용자에게 부여해야 합니다. 그러나, 나는 싶지 않아 user1, user2, user3자신 이외의 다른 사용자의 홈을 볼 수 있습니다. (즉, 집 등 user1만 볼 수 있어야합니다 user1).

사용자와 그룹을 만들고 모든 사용자를 그룹에 할당했습니다. superuser지금 의 권한을 어떻게 지정해야 합니까?

다시 말해서, 나는 두 그룹을 가지고 있다고 생각 NormalUsers하고 Superuser있습니다. NormalUsers그룹은 사용자가있을 것입니다 user1, user2하고 user3. Superuser그룹은 사용자 만이있을 것이다 Superuser. 이제 Superuser그룹의 사용자 파일에 대한 전체 액세스 권한이 필요합니다 NormalUsers. 리눅스에서 가능합니까?


이것은 이전 질문과 어떻게 다릅니 까?
Gilles 'SO- 악마 그만'

이전 질문에서 / etc / sudoers 파일을 편집하고 사용자를 부분 관리자로 만드는 데 더 관심이있었습니다. 여기서는 로컬 사용자의 권한을 수정하려고합니다. 예, 달성하려는 것과 비슷하지만 다른 방법으로 접근하려고합니다.
Ramesh

답변:


10

사용자가 협력적인 경우 액세스 제어 목록 (ACL)을 사용할 수 있습니다 . 에 user1대한 읽기 권한을 부여 하는 홈 디렉토리 (및 친구) 의 ACL을 설정하십시오 superuser. 새로 작성된 파일 및 기존 파일의 ACL에 대한 기본 ACL도 설정하십시오.

setfacl -R -m user:superuser:rx ~user1
setfacl -d -R -m user:superuser:rx ~user1

user1 원하는 경우 파일에서 ACL을 변경할 수 있습니다.

항상 파일에 superuser대한 읽기 권한을 부여 user1하려면 bindfs를 사용하여 다른 권한으로 사용자의 홈 디렉토리에 대한 다른보기를 작성할 수 있습니다 .

mkdir -p ~superuser/spyglass/user1
chown superuser ~superuser/spyglass
chmod 700 ~superuser/spyglass
bindfs -p a+rX-w ~user1 ~superuser/spyglass/user1

~ superuser / spyglass / user1을 통해 액세스 한 파일은 세계적으로 읽을 수 있습니다. 권한 이외의 의 홈 디렉토리 ~superuser/spyglass/user1보기입니다 user1. 에 superuser액세스 할 수있는 유일한 사용자 이므로이 혜택 ~superuser/spyglasssuperuser누릴 수 있습니다.


내 시스템에서 권한과 사용자 이름이 바뀝니다 : setfacl -R -m user:superuser:rx ~user1.
Aurélien Ooms

10

ACL을 사용하여 특정 디렉토리에 대한 액세스 권한을 임의의 그룹에 부여 할 수 있습니다.

예를 들어,를 실행 setfacl -m g:dba:rwx /home/foo한 경우 dba 그룹의 구성원은 디렉토리를 소유 한 그룹에 관계없이 rwx 권한을 갖습니다.

이 권한을 포함하도록 "기본"ACL (디렉토리 내에 새로 작성된 오브젝트의 ACL)을 설정하려고 할 수도 있습니다.


예. 정확히 똑같습니다. 그러나 LDAP 사용자에게 서버에서 ACL을 부여하는 것이 좋은지 잘 모르겠습니다.
Ramesh

@Ramesh 글쎄, 그들이 시스템의 사용자라면 (nss-ldap, sssd 등을 사용하고 있기 때문에) 왜 그것이 좋지 않은지 잘 모르겠습니다.
derobert

나는 이것을 테스트 베드에서 복제하려고했습니다. 사용자 (예 : foo)로 로그인하면 "권한을 644로 설정해야합니다"라는 경고 메시지가 나타납니다. 경고를 무시할 수 있다고 생각합니다. 그러나 랩 사용자가 자신의 사용자 계정이 손상되었음을 알기를 원하지 않습니다. setfacl 명령에서 rwx를 r로 변경하면 foo의 디렉토리를 볼 수 없습니다.
Ramesh

2
@Ramesh 실제로 디렉토리를 통과하려면 + x가 필요합니다. 디렉토리가 644이어야한다고 말하고있는 것이 확실하지 않습니다. 어리석은 경우 755 이상이어야합니다. 그러나 어느 쪽이든 사용자에게는 ls의 권한 필드에 +가 표시되며 getfacl을 실행하여 비밀이 아닌 것을 볼 수 있습니다.
derobert

좋아, 경고 메시지가 나타났습니다. 사용자의 $ HOME 디렉토리는 사용자가 소유해야하며 다른 사용자가 쓸 수 없어야합니다. setacl 명령에서 쓰기 권한을 제거했는데 경고 메시지가 표시되지 않습니다.
Ramesh

0

불행히도 바닐라 리눅스에서 직접이 작업을 수행 할 수있는 방법은 없습니다.

실행을 허용하려는 허용 가능한 명령 목록이있는 부분 관리자에 대해 sudoers에서 새 그룹을 만들 수 있습니다.

그러나 원하는 것을 정확하게 얻으려면 Apparmor 또는 SELinux를 사용하여 원하는 것을 달성해야합니다. 불행히도 이러한 도구 중 어느 것도 쉽게 설정하고 사용할 수 없으며 예제는 빠른 답변 범위를 벗어납니다.


1
리눅스는 한동안 ACL을 지원했다. ACL을 통해이를 수행 할 수 있습니다.
derobert

네, 방금 그 해결책을 찾아서 답변을 업데이트했습니다. 그러나 서버 및 LDAP 사용자에게도 사용할 수 있는지 여부는 여전히 알 수 없습니다.
Ramesh

@derobert 내가 이해 한 바에 따르면 sudo를 통해 루트 수준의 권한을 부여하는 동시에 ACL을 사용하여 액세스를 제한하는 것은 불가능합니다. 이를 달성하려면 SELinux 또는 다른 MAC을 사용해야합니다.
Swiss

1
나는 OP가 사용자에게 "슈퍼 유저"라고 말할 때, 그것은 루트가 아니라 문자 그대로를 의미한다고 생각합니다.
derobert
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.