하위 디렉터리를 생성하지 않고 사용자가 디렉터리를 생성하도록 하는 방법

하위 디렉터리를 생성하지 않고 사용자가 디렉터리를 생성하도록 하는 방법

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

메모:그래서 본질적으로 나는 사용자가 생성/지정하는 아카이브 디렉터리가 평면적인 1레벨 구조가 되기를 원합니다.

나는 이것을 달성하는 방법에 대한 첫 번째 단서가 없으며 얻을 수 있는 도움을 주시면 감사하겠습니다.

답변1

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

  1. 이 목적을 위해 생성된 한 명(또는 소수의 다른) 사용자가 모든 아카이브 디렉토리를 소유하도록 만듭니다. 이름이 archiveuser라고 가정하겠습니다.
  2. 모든 아카이브 디렉토리(아마도 많을 것 같습니다)를 이 사용자 in.ex.가 소유하도록 만드십시오.

    $ 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디렉토리를 복사하는 데 필요한 작업은 허용되지 않습니다 . sudo또한 mkdir권한으로 인해 명령이 금지됩니다. 따라서 귀하의 목표가 달성되었습니다.

관련 정보