플래시 장치에서 사용자가 지정한 아카이브로 파일을 전송할 수 있는 Bash 셸 스크립트를 만들려고 합니다. 이 사용자가 이 아카이브 디렉터리 내에 하위 디렉터리를 생성하는 것을 제한하고 싶습니다.
노트:따라서 본질적으로 사용자가 생성/지정한 아카이브 디렉터리가 단일 레벨 구조가 되기를 원합니다.
나는 이것을 달성하는 방법을 전혀 모르고 내가 얻을 수 있는 어떤 도움이라도 정말 감사하겠습니다.
답변1
이를 쉽게 구현할 수 있는 기본 메커니즘이 없습니다. Linux의 권한 시스템은 디렉터리가 실제로 파일이기 때문에 파일과 디렉터리 생성에 대해 별도의 권한을 지정할 수 없습니다. 하지만 다음과 같이 시도해 보세요.
- 이 목적을 위해 특별히 생성된 한 명(또는 여러 다른) 사용자가 모든 아카이브 디렉토리를 소유하도록 만드십시오. 이름이 archiveuser라고 가정해 보겠습니다.
모든 아카이브 디렉터리(아마도 많을 것 같습니다)를 이 사용자가 소유하도록 만드세요. 예를 들면 다음과 같습니다.
$ chown archiveuser:archiveuser /somedir/archivedir1 $ chown archiveuser:archiveuser /somedir/archivedir2 $ chown archiveuser:archiveuser /somedir/archivedir3
아카이브 디렉터리에 대한 액세스를 소유자에게만 제한합니다.
$ chmod 700 /somedir/archivedir1 $ chmod 700 /somedir/archivedir2 $ chmod 700 /somedir/archivedir3
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
튜토리얼을 읽어보세요 :-).그게 다야. 사용자는 다음을 사용해야 합니다.
$ sudo -u archiveuser cp /path/to/pendrive/somefile /somedir/archiveuser/
보다 편리하게 사용할 수 있도록 몇 가지 별칭을 만들 수 있습니다(예: alias cpt='sudo -u archiveuser cp'
). 또한 cp -r
이 경우 디렉토리 복사는 허용되지 않습니다. 명령 sudo
도 mkdir
권한에 의해 차단됩니다. 이렇게 하면 목표가 달성됩니다.