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


145

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

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




我试着做马科斯·罗里斯·少年(Marcos Roriz Junior)所说的话。当Marcos将用户名更改为我的用户名时,我进行了复制和粘贴。但是我无法将其保存到/ etc / apache2 / sites-available中,因为它不允许我保存在该文件夹中。???

Answers:


222

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

sudo adduser <username> www-data
sudo chown -R www-data:www-data /var/www
sudo chmod -R g+rwX /var/www

然后,用户应该可以轻松编辑/ var / www /文件。

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

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


37
我这样做,还有一些曲折:sudo adduser <username> www-data; sudo chgrp -R www-data /var/www; sudo chmod -R g+rw /var/www; find /var/www -type d -print0 | sudo xargs -0 chmod g+s 注销并再次登录以选择新的群组。我这样做是chmod g+s为了强制新文件和目录选择组所有者(www-data),并确保传播我的权限更改。
Don Faulkner

15
@DonFaulkner出于安全原因,最好保留/var/wwwroot:root的所有权,所以最好不要保留sudo chgrp -R www-data /var/wwwsudo chgrp -R www-data /var/www/*
Desmond Hume

2
奇怪的是,在运行这三个命令之后,我的一些子文件夹和文件(如composer.jsonLICENSE)使用二进制图标显示。composer.json在文本编辑器中打开会显示一个空白文件,最糟糕的是我也无法浏览某些子文件夹,我什至尝试了@DonFaulkner建议的其他命令,但还是没有运气。如果我使用终端作为root用户,一切都应该是正确的。任何人都知道为什么会这样吗?
Alix Axel

5
@itsols,您必须先注销然后再登录才能运行。
jini

1
@DonFaulkner-您介意让root拥有文件如何成为攻击媒介吗?(我对这一切还是陌生的,我感到困惑,因为有些人似乎主张对安全性采取不确定性,逐个拥有的方法,而另一些人则坚决表示不要逐个拥有。 )
Andrew Cheong 2014年

25

您可以chown,即该文件夹chowner。这将允许您更改文件夹的用户和组,从而允许用户在其上添加/删除文件。为此,请替换yourusername为您的名字并运行:

sudo chown yourusername.users /var/www

就是这样。


但是,我倾向于在主文件夹中创建一个虚拟主机,这要容易得多。

基本上,它允许您将任何文件夹用作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>

现在,我们创建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

而且,现在您不需要转到/var/www,只需将文件添加到您的www(或其他赠名)中,并且它已经存在:)。


正是我所做的。这样做的一个好处是您可以将目录更改为共享驱动器,以便在Windows / OSX中启动时所有文件都可用。
杰森

9

方法1:

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

    替代文字

  • 它将以根特权打开nautilus。
  • 转到文件系统变种 www,现在您可以添加/复制/粘贴文件。

方法2:

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

    替代文字


1
这绝对是正确的方法!我想知道为什么这不是选定的答案。其他方法涉及弄乱权限,这样做不会冒我的系统风险。+1为您的答案。
itsols 2012年

5
@itsols:我完全不同意-您可能会授予Nautilus对您的文件系统完全的root访问权限,而不是正确配置允许访问的权限,从而冒着系统风险/var/www。一次意外按下该[delete]键,您可能会得到无法启动的系统。
内森·奥斯曼

@GeorgeEdison但这只是为了设置权限。完成此操作后,我们关闭鹦鹉螺并照常工作。这真的那么糟糕吗?请原谅我的无知。尽管从5.x版本开始是Ubuntu用户,但我仍然发现设置开发机器非常具有挑战性,而且似乎没有明确的方法(至少对我而言……
itsols 2012年

@itsols:此答案的第二部分是首选方法,也是我使用的方法。
内森·奥斯曼

6

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

但是,这需要一点工作。至少适用于Ubuntu 10.10。首先使用/ etc / fstab中的acl选项挂载文件系统。

sudo vim /etc/fstab

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

sudo mount -o remount,acl /

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

sudo groupadd developers
sudo usermod -a -G developers $username

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

当然,如果您要在/ 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

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

sudo vim /etc/apache2/sites-enabled/000-default
sudo /etc/init.d/apache2 reload

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

sudo chmod +t /var/www/public

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

Apache可写的日志目录:

sudo mkdir /var/www/logs
sudo chgrp www-data /var/www/logs
sudo chmod 0770 /var/www/logs

Apache可读的库目录:

sudo mkdir /var/www/lib
sudo chgrp www-data /var/www/logs
sudo chmod 0750 /var/www/logs

您能解释一下UUID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx-line发生了什么吗?它是按字面意思添加还是希望用户找到该行并编辑后面的选项?
MadMike

为什么不跳过sudo rm -rf /var/www-step。看来似乎没有必要。
MadMike

@MadMike它应使用十六进制数字归档。要找出您的各个分区被标记了什么,请运行sudo blkid
Azendale 2014年

1
@Azendale当我写评论时,它是对如何改善答案的建议。今天我知道我应该更直接地建议这一点。像:请添加如何用-填充- UUID=xxxx部分sudo blkid
MadMike 2014年

0

最简单的方法是按照以下步骤操作:

  1. Alt+ Ctrl+ T,终端将打开并输入sudo -s您的密码并登录。
  2. 现在,您以身份登录root
  3. 现在输入,nautilus它将以root身份为您打开主文件夹。因此,现在您可以轻松地编辑文件并执行所需的任何操作。

希望这可以帮助。:)


1
为了获得适合运行诸如Nautilus之类的图形应用程序的root shell sudo -isudo -s出于相同的原因,sudo -H它比sudo运行单个图形应用程序更可取。(sudo -s不重置HOME,因此用户可能会在其主目录中获得应该属于它们但属于根目录的配置文件。)
Eliah Kagan 2014年

我强烈建议不要使用root帐户,尤其是在服务器上。sudo提供了足够的访问控制,同时允许系统管理员制定政策以确保开发人员和设计人员不会被手枪开枪射击自己的(及其公司!)
Shayne

0

/var/www folder由根拥有。.您必须将所有权更改为您自己的用户名,才能修改此文件夹中的文件。为此,您可以尝试以下命令。

sudo -i //更改为根控制台

sudo chown -R <username> <path> // for eg. sudo chown -R scott /var/www/html (scott is the username, -R indicates recrusive)

现在,将文件夹的所有权/var/www/html will分配给用户scott。现在,scott可以复制/移动该文件夹中的文件。


-1

如果您使用的是服务器版本,请尝试使用webmin。它具有出色的Web UI和文件管理器。要么Filezilla


4
您能否解释“如果使用服务器版本”?任何可以安装在Ubuntu Server上的软件包都可以安装在桌面版Ubuntu上。
伊利亚·卡根
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.