Làm cách nào tôi có thể cấp quyền truy cập ghi của thư mục cho tất cả người dùng trong linux?


191

Tôi đã cài đặt apache2 trên Ubuntu ngay bây giờ và nhận thấy rằng thư mục / var / www được bảo vệ. Tôi có thể chỉ là sudotất cả mọi thứ nhưng tôi chỉ muốn cung cấp cho nó quyền truy cập viết.

Tôi có thể làm cái này như thế nào?

Tôi đã thử sudo chmod 7777 /var/wwwnhưng nó không hoạt động.


Đây có phải là một máy chủ có thể truy cập công khai, hoặc nó không có kết nối trực tiếp với internet? Nếu trước đây, điều quan trọng là bạn phải xem xét các quyết định bảo mật - các máy chủ trên internet liên tục bị tấn công (hãy xem / var / log / message hoặc tương đương của bạn).
kwutchak

Đây chỉ là máy tính xách tay của tôi, nó không thể truy cập từ internet.
Carson Myers

Câu trả lời:


321

Để chia sẻ tốt nhất với nhiều người dùng có thể viết /var/www, nên chỉ định một nhóm chung. Ví dụ: nhóm mặc định cho nội dung web trên Ubuntu và Debian là www-data. Đảm bảo tất cả người dùng cần quyền truy cập ghi /var/wwwvào nhóm này.

sudo usermod -a -G www-data <some_user>

Sau đó đặt quyền chính xác trên / var / www.

sudo chgrp -R www-data /var/www
sudo chmod -R g+w /var/www

Ngoài ra, bạn nên tạo thư mục và tất cả các thư mục bên dưới nó "đặt GID", để tất cả các tệp và thư mục mới được tạo theo /var/wwwthuộc sở hữu của www-datanhóm.

sudo find /var/www -type d -exec chmod 2775 {} \;    

Tìm tất cả các tệp trong /var/wwwvà thêm quyền đọc và ghi cho chủ sở hữu và nhóm:

sudo find /var/www -type f -exec chmod ug+rw {} \;

Bạn có thể phải đăng xuất và đăng nhập lại để có thể thay đổi nếu bạn chỉnh sửa quyền cho tài khoản của chính mình.


2
điều đó khá tẻ nhạt ... Tôi không thể cấp cho người dùng quyền truy cập vào nó, như thể đó là bất kỳ thư mục nào khác?
Carson Myers

9
Đó cách bạn cung cấp quyền truy cập vào nó. Sao chép và dán các lệnh nhanh hơn so với cố gắng điều hướng qua các hộp thoại của trình quản lý tệp GUI để thực hiện điều tương tự. Về lâu dài, nó sẽ giúp bạn nếu bạn đọc các trang hướng dẫn cho chmod và chgrp, ít nhất là ("man chmod").
jtimberman

có lẽ tôi đã không hiểu các lệnh ngay lần đầu tiên đọc nó và bản chỉnh sửa của bạn làm cho nó rõ ràng hơn nhiều.
Carson Myers

1
+1 cho hướng dẫn để buộc quyền apache. hoạt động tốt với số 027. Nếu có thứ gì đó cần quyền truy cập, nó dễ dàng như chmod g + w dir /
LiraNuna

1
Tại sao lệnh của bạn được phép sudo chmod -R g+wvà không g+rwhay g+rwX?
gièm pha

31

Có một cách đơn giản hơn để làm điều này, hãy thử thực hiện lệnh này.

sudo chmod -R 757 /var/www

Về cơ bản, chmodlệnh thay đổi quyền và -Rchuyển đổi ảnh hưởng đến tất cả người dùng. Sau đó, nó chỉ đơn giản là cung cấp cho các quyền chính xác để sử dụng.


3
Bạn có thể cung cấp một số cái nhìn sâu sắc về những gì lệnh làm cho OP?
n0pe

11
-1 vì thiếu lời giải thích. Bên cạnh đó, chmod $permissions -R $filekhông hợp lệ
Blacklight Shining

1
đó là các tùy chọn sau đó cho phép không theo cách khác
Moataz Elmasry

2
sudo chmod -R 757 /var/www
Bwyss

xin vui lòng ai đó có kinh nghiệm đề nghị một chỉnh sửa với giải thích ngắn gọn về điều này.
Adi Prasetyo

29

Đọc + Viết:

sudo chmod -R a+rw /var/www

Đọc + Viết + Thực thi:

sudo chmod -R a+rwx /var/www

7

Bạn cũng có thể sao chép những gì jtimberman đề xuất bằng cách sử dụng danh sách kiểm soát truy cập . Lệnh setfacl chấp nhận -s để thay thế ACL hoặc -m hiện có để sửa đổi nó; -R để tạo thư mục ACL đệ quy; và -d để đặt các cài đặt đã chỉ định thành mặc định, rất hữu ích nếu bạn dự đoán các tài khoản người dùng sắp tới.

Những thứ này chỉ đặt quyền như bạn muốn cho người dùng, nhóm, người khác và mặt nạ bằng chmod:

setfacl -m u::rwx, g::r-x, o::---, m:rwx DIRECTORY

Và đây có thể là cách bạn làm điều đó cho một người dùng được chỉ định hoặc nhóm của anh ấy / cô ấy:

setfacl -m u:USERNAME:rwx, g:USERNAME:r-x DIRECTORY

Và tất nhiên, điểm mạnh là bạn có thể chỉ định bất kỳ người dùng cụ thể, nhiều người dùng, v.v., tất cả mà không phải sửa đổi cài đặt nhóm của bạn. Và không giống như chmod, nếu bạn muốn một số nhóm có quyền truy cập vào một thư mục và các nhóm khác chỉ có quyền truy cập vào một thư mục khác, thì thực sự có thể với setfacl. Cuối cùng, để xem ACL của thư mục, hãy chạy getfacl :

getfacl DIRECTORY

Và bạn có thể chỉ định -R để xem ACL cho thư mục con hoặc -d để xem mặc định.


2

Câu trả lời nhanh chóng và dễ dàng -

a. Thêm ( -a ) người dùng của bạn ( user_name ) vào dữ liệu www của nhóm ( -G ) .

sudo usermod -a -G www-data user_name

b. Cung cấp cho Nhóm ( g ) quyền tương tự ( = ) như Người dùng sở hữu ( u ) của / var / www đệ quy ( -R ).

sudo chmod -R g=u /var/www

Giải thích: Apache 2 trên Debian / Ubuntu đặt dữ liệu www của Người dùng & Nhóm làm Chủ sở hữu của / var / www . Các quyền mặc định cho Người dùng là "Xem & Sửa đổi Nội dung", tuy nhiên Nhóm chỉ có thể "Xem Nội dung". Vì vậy, việc thêm chính mình vào Nhóm dữ liệu www và cấp cho nó quyền tương tự như Người dùng dữ liệu wwww, là một cách nhanh chóng và dễ dàng để phát triển. Tôi làm điều này cho tất cả các môi trường Phát triển Web localhost (PC / Laptop) của tôi.


1

Tôi đánh máy

chmod g+w /folder/ -R

Nó gần như tự giải thích.

Nó thêm tất cả mọi người trong group of /folder/để có wquyền truy cập nghi thức ( +w), -Rlà để đệ quy cho các thư mục con.


-3

Bạn có thể thử chmod 0777 /var/wwwkhông?

Một lời cảnh báo: nếu bạn cho phép mọi người truy cập thư mục này, điều đó có nghĩa là tin tặc có thể truy cập thư mục này nếu họ có quyền truy cập vào hệ thống của bạn. Đó là lý do tại sao nên tạo một nhóm người dùng được phép và cấp cho nhóm đó quyền truy cập.


Vậy tại sao lại đưa ra điều này như một giải pháp, và sau đó ngay lập tức làm mất uy tín? -1 phiếu bầu
Tisch

-3

Đầu tiên bạn nhập đường dẫn thư mục cụ thể, sau đó sử dụng lệnh này

chmod -R 777 foldername
chown username:username foldername 

7
Wow, thật tệ! Bạn không cung cấp 777 với -R - đặc biệt nếu người đặt câu hỏi là người mới và không hiểu rủi ro.
tái lập

Đúng đủ @recluze.
vgoff
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.