사용자가 디렉터리를 만들 수 있지만 하위 디렉터리는 만들 수 없도록 하는 방법

사용자가 디렉터리를 만들 수 있지만 하위 디렉터리는 만들 수 없도록 하는 방법

플래시 장치에서 사용자가 지정한 아카이브로 파일을 전송할 수 있는 Bash 셸 스크립트를 만들려고 합니다. 이 사용자가 이 아카이브 디렉터리 내에 하위 디렉터리를 생성하는 것을 제한하고 싶습니다.

노트:따라서 본질적으로 사용자가 생성/지정한 아카이브 디렉터리가 단일 레벨 구조가 되기를 원합니다.

나는 이것을 달성하는 방법을 전혀 모르고 내가 얻을 수 있는 어떤 도움이라도 정말 감사하겠습니다.

답변1

이를 쉽게 구현할 수 있는 기본 메커니즘이 없습니다. Linux의 권한 시스템은 디렉터리가 실제로 파일이기 때문에 파일과 디렉터리 생성에 대해 별도의 권한을 지정할 수 없습니다. 하지만 다음과 같이 시도해 보세요.

  1. 이 목적을 위해 특별히 생성된 한 명(또는 여러 다른) 사용자가 모든 아카이브 디렉토리를 소유하도록 만드십시오. 이름이 archiveuser라고 가정해 보겠습니다.
  2. 모든 아카이브 디렉터리(아마도 많을 것 같습니다)를 이 사용자가 소유하도록 만드세요. 예를 들면 다음과 같습니다.

    $ chown archiveuser:archiveuser /somedir/archivedir1
    $ chown archiveuser:archiveuser /somedir/archivedir2
    $ chown archiveuser:archiveuser /somedir/archivedir3
    
  3. 아카이브 디렉터리에 대한 액세스를 소유자에게만 제한합니다.

    $ chmod 700 /somedir/archivedir1
    $ chmod 700 /somedir/archivedir2
    $ chmod 700 /somedir/archivedir3
    
  4. sudo다음 메커니즘을 사용하여 cp아카이브 디렉터리에 대한 명령 액세스 권한을 부여합니다 .

    다음에 추가 /etc/sudoers:

    someuser1 ALL=(archiveuser) NOPASSWD:/bin/cp /path/to/pendrive/* /somedir/archiveuser/*
    someuser2 ALL=(archiveuser) NOPASSWD:/bin/cp /path/to/pendrive/* /somedir/archiveuser/*
    

    물론 이 명령을 사용하도록 허용해야 하는 모든 사용자에 대해 적절한 그룹을 만드는 것이 편리합니다. sudo튜토리얼을 읽어보세요 :-).

  5. 그게 다야. 사용자는 다음을 사용해야 합니다.

    $ sudo -u archiveuser cp /path/to/pendrive/somefile /somedir/archiveuser/ 
    

보다 편리하게 사용할 수 있도록 몇 가지 별칭을 만들 수 있습니다(예: alias cpt='sudo -u archiveuser cp'). 또한 cp -r이 경우 디렉토리 복사는 허용되지 않습니다. 명령 sudomkdir권한에 의해 차단됩니다. 이렇게 하면 목표가 달성됩니다.

관련 정보