编辑和添加文件到“/var/www”的最简单方法是什么?

k_g*_*ham 160 permissions webserver

安装网络服务器后,有一种简单的方法可以设置用户能够使用图形界面将文件和目录复制到本地网络服务器 /var/www

我在 Ubuntu 中给了自己管理权限,但它仍然不允许复制。

Aze*_*ale 249

如果您使 /var/www 可由其组写入并将用户添加到该组,则该用户将不必使用 sudo。尝试这个:

sudo adduser <username> www-data
sudo chown -R www-data:www-data /var/www
sudo chmod -R g+rwX /var/www
Run Code Online (Sandbox Code Playgroud)

然后用户应该能够轻松编辑 /var/www/ 文件。

第一行将用户添加到 www-data 组,第二行清除所有权混乱的所有文件,第三行使所有属于 www-data 组成员的用户都可以读取和写入其中的所有文件/var/www。

如果您已登录,则<username>需要注销并重新登录以使组成员身份生效。

  • 我这样做,加上一些曲折:`sudo adduser &lt;username&gt; www-data; 须藤 chgrp -R www-data /var/www; 须藤 chmod -R g+rw /var/www; 查找 /var/www -type d -print0 | sudo xargs -0 chmod g+s` 注销并再次登录以获取您的新组。我执行 `chmod g+s` 以强制新文件和目录选择组所有者 (www-data),确保我的权限更改传播。 (38认同)
  • @DonFaulkner 出于安全原因,最好保留 root:root 拥有的 `/var/www`,因此最好是 `sudo chgrp -R www-data /,而不是 `sudo chgrp -R www-data /var/www`变量/www/*`。 (15认同)
  • @itsols 您必须注销然后登录才能工作。 (5认同)
  • 奇怪的是,在运行这 3 个命令后,我的*一些*子文件夹和文件(如 `composer.json` 和 `LICENSE`)使用二进制图标显示。在文本编辑器中打开 `composer.json` 显示一个空白文件,最糟糕的是我也无法浏览某些子文件夹,我什至尝试了@DonFaulkner 建议的附加命令,但仍然没有运气。如果我以 root 身份使用终端,一切都应该如此。任何人都知道为什么会发生这种情况? (2认同)
  • 显然我在人数上处于劣势,因为有 102 人投票赞成这一点,但向 www-user 用户或组添加权限是一个糟糕的主意,并且完全否定了设计到 Web 服务器运行方式中的重要安全功能。www 用户帐户的要点在于它是一个“非特权”帐户;它无法写入修改网站上的任何文件。服务器经过专门设计,以特权帐户启动,然后分叉在非特权帐户 (www-data) 下运行的进程,以遏制服务器进程或 Web 应用程序中的任何攻击或错误。 (2认同)
  • www-data 组无意且不应用于添加常规用户。您应该创建自己的新组,并将用户添加到该组,并授予该组编辑相关文件的权限。保留 www-data 用户和组不变,因为没有逻辑原因需要更改其权限。需要额外权限的是*您的*和您的开发人员,而不是网络服务器。 (2认同)

Mar*_*ior 26

你可以chown,那是那个文件夹chowner。这将允许您更改文件夹的用户和组,允许您的用户添加/删除其中的文件。为此,请替换yourusername为您的姓名并运行:

sudo chown yourusername.users /var/www
Run Code Online (Sandbox Code Playgroud)

就是这样。


但是,我更喜欢在我的主文件夹中创建一个虚拟主机,这要容易得多。

基本上它允许您使用任何文件夹作为 apache 服务文件夹。为了展示它有多简单,让我们假设您的用户名是username并且您要提供服务的文件夹是/home/username/www

mywebprojects在 /etc/apache2/sistes-available 中创建以下文件(例如),替换用户名和文件夹路径(基本上只需复制和粘贴并在 #CHANGE HERE 中替换):

<VirtualHost *:80>
    ServerAdmin webmaster@localhost

    # CHANGE HERE
    DocumentRoot /home/username/www

    <Directory />
        Options FollowSymLinks
        AllowOverride None
    </Directory>

    # CHANGE HERE
    <Directory /home/username/www/>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride None
        Order allow,deny
        allow from all
    </Directory>

    ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
    <Directory "/usr/lib/cgi-bin">
        AllowOverride None
        Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
        Order allow,deny
        Allow from all
    </Directory>

    ErrorLog /var/log/apache2/error.log

    # Possible values include: debug, info, notice, warn, error, crit,
    # alert, emerg.
    LogLevel warn

    CustomLog /var/log/apache2/access.log combined

    Alias /doc/ "/usr/share/doc/"
    <Directory "/usr/share/doc/">
        Options Indexes MultiViews FollowSymLinks
        AllowOverride None
        Order deny,allow
        Deny from all
        Allow from 127.0.0.0/255.0.0.0 ::1/128
    </Directory>

</VirtualHost>
Run Code Online (Sandbox Code Playgroud)

现在让我们创建www文件夹,添加一个简单的 hello world,禁用默认网站 ( /var/www),启用我们的网站mywebprojects并重新启动 apache。

mkdir ~/www 
echo "<html><h1>Hello World</h1></html>" > ~/www/test.html
sudo a2dissite default #
sudo a2ensite mywebprojects
sudo service apache2 restart
Run Code Online (Sandbox Code Playgroud)

而且它,现在你不需要去/var/www,你只需将文件添加到你的www(或其他给定名),它已经存在了:)。


kar*_*k87 9

方法一:

  • ALT+F2并输入 gksudo nautilus,然后单击运行。

    替代文字

  • 它将使用 root 权限打开 nautilus。
  • 转到文件系统无功www,现在您可以添加/复制/粘贴您的文件。

方法二:

  • 安装nautilus-gksu 安装 nautilus-gksu
  • nautilus -q终端中安装类型以刷新右键菜单。
  • 现在,您将在 nautilus 右键单击​​菜单中找到“以管理员身份打开”条目。
  • 当您需要以 root 权限打开任何文件时,您只需右键单击该文件/文件夹并选择“以管理员身份打开”。
  • 它将以 root 权限打开该文件/文件夹。

    替代文字

  • @itsols:我完全不同意 - 您通过授予 Nautilus 对您的文件系统的完全根访问权限而不是正确配置权限以允许访问 `/var/www` 来冒险您的系统。一次意外按下`[delete]` 键,你可能会得到一个无法启动的系统。 (5认同)

小智 6

它可以像sudo usermod -a -G developers $username使用 ACL一样简单。

不过,这需要一些工作才能开始。这至少适用于 Ubuntu 10.10。首先使用 /etc/fstab 中的 acl 选项挂载文件系统。

sudo vim /etc/fstab
Run Code Online (Sandbox Code Playgroud)

UUID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx / ext4 默认值,acl 0 1

sudo mount -o remount,acl /
Run Code Online (Sandbox Code Playgroud)

然后为此目的创建一个用户可能所属的组。

sudo groupadd developers
sudo usermod -a -G developers $username
Run Code Online (Sandbox Code Playgroud)

用户需要注销并再次登录才能成为开发者组的成员。

当然,如果您在 /var/www 目录中有您想要的内容,请不要这样做,只是为了说明设置它以启动:

sudo rm -rf /var/www
sudo mkdir -p /var/www/public
sudo chown -R root:developers /var/www/public
sudo chmod 0775 /var/www/public
sudo chmod g+s /var/www/public
sudo setfacl -d -m u::rwx,g::rwx,o::r-x /var/www/public
Run Code Online (Sandbox Code Playgroud)

然后在配置文件中用“/var/www/public”替换对“/var/www”的引用并重新加载。

sudo vim /etc/apache2/sites-enabled/000-default
sudo /etc/init.d/apache2 reload
Run Code Online (Sandbox Code Playgroud)

如果我们想限制除创建文件的用户之外的所有人的删除和重命名:

sudo chmod +t /var/www/public
Run Code Online (Sandbox Code Playgroud)

这样,如果我们想为存在于 Apache 文档根目录之外的框架创建目录,或者可能创建服务器可写目录,这仍然很容易。

Apache 可写日志目录:

sudo mkdir /var/www/logs
sudo chgrp www-data /var/www/logs
sudo chmod 0770 /var/www/logs
Run Code Online (Sandbox Code Playgroud)

Apache 可读库目录:

sudo mkdir /var/www/lib
sudo chgrp www-data /var/www/logs
sudo chmod 0750 /var/www/logs
Run Code Online (Sandbox Code Playgroud)


归档时间:

查看次数:

312410 次

最近记录:

8 年,8 月 前