디렉토리에 대한 액세스를 제어하는 ​​방법은 무엇입니까?

디렉토리에 대한 액세스를 제어하는 ​​방법은 무엇입니까?

질문에 답하도록 도와주세요. CentOS 7에는 각자 자신의 프로젝트를 가진 많은 사용자가 있는 서버가 있습니다. 일부 사용자에게는 다른 사용자가 작업하는 하위 프로젝트가 있으며 구조는 대략 다음과 같습니다. /home/user1/{project1,project2} 프로젝트 1/2 소유자 user1의 경우: user1/home/user2{project1,project2}

수행하고 싶지만 작동하지 않는 것: user1의 project2와 조용히(rwx) 작동해야 하는 허용된 poduser1이 있지만 해당 사용자의 다른 프로젝트를 사용할 수 없어야 합니다. 사용자를 그룹에 넣는 것은 좋지 않습니다. 모든 것을 얻기에는 권한이 너무 많습니다. ACL을 통해 시도했습니다. 전혀 투박합니다.

답변1

무엇을 요구하시는지 잘 모르겠지만 한 사용자( )가 자신의 홈 디렉터리( ) 에 대한 전체 액세스를 허용하지 않고 특정 하위 디렉터리(예:)를 다른 사용자( )와 공유 user1할 수 있기를 원하는 것 같습니다. . 이를 수행하는 표준 방법은 디렉터리에 대한 프로젝트별 그룹을 만든 다음 ACL(액세스 제어 목록)과 setgid 비트를 사용하여 디렉터리에 있는 파일의 적절한 권한과 소유권을 유지하는 것입니다. 귀하의 경우 다음 명령을 실행할 수 있습니다./home/user1/project1user2/home/user1

groupadd project1

chown -R user1:project1 /home/user1/project1

chmod -R g+s /home/user1/project1

setfacl --default --modify group:project1:rwx /home/user1/project1

setfacl --modify group:project1:rwx /home/user1/project1

그런 다음 필요한 사용자 계정을 project1그룹에 추가할 수 있습니다. 예를 들면 다음과 같습니다.

usermod -a -G project1 user2

아래는 좀 더 자세한 설명입니다.


설명하는 설정 유형을 구성하는 방법을 설명하기 위해 예를 사용해 보겠습니다. 이 모든 명령은 루트로 실행됩니다.

먼저 몇 명의 사용자를 생성해 보겠습니다.

useradd -m user1
useradd -m user2

다음으로 첫 번째 사용자의 홈 디렉터리에 프로젝트 디렉터리를 생성해 보겠습니다.

sudo -u user1 mkdir /home/user1/project1

이제 프로젝트와 연결된 그룹을 생성하고 이를 프로젝트 디렉터리의 그룹 소유자로 설정해 보겠습니다.

groupadd project1
chown -R user1:project1 /home/user1/project1

프로젝트 그룹에 다음 두 사용자를 추가해 보겠습니다.

usermod -a -G project1 user1
usermod -a -G project1 user2

이제 ACL(액세스 제어 목록)을 사용하여 프로젝트 디렉터리의 기본 권한을 설정해 보겠습니다.

setfacl --default --modify group:project1:rwx /home/user1/project1
setfacl --modify group:project1:rwx /home/user1/project1

또한 setgid 비트를 켭니다.

chmod -R g+s /home/user1/project1

이 시점에서는 모든 것이 원활하게 실행되어야 합니다. 프로젝트 디렉터리의 권한을 확인해 보겠습니다.

root@host:~# ls -ld /home/user1/project1/

drwxrwsr-x+ 2 user1 project1 4096 Nov 13 12:20 /home/user1/project1/

root@host:~# getfacl /home/user1/project1

getfacl /home/user1/project1/
getfacl: Removing leading '/' from absolute path names
# file: home/user1/project1/
# owner: user1
# group: project1
# flags: -s-
user::rwx
group::r-x
group:project1:rwx
mask::rwx
other::r-x
default:user::rwx
default:group::r-x
default:group:project1:rwx
default:mask::rwx
default:other::r-x

user2프로젝트 디렉터리에 쓰는 기능을 테스트해 보겠습니다 .

root@host:~# sudo -u user2 touch /home/user1/project1/testing

root@host:~# ls -l /home/user1/project1/testing
-rw-rw-r--+ 1 user2 project1 0 Nov 13 12:20 /home/user1/project1/testing

관련 정보