更改用户文件的权限以自动创建 Apache VirtualHost

更改用户文件的权限以自动创建 Apache VirtualHost

我目前有一台小型 Ubuntu Server 12.04 机器(测试环境),创建了大约 3 个非 root 用户。每个用户在其目录下都有自己的public_html目录home,从而允许他们将多个应用程序部署为命名虚拟主机。每个用户都属于Apachewww-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

现在,作为 root 用户,我正在创建一个 bash 脚本,该脚本将在提示用户的情况下自动创建 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

问:我的文件夹结构正确/理想吗?

答:文件夹结构看起来不错。

问:我知道我使用了递归 (-R) 选项,但我是否应该对 $vhost/www、$vhost/logs 和 $vhost/backups 重复相同的操作?

答:在这些目录上运行它是多余的

问:我认为上面的 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

  1. 实际上,您使用的文件夹结构并不重要。
  2. 如果您在 chown 中使用-R选项,它只会影响运行该命令时存在的文件和目录。
  3. chmod不可以,因为如果您手动进行任何更改,您始终必须使用命令来更改权限。
  4. 您可以要求/etc/sudoersfile 允许 $user 使用mkdir命令创建任何目录。

相关内容