저는 현재 약 3명의 루트가 아닌 사용자가 생성된 작은 Ubuntu Server 12.04 시스템(테스트 환경)을 가지고 있습니다. 각 사용자는 자신의 디렉토리 아래에 자신만의 public_html
디렉토리를 갖고 home
있어 명명된 가상 호스트로 여러 애플리케이션을 배포할 수 있습니다. 각 사용자는 Apache www-data
그룹에 속하며 다음과 같이 설정됩니다.
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 폴더를 자동으로 생성하는 bash 스크립트를 만들고 있습니다 public_html
. /etc/apache2/sites-available/
스크립트( run 사용 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
내 질문:
- 내 폴더 구조가 정확하거나 이상적입니까?
- recursive( ) 옵션을 사용한 것을 알고 있지만 , 및 에도 동일한 작업을 반복
-R
해야 합니까 ?$vhost/www
$vhost/logs
$vhost/backups
- 위의 chmod가 중복될 수 있다고 생각하는 것이 맞습니까?
mkdir
사용자로서 명령을 실행할 수 있는 방법이 있습니까$uzer
?
답변1
Q: 내 폴더 구조가 정확하거나 이상적인가요?
답변: 폴더 구조는 좋아 보입니다.
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가 어떤 디렉터리든 생성할 수 있도록 file 명령을 요청할 수 있습니다mkdir
.