저는 현재 약 3명의 루트가 아닌 사용자가 생성된 작은 Ubuntu Server 12.04 시스템(테스트 환경)을 가지고 있습니다. 각 사용자는 public_html
자신의 디렉터리 아래에 자신만의 디렉터리가 있으므로 home
이름이 지정된 가상 호스트로 여러 앱을 배포할 수 있습니다. 각 사용자는 www-data
다음과 같이 설정된 Apache 그룹에 속합니다 .
sudo usermod -a -G www-data [username]
sudo chown -R [username]:www-data /home/[username]/public_html
sudo chmod 2750 /home/[username]/public_html
이제 루트 사용자로서 프롬프트된 사용자 아래에서 VirtualHost에 대한 폴더 생성을 자동화 public_html
하고 /etc/apache2/sites-available/
. 스크립트( 로 실행 sudo
)는 사용자( $uzer
)와 원하는 가상 호스트 이름( $vhost
)을 묻는 메시지를 표시합니다. 지금까지 몇 가지 검사를 실행한 후 결국 다음과 같은 결과를 얻었습니다.
mkdir -vp /home/$uzer/public_html/$vhost
mkdir -vp /home/$uzer/public_html/$vhost/www
mkdir -vp /home/$uzer/public_html/$vhost/logs
mkdir -vp /home/$uzer/public_html/$vhost/backups
새로 생성된 폴더의 소유권을 변경해야 하므로 다음을 수행해야 할지 잘 모르겠습니다.
chown -vR $uzer:www-data /home/$uzer/public_html/$vhost
chmod 2750 /home/$uzer/public_html/$vhost
내 질문:
- 내 폴더 구조가 정확하거나 이상적인가요?
- 재귀( ) 옵션을 사용한 것을 알고 있지만 , 및 에
-R
대해 동일한 작업을 반복해야 합니까 ?$vhost/www
$vhost/logs
$vhost/backups
- 위의 chmod가 아마도 중복될 것이라고 생각하는 것이 맞습니까?
mkdir
사용자로서 명령을 실행할 수 있는 방법이 있습니까$uzer
?
답변1
Q: 내 폴더 구조가 정확하거나 이상적인가요?
A: 폴더 구조는 괜찮은 것 같습니다.
Q: 재귀(-R) 옵션을 사용한 것을 알고 있지만 $vhost/www, $vhost/logs 및 $vhost/backups에 대해 동일한 옵션을 반복해야 합니까?
A: 해당 디렉터리에서 실행하는 것은 중복될 것입니다.
Q: 위의 chmod가 중복될 수 있다고 생각하는 것이 맞나요?
예, 기술적으로는 디렉토리를 생성하는 초기 sudo가 '그룹 ID 비트 설정'을 설정하기 때문에 중복되지만 해당 비트(2750의 2) 설정이 보장되지는 않습니다. 사용자가 파일을 디렉토리로 이동했거나 실수로 파일의 그룹을 변경한 경우 이 디렉토리를 본 적이 있으므로 그대로 두겠습니다.
$uzer 사용자로 mkdir 명령을 실행할 수 있는 방법이 있습니까?
root$ su -u $user -c "mkdir ..."
또한 스위치를 사용하여 /www, /log 및 /backups의 chmod에 대한 단계를 저장할 수 있습니다 mkdir --mode=...
.
예를 들어
mkdir -vp --mode=2750 /home/$uzer/public_html/$vhost
mkdir -vp --mode=2750 /home/$uzer/public_html/$vhost/www
mkdir -vp --mode=2750 /home/$uzer/public_html/$vhost/logs
mkdir -vp --mode=2750 /home/$uzer/public_html/$vhost/backups
답변2
- 실제로 어떤 폴더 구조를 사용하고 있는지는 중요하지 않습니다.
- chown에서 옵션을 사용하는 경우
-R
명령을 실행하는 시점에 존재하는 파일 및 디렉터리에만 적용됩니다. chmod
아니요. 수동으로 변경하는 경우 항상 명령을 사용하여 권한을 변경해야 하기 때문입니다 ./etc/sudoers
$user가 명령을 사용하여 디렉터리를 만들 수 있도록 파일에 요청할 수 있습니다mkdir
.