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

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

评论

相关:askubuntu.com/questions/45496/…

相关(更安全):在/ var / www中工作时如何避免使用sudo?

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

#1 楼

如果使/ 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>登录,则需要注销并重新登录,以使组成员身份生效。

评论


我这样做,外加一些曲折:sudo adduser <用户名> 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),确保传播权限更改。

–唐·福克纳
2012年4月4日在2:54



@DonFaulkner出于安全原因,最好将/ var / www保留为root:root,因此最好使用sudo chgrp -R www-data / var / www / *代替sudo chgrp -R www-data / var / www 。

–德斯蒙德·休姆(Desmond Hume)
2012年11月12日14:42

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

– Alix Axel
13年1月23日在4:35

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

– Jini
2013年3月13日19:16

@DonFaulkner-您能否详细说明由根拥有的文件可能是一种攻击媒介? (我对这一切还是陌生的,我感到困惑,因为有些人似乎主张对安全性采取怀疑时,逐根的方法,而另一些人则坚决表示不逐根。 )

–张德安
2014年4月30日,下午3:08

#2 楼

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

sudo chown yourusername.users /var/www


就这样。


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

基本上,您可以将任何文件夹用作apache服务文件夹。为了说明它的简单性,假设您的用户名是username,并且要提供的文件夹是/ home / username / www

在/ etc中创建以下文件(例如mywebprojects) / apache2 / sistes-可用于替换用户名和文件夹路径(基本上只需在#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中启动时所有文件都可用。

–詹森
2011年1月5日14:05

@jason感谢您的评论,这也是我想要做的。我正在学习Ubuntu,但是如果我在* ngix中遇到问题,我希望能够使用Windows来减慢开发速度。

– HPWD
20 May 17 '21:18

我做错了什么,或者我使用的Ubuntu版本要求不同。

– HPWD
20 May 17 '21:36

#3 楼

方法1:



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



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

方法2:


安装nautilus-gksu

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

它将打开该文件/文件夹。具有root权限。





评论


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

–itsols
2012年6月11日15:13

@itsols:我完全不同意-您将Nautilus授予对文件系统的完全根访问权限,而不是正确配置允许访问/ var / www的权限,可能会冒着系统风险。意外按下[delete]键,可能会导致系统无法启动。

–内森·奥斯曼(Nathan Osman)
2012年10月12日,0:43

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

–itsols
2012年10月15日上午11:36

@itsols:此答案的第二部分是首选方法,也是我使用的方法。

–内森·奥斯曼(Nathan Osman)
2012年10月15日18:00

#4 楼

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

开始需要一些工作。至少适用于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
13-10-15在7:34



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

–MadMike
13-10-15在7:38

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

–阿岑代尔
14-10-11在6:41

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

–MadMike
14-10-12在21:08

#5 楼

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


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

希望有帮助。 :)

评论


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

– Eliah Kagan
2014年9月13日下午3:14

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

– Shayne
17年8月10日在8:01



#6 楼

/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可以复制/移动该文件夹中的文件。

#7 楼

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

评论


您能否解释“如果使用服务器版本”?可以在Ubuntu Server上安装的任何软件包都可以安装在Ubuntu的桌面版本上。

– Eliah Kagan
2012年8月24日,0:45