
플래시 장치에서 사용자가 지정할 아카이브로 파일을 전송할 수 있는 Bash 쉘 스크립트를 생성하려고 합니다. 하지만 이 사용자가 이 아카이브 디렉터리에 하위 디렉터리를 생성할 수 없도록 제한하고 싶습니다.
메모:그래서 본질적으로 나는 사용자가 생성/지정하는 아카이브 디렉터리가 평면적인 1레벨 구조가 되기를 원합니다.
나는 이것을 달성하는 방법에 대한 첫 번째 단서가 없으며 얻을 수 있는 도움을 주시면 감사하겠습니다.
답변1
이를 쉽게 달성할 수 있는 기본 메커니즘이 없습니다. Linux의 권한 시스템은 디렉터리가 실제로 파일이기 때문에 파일과 디렉터리 생성에 대해 별도의 권한을 지정할 수 없습니다. 하지만 다음과 같이 시도해 보세요.
- 이 목적을 위해 생성된 한 명(또는 소수의 다른) 사용자가 모든 아카이브 디렉토리를 소유하도록 만듭니다. 이름이 archiveuser라고 가정하겠습니다.
모든 아카이브 디렉토리(아마도 많을 것 같습니다)를 이 사용자 in.ex.가 소유하도록 만드십시오.
$ 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
권한으로 인해 명령이 금지됩니다. 따라서 귀하의 목표가 달성되었습니다.