Cách đơn giản nhất để chỉnh sửa và thêm tệp vào tập tin / var / www, là gì?


145

Đã cài đặt máy chủ web, có một cách đơn giản để đặt người dùng có thể sử dụng giao diện đồ họa để sao chép tệp và thư mục vào máy chủ web cục bộ / var / www

Tôi đã cho mình các đặc quyền quản trị trong Ubuntu nhưng nó vẫn không cho phép các bản sao.




Tôi đã cố gắng làm những gì Marcos Roriz Junior nói. Tôi đã sao chép và dán khi Marcos viết và thay đổi tên người dùng thành tên người dùng của tôi. Nhưng tôi không thể lưu nó vào / etc / apache2 / site-Available vì nó không cho phép tôi lưu trong thư mục đó. ???

Câu trả lời:


222

Nếu bạn tạo / var / www có thể ghi theo nhóm của nó và thêm người dùng vào nhóm, người dùng đó sẽ không phải sử dụng sudo. Thử đi:

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

Sau đó, người dùng có thể chỉnh sửa / var / www / tệp mà không gặp rắc rối.

Dòng đầu tiên thêm người dùng vào nhóm dữ liệu www, dòng thứ hai xóa mọi tệp có quyền sở hữu bị rối và dòng thứ ba làm cho nó để tất cả người dùng là thành viên của nhóm dữ liệu www có thể đọc và ghi tất cả các tệp vào / var / www.

Nếu bạn đã đăng nhập vì <username>bạn cần phải đăng xuất và đăng nhập lại để thành viên nhóm có hiệu lực.


37
Tôi làm điều này, cộng với một vài vòng xoắn: 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 đăng xuất và đăng nhập lại để chọn nhóm mới của bạn. Tôi thực hiện chmod g+sđể buộc các tệp và thư mục mới nhận chủ sở hữu nhóm (dữ liệu www), đảm bảo rằng quyền của tôi thay đổi lan truyền.
Don Faulkner

15
@DonFaulkner Vì lý do bảo mật, có lẽ tốt hơn nên giữ /var/wwwquyền sở hữu bởi root: root, vì vậy thay vì sudo chgrp -R www-data /var/wwwtốt hơn sudo chgrp -R www-data /var/www/*.
Desmond Hume

2
Thật kỳ lạ, sau khi chạy 3 lệnh đó, một số thư mục con và tệp của tôi (như composer.jsonLICENSE) được hiển thị bằng biểu tượng nhị phân. Mở composer.jsontrình soạn thảo văn bản sẽ hiển thị một tệp trống và điều tồi tệ nhất là tôi không thể duyệt một số thư mục con, thậm chí tôi đã thử lệnh bổ sung theo đề xuất của @DonFaulkner và vẫn không gặp may. Nếu tôi sử dụng thiết bị đầu cuối như root, mọi thứ sẽ như vậy. Bất cứ ai có bất kỳ ý tưởng tại sao điều này xảy ra?
Alix Axel

5
@itsols bạn phải đăng xuất và sau đó đăng nhập để nó hoạt động.
jini

1
@DonFaulkner - Bạn có phiền khi nói về việc làm thế nào để các tập tin được sở hữu bởi root có thể là một vector tấn công? (Tôi mới đối với tất cả những điều này, và tôi bối rối vì một số người dường như ủng hộ cách tiếp cận nghi ngờ, tận gốc đối với bảo mật, trong khi những người khác kiên quyết nói không tự chủ. )
Andrew Cheong

25

Bạn có thể chown, đó là trả chthù owner của thư mục đó. Điều này sẽ cho phép bạn thay đổi người dùng và nhóm thư mục, cho phép người dùng của bạn thêm / xóa các tệp trên đó. Để làm điều đó, thay thế yourusernamebằng tên của bạn và chạy:

sudo chown yourusername.users /var/www

Và đó là nó.


Tuy nhiên, tôi muốn tạo một virtualhost trong thư mục nhà của mình, điều đó dễ dàng hơn nhiều.

Về cơ bản, nó cho phép bạn sử dụng bất kỳ thư mục nào làm thư mục phục vụ apache. Để cho thấy nó đơn giản như thế nào, hãy giả sử rằng tên người dùng của bạn là tên người dùng và thư mục mà bạn muốn phục vụ là / home / username / www

Tạo tệp sau (ví dụ mywebprojects) trong / etc / apache2 / sistes - có sẵn thay thế tên người dùng và đường dẫn thư mục (về cơ bản chỉ cần sao chép và dán và thay thế trong #CHANGE TẠI ĐÂY):

<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>

Bây giờ, hãy tạo wwwthư mục, thêm một thế giới xin chào đơn giản, vô hiệu hóa trang web mặc định ( /var/www), kích hoạt trang web của chúng tôi mywebprojectsvà khởi động lại apache.

mkdir ~/www 
echo "<html><h1>Hello World</h1></html>" > ~/www/test.html
sudo a2dissite default #
sudo a2ensite mywebprojects
sudo service apache2 restart

Và đó là, bây giờ bạn không cần phải đi /var/www, bạn chỉ cần thêm các tệp vào www(hoặc tên khác) và nó đã ở đó :).


chính xác những gì tôi đã làm. Một điểm cộng cho điều này là bạn có thể thay đổi thư mục thành ổ đĩa chung để tất cả các tệp sẽ có sẵn khi được khởi động trong Windows / OSX.
Jason

9

Cách 1:

  • Nhấn ALT+ F2và nhập gksudo nautilus và sau đó nhấp Run.

    văn bản thay thế

  • Nó sẽ mở nautilus với ưu thế root.
  • Hệ thống tập tin Goto var www và bây giờ bạn có thể thêm / sao chép / dán tập tin của mình.

Cách 2:

  • Cài đặt nautilus-gksu Cài đặt nautilus-gksu
  • Sau khi cài đặt loại nautilus -qtrong thiết bị đầu cuối của bạn để làm mới các menu nhấp chuột phải.
  • Bây giờ bạn sẽ tìm thấy mục 'Mở với tư cách quản trị viên trong menu nhấp chuột phải của bạn.
  • Khi bạn cần mở bất kỳ tệp nào có quyền root, bạn chỉ cần nhấp chuột phải vào tệp / thư mục đó và chọn 'Mở với tư cách Quản trị viên'.
  • Nó sẽ mở tập tin / thư mục đó với quyền root.

    văn bản thay thế


1
Đây chắc chắn là con đường đúng đắn! Tôi tự hỏi tại sao đây không phải là câu trả lời được chọn. Các phương pháp khác liên quan đến việc gây rối với các quyền và tôi sẽ không mạo hiểm hệ thống của mình bằng cách làm như vậy. +1 cho câu trả lời của bạn.
itols

5
@itsols: Tôi hoàn toàn không đồng ý - bạn mạo hiểm hệ thống của mình bằng cách cấp cho Nautilus quyền truy cập root hoàn toàn vào hệ thống tệp của bạn thay vì cấu hình đúng quyền để cho phép truy cập /var/www. Một lần nhấn [delete]phím vô tình và bạn có thể kết thúc với một hệ thống không thể khởi động.
Nathan Osman

@GeorgeEdison Nhưng đây chỉ là để đặt quyền. Và sau khi điều này được thực hiện, chúng tôi đóng nautilus và làm việc như bình thường. Đây thực sự là xấu? Xin lỗi cho sự thiếu hiểu biết của tôi ở đây. Mặc dù là người dùng Ubuntu kể từ phiên bản 5.x, tôi vẫn thấy việc thiết lập một cỗ máy phát triển khá khó khăn và dường như không có cách nào rõ ràng để làm điều đó (đối với tôi, ít nhất là ...
vào

@itsols: Phần thứ hai của câu trả lời này là phương pháp ưa thích và là phương pháp tôi sử dụng.
Nathan Osman

6

Nó có thể đơn giản như sudo usermod -a -G developers $usernamesử dụng ACL.

Điều đó cần một chút công việc, mặc dù, để bắt đầu. Đây là cho Ubuntu 10.10 ít nhất. Đầu tiên gắn kết các hệ thống tệp với tùy chọn acl trong / etc / fstab.

sudo vim /etc/fstab

UUID = xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx / ext4 mặc định, acl 0 1

sudo mount -o remount,acl /

Sau đó tạo một nhóm mà người dùng có thể thuộc về mục đích này.

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

Người dùng cần đăng xuất và đăng nhập lại để trở thành thành viên của nhóm nhà phát triển.

Tất nhiên, không làm điều này nếu bạn có nội dung trong thư mục / var / www mà bạn muốn, mà chỉ để minh họa cho việc thiết lập nó để bắt đầu:

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

Sau đó thay thế các tham chiếu đến "/ var / www" bằng "/ var / www / public" trong tệp cấu hình và tải lại.

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

Nếu chúng tôi muốn hạn chế xóa và đổi tên khỏi tất cả trừ người dùng đã tạo tệp:

sudo chmod +t /var/www/public

Theo cách này, nếu chúng ta muốn tạo các thư mục cho các khung tồn tại bên ngoài gốc tài liệu Apache hoặc có thể tạo các thư mục có thể ghi được trên máy chủ, thì vẫn dễ dàng.

Thư mục nhật ký ghi được Apache:

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

Thư mục thư viện có thể đọc được của Apache:

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

Bạn có thể giải thích những gì với UUID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx-line? Nó có nghĩa là được thêm vào theo nghĩa đen hoặc muốn người dùng tìm dòng và chỉnh sửa các tùy chọn phía sau?
MadMike

Tại sao bạn không bỏ qua sudo rm -rf /var/wwwbước. Nó không thực sự có vẻ cần thiết.
MadMike

@MadMike có nghĩa là được nộp bằng các chữ số thập lục phân. Để tìm hiểu những phân vùng khác nhau của bạn được gắn nhãn, hãy chạysudo blkid
Azendale

1
@Azendale Khi tôi viết bình luận, nó có ý nghĩa như một gợi ý về cách cải thiện câu trả lời. Hôm nay tôi biết tôi nên đề nghị điều này trực tiếp hơn nhiều. Thích: Vui lòng thêm vào cách điền vào UUID=xxxxphần giống như với a sudo blkid.
MadMike

0

Cách dễ nhất để làm là làm theo các bước được đưa ra dưới đây: -

  1. Nhấn Alt+ Ctrl+ Tvà thiết bị đầu cuối sẽ mở và nhập sudo -svà đăng nhập bằng mật khẩu của bạn.
  2. Bây giờ bạn đã đăng nhập như root.
  3. Bây giờ gõ vào nautilusvà nó sẽ mở thư mục nhà cho bạn với quyền root. Vì vậy, bây giờ bạn có thể dễ dàng chỉnh sửa các tập tin và làm bất cứ điều gì bạn muốn.

Hi vọng điêu nay co ich. :)


1
Để có được một vỏ gốc phù hợp để chạy các ứng dụng đồ họa như Nautilus, sudo -itốt hơn là sudo -svì lý do tương tự sudo -Htốt hơn là sudochạy một ứng dụng đồ họa duy nhất. ( sudo -skhông đặt lại HOME, vì vậy người dùng có thể nhận các tệp cấu hình trong thư mục chính của họ, thuộc về chúng nhưng thuộc về root .)
Eliah Kagan

Tôi đặc biệt không khuyến khích sử dụng tài khoản root, đặc biệt là trên các máy chủ. sudo cung cấp nhiều hơn các điều khiển truy cập đầy đủ trong khi cho phép sysadmin thực hiện chính sách thủ công để đảm bảo các nhà phát triển và nhà thiết kế không được trao một khẩu súng ngắn để tự bắn (và các công ty của họ!)
Shayne

0

/var/www folderđược sở hữu bởi root .. bạn phải thay đổi quyền sở hữu thành tên người dùng của riêng bạn để sửa đổi các tập tin trong thư mục này. Đối với điều này, bạn có thể thử các lệnh sau ..

sudo -i // để thay đổi sang bảng điều khiển gốc

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

Bây giờ quyền sở hữu của thư mục /var/www/html willđược gán cho người dùng scott. Bây giờ scott có thể sao chép / di chuyển các tập tin trong thư mục này.


-1

Nếu bạn đang sử dụng phiên bản máy chủ, hãy thử webmin. Nó có một giao diện người dùng web và quản lý tập tin tuyệt vời. Hoặc là hoặc Filezilla


4
Bạn có thể giải thích "Nếu bạn đang sử dụng phiên bản máy chủ"? Bất kỳ gói nào có thể được cài đặt trên Ubuntu Server đều có thể được cài đặt trên phiên bản Ubuntu dành cho máy tính để bàn.
Eliah Kagan
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.