<![CDATA[Latest posts for the topic "ftp lên Apache web root - gán permission thế nào cho đúng"]]> /hvaonline/posts/list/24.html JForum - http://www.jforum.net ftp lên Apache web root - gán permission thế nào cho đúng /hvaonline/posts/list/39567.html#243429 /hvaonline/posts/list/39567.html#243429 GMT ftp lên Apache web root - gán permission thế nào cho đúng /hvaonline/posts/list/39567.html#243596 /hvaonline/posts/list/39567.html#243596 GMT ftp lên Apache web root - gán permission thế nào cho đúng

phonglanbiec wrote:
Home folder cho các users mình sẽ để: /var/www/html/{user's_domain} Và nếu như để cách mình ở trên thì /var/www/html/domain.com có user là: domain và gán quyền chown /var/www/html/domain.com cho user, group là domain luôn. 
Còn permission thì sao? FTP server bạn chạy dưới quyền của user nào?]]>
/hvaonline/posts/list/39567.html#243597 /hvaonline/posts/list/39567.html#243597 GMT
ftp lên Apache web root - gán permission thế nào cho đúng /hvaonline/posts/list/39567.html#243598 /hvaonline/posts/list/39567.html#243598 GMT ftp lên Apache web root - gán permission thế nào cho đúng

phonglanbiec wrote:
FTP Server mình nghĩ không cần gán cho nó quyền gì đặc biệt nên có thể chạy dưới quyền user nobody. Permission mình nghĩ nên để mặc định cho folder là 755, thông thường là vậy :) 
Vậy những thư mục upload qua FTP thì liệu apache có quyền write không? (hoặc ngược lại đối với những thư mục do Apache tạo ra)]]>
/hvaonline/posts/list/39567.html#243612 /hvaonline/posts/list/39567.html#243612 GMT
ftp lên Apache web root - gán permission thế nào cho đúng /hvaonline/posts/list/39567.html#243614 /hvaonline/posts/list/39567.html#243614 GMT ftp lên Apache web root - gán permission thế nào cho đúng

phonglanbiec wrote:
1. Quyền hạn trong Linux thì chia thành 3 phần: User, Group, Other.  
Chính xác hơn là owner.

phonglanbiec wrote:
Giả sử file A upload qua user U. Thì file A đó xem Apache là thành phần Other. Nếu chmod cho A ở phần Other là write thì Apache vẫn write được. 2. Tương tự với Apache ở phần giải thích trên. 
Vậy tất cả mọi other users đều có quyền write à? Từ "đúng" trong tiêu đề được hiểu là không thừa và cũng không thiếu.]]>
/hvaonline/posts/list/39567.html#243616 /hvaonline/posts/list/39567.html#243616 GMT
ftp lên Apache web root - gán permission thế nào cho đúng /hvaonline/posts/list/39567.html#243617 /hvaonline/posts/list/39567.html#243617 GMT ftp lên Apache web root - gán permission thế nào cho đúng

phonglanbiec wrote:
Nếu chính xác như vậy mình nghĩ cách giải quyết như sau: 1. Users & home folder thì như mình đề xuất.  
Thật ra thì mình cũng chưa hiểu chỗ /var/www/html/{user's_domain}, user's_domain ở đây là gì, có liên quan gì đến /var/www/html/domain.com. FTP users upload lên đó rồi làm sao nữa?

phonglanbiec wrote:
2. Mỗi một user thì có group cùng tên, nhưng trong group đó thì có cả user apache (mình đang suy nghĩ có nên cho ftp chạy user riêng và vào group này không nhỉ ?!)  
Vậy nếu có 100 users thì phải add apache vào 100 groups à?

phonglanbiec wrote:
Mình hơi confuse trong cái chữ "đúng" này. Không biết quanta có đưa ra 1 mô hình chính xác (như cần file abc.php được user nào write, user nào read) thì mình suy nghĩ giải pháp nó chi tiết hơn :) 
Có lẽ bạn chưa đọc kỹ hoặc chưa hiểu cái mô hình mình đặt ra và nói trong post đầu tiên nên mới 'confuse'. Mình nói lại nhé: - website công ty bạn chạy trên Apache, DocumentRoot tại /var/www/html/domain.com - Apache chạy với quyền của user apache và group apache - bạn cần tạo một FTP server để các lập trình viên upload code lên đó. Vậy home folder cho các FTP users này sẽ để thế nào? Có thể mở rộng cho các trường hợp: dùng user hệ thống + xác thực qua PAM, dùng virtual users, ... - FTP server này chạy với quyền của user nobody và group nobody - vậy /var/www/html/domain.com phải có permission thế nào, chown, chgrp ra sao để thoả mãn được nhu cầu đặt ra là:
  • Apache có thể đọc, ghi được các files, folders do FTP users upload FTP users có thể đọc, ghi được các files, folders cho Apache tạo ra và chỉ vậy mà thôi
]]>
/hvaonline/posts/list/39567.html#243619 /hvaonline/posts/list/39567.html#243619 GMT
ftp lên Apache web root - gán permission thế nào cho đúng /hvaonline/posts/list/39567.html#243620 /hvaonline/posts/list/39567.html#243620 GMT ftp lên Apache web root - gán permission thế nào cho đúng

phonglanbiec wrote:
Vậy bây giờ mình suggest lại như sau: Home folder cho mỗi user: /var/www/html/domain.com/{user}/  
Ơ, vậy là mỗi người upload code lên một chỗ khác nhau à?

phonglanbiec wrote:
Giải pháp của mình để giải quyết vấn đề file tạo ra bởi Apache & FTP là: 1. Apache chạy với quyền của user apache và group apache. 2. Mỗi một user thì có group cùng tên, nhưng trong group đó thì có user, apache.  
Nghĩa là bạn dùng user hệ thống (được tạo ra trong /etc/passwd).

phonglanbiec wrote:
3. Để giải quyết vấn đề 100 users thì ta cứ viết 1 script. Hoạt động của script như sau: a. Hỏi tên user cần tạo. b. Tạo user. c. Tạo group. d. Add apache vào user's group. e. chown folder (home directory) user:user's group (user's group ở đây bao gồm user, apache). f. chmod folder: 77x. g. Kết thúc script Như vậy đã thoả mãn điều kiện của quanta,  
Không thấy liên quan gì đến nobody nhỉ? Và như này thì liệu những thư mục mới do Apache tạo ra hoặc FTP user upload sẽ có quyền mặc định là bao nhiêu?

phonglanbiec wrote:
và việc cho phép các users xem nội dung của nhau hay không thì tuỳ vào chữ x của phần 4, mục f.  
Lưu ý là tất cả các lập trình viên này làm việc trong cùng một nhóm, nghĩa là họ cùng thao tác với /var/www/html/domain.com. Không hiểu bạn đặt home folder cho mỗi user vào trong domain.com thì DocumentRoot sẽ thành thế nào.]]>
/hvaonline/posts/list/39567.html#243622 /hvaonline/posts/list/39567.html#243622 GMT
ftp lên Apache web root - gán permission thế nào cho đúng

quanta wrote:
Thật ra thì mình cũng chưa hiểu chỗ /var/www/html/{user's_domain}, user's_domain ở đây là gì, có liên quan gì đến /var/www/html/domain.com. FTP users upload lên đó rồi làm sao nữa?  
1 user có thể có nhiều domain nên đặt theo cú pháp như sau thì mình thấy hợp lý hơn /home/user1/www/domaina.com/public_html /home/user1/www/domainb.com/public_html Theo mình thì nên đưa ftp user và apache user vào 1 group gán ownership của folder /home/user1/www/domaina.com/public_html cho groupabc rồi set quyền read write cho folder đó Code:
# groupadd groupabc
# useradd -G groupabc ftp
# useradd -G groupabc apache
# chown -R :groupabc /home/user1/www/domaina.com/public_html
# chmod -R g+rw /home/user1/www/domaina.com/public_html
]]>
/hvaonline/posts/list/39567.html#243623 /hvaonline/posts/list/39567.html#243623 GMT
ftp lên Apache web root - gán permission thế nào cho đúng /hvaonline/posts/list/39567.html#243624 /hvaonline/posts/list/39567.html#243624 GMT ftp lên Apache web root - gán permission thế nào cho đúng

quanta wrote:
những thư mục mới do Apache tạo ra hoặc FTP user upload sẽ có quyền mặc định là bao nhiêu? 

phonglanbiec wrote:
Nếu tất cả đều làm trong 1 chỗ thì mình nghĩ home folder của tất cả đều trỏ về /var/www/html/domain.com và folder này owner là apache.  
OK. Còn group là gì?

phonglanbiec wrote:
Nobody thì mình thấy không liên quan gì trong đây cả, vì nhiệm vụ của nó chỉ là chạy FTPD thôi, còn quyền khi upload thì là của users.  
Bạn thử làm đi xem nó có liên quan không nhé.

phonglanbiec wrote:
Tóm lại: 1. /var/www/html/domain.com là home folder cho tất cả các users nhưng owner bởi apache. Home folder cho tất cả các users để khi user login vào FTP, FTP chuyển về /var/www/html/domain.com . Quyền hạn của /var/www/html/domain.com là: 775 nhằm đảm bảo tất cả các users đều có quyền read/write trong đây.  
OK.

phonglanbiec wrote:
2. Config lại FTPD để khi user upload lên thì quyền hạn mặc định là: 775  
Còn thư mục do Apache tạo ra thì sao?

phonglanbiec wrote:
3. Nếu đã có nguyên tắc hoạt động thì mình nghĩ việc viết script không khó với quanta :) 
Nói nhỏ là cái này mình làm rồi và đem ra thảo luận. Hơn nữa, mình cũng không ngại viết script gì cả.]]>
/hvaonline/posts/list/39567.html#243625 /hvaonline/posts/list/39567.html#243625 GMT
ftp lên Apache web root - gán permission thế nào cho đúng

quanta wrote:
những thư mục mới do Apache tạo ra hoặc FTP user upload sẽ có quyền mặc định là bao nhiêu?  
Theo mình default permission sẽ set là rwx]]>
/hvaonline/posts/list/39567.html#243626 /hvaonline/posts/list/39567.html#243626 GMT
ftp lên Apache web root - gán permission thế nào cho đúng

mv1098 wrote:
1 user có thể có nhiều domain nên đặt theo cú pháp như sau thì mình thấy hợp lý hơn /home/user1/www/domaina.com/public_html /home/user1/www/domainb.com/public_html  
Sau đó trỏ thế nào về /var/www/html/domain.com nhỉ?

mv1098 wrote:

quanta wrote:
những thư mục mới do Apache tạo ra hoặc FTP user upload sẽ có quyền mặc định là bao nhiêu?  
Theo mình default permission sẽ set là rwx 
Cho owner, group, hay other?]]>
/hvaonline/posts/list/39567.html#243631 /hvaonline/posts/list/39567.html#243631 GMT
ftp lên Apache web root - gán permission thế nào cho đúng

quanta wrote:

phonglanbiec wrote:
Nếu tất cả đều làm trong 1 chỗ thì mình nghĩ home folder của tất cả đều trỏ về /var/www/html/domain.com và folder này owner là apache.  
OK. Còn group là gì?  
Group là apache, chmod /var/www/html/domain.com thành 777

quanta wrote:

phonglanbiec wrote:
Nobody thì mình thấy không liên quan gì trong đây cả, vì nhiệm vụ của nó chỉ là chạy FTPD thôi, còn quyền khi upload thì là của users.  
Bạn thử làm đi xem nó có liên quan không nhé.  
Chỗ này mình còn hơi lúng túng. Vì mình làm thì trước nay FTP mình không care về user chạy nó. Mình chỉ care khi bật anymous lên thôi :)

quanta wrote:

phonglanbiec wrote:
2. Config lại FTPD để khi user upload lên thì quyền hạn mặc định là: 775  
Còn thư mục do Apache tạo ra thì sao?  
Thư mục do Apache tạo thì là 775 luôn. ]]>
/hvaonline/posts/list/39567.html#243634 /hvaonline/posts/list/39567.html#243634 GMT
ftp lên Apache web root - gán permission thế nào cho đúng

phonglanbiec wrote:
Group là apache, chmod /var/www/html/domain.com thành 777  
Ngay từ khi mới làm quen với Linux mình đã nhớ nằm lòng một câu là: đừng bao giờ chmod cái gì thành 777. Bạn thử nghĩ xem lý do là gì?

phonglanbiec wrote:
Chỗ này mình còn hơi lúng túng. Vì mình làm thì trước nay FTP mình không care về user chạy nó. Mình chỉ care khi bật anymous lên thôi :)  
Vậy thử tìm hiểu kỹ lại xem, nhất là khi dùng virtual users.

phonglanbiec wrote:
Thư mục do Apache tạo thì là 775 luôn.  
Thật không vậy? 775 là mặc định tạo ra đã thế hay là phải chmod. Quyền này do cái gì quyết định?]]>
/hvaonline/posts/list/39567.html#243641 /hvaonline/posts/list/39567.html#243641 GMT
ftp lên Apache web root - gán permission thế nào cho đúng

quanta wrote:

phonglanbiec wrote:
Group là apache, chmod /var/www/html/domain.com thành 777  
Ngay từ khi mới làm quen với Linux mình đã nhớ nằm lòng một câu là: đừng bao giờ chmod cái gì thành 777. Bạn thử nghĩ xem lý do là gì?  
Đúng là chmod 777 thì rất nhiều nhược điểm. Nhưng nếu không chmod 777 thì lại không có cách nào làm cho các users khác có quyền write trong đây. quanta có cao kiến gì nếu như giải pháp là của mình nhưng khắc phục được điểm này?

quanta wrote:

phonglanbiec wrote:
Chỗ này mình còn hơi lúng túng. Vì mình làm thì trước nay FTP mình không care về user chạy nó. Mình chỉ care khi bật anymous lên thôi :)  
Vậy thử tìm hiểu kỹ lại xem, nhất là khi dùng virtual users.  
quanta có thể gởi cho mình tài liệu để tìm hiểu kỹ hơn về phần này không?

quanta wrote:

phonglanbiec wrote:
Thư mục do Apache tạo thì là 775 luôn.  
Thật không vậy? 775 là mặc định tạo ra đã thế hay là phải chmod. Quyền này do cái gì quyết định? 
  Phải chmod lại. Vì mặc định Apache gán quyền 644. Mình đang nghĩ đến giải pháp mỗi users một home folder riêng, sau đó tất cả đều hardlink về, không biết được không nhỉ? Mình chưa thử hardlink với FTP bao giờ cả :)]]>
/hvaonline/posts/list/39567.html#243646 /hvaonline/posts/list/39567.html#243646 GMT
ftp lên Apache web root - gán permission thế nào cho đúng

phonglanbiec wrote:
Đúng là chmod 777 thì rất nhiều nhược điểm. Nhưng nếu không chmod 777 thì lại không có cách nào làm cho các users khác có quyền write trong đây. quanta có cao kiến gì nếu như giải pháp là của mình nhưng khắc phục được điểm này?  
Hình như bạn chưa đọc kỹ bài của mv1098 ở post #12.

phonglanbiec wrote:
quanta có thể gởi cho mình tài liệu để tìm hiểu kỹ hơn về phần này không?  
Ngay cả khi với system users, xác thực qua PAM bạn cứ tạo một vài user rồi thử xem có liên quan đến user chạy FTP server không. Còn virtual users thì dùng FTP server nào thì Google cho FTP server ấy.

phonglanbiec wrote:
Phải chmod lại. Vì mặc định Apache gán quyền 644.  
Không, quyền mặc định của thư mục là 755. Làm sao biết khi nào Apache hay FTP users tạo ra một thư mục mới mà chmod, chẳng nhẽ lại dùng inotify cron. Bạn tìm hiểu thêm về umask xem.

phonglanbiec wrote:
Mình đang nghĩ đến giải pháp mỗi users một home folder riêng, sau đó tất cả đều hardlink về, không biết được không nhỉ? Mình chưa thử hardlink với FTP bao giờ cả :) 
mount có tuỳ chọn --bind đấy.]]>
/hvaonline/posts/list/39567.html#243648 /hvaonline/posts/list/39567.html#243648 GMT
ftp lên Apache web root - gán permission thế nào cho đúng

quanta wrote:

phonglanbiec wrote:
Đúng là chmod 777 thì rất nhiều nhược điểm. Nhưng nếu không chmod 777 thì lại không có cách nào làm cho các users khác có quyền write trong đây. quanta có cao kiến gì nếu như giải pháp là của mình nhưng khắc phục được điểm này?  
Hình như bạn chưa đọc kỹ bài của mv1098 ở post #12.  
Đã đọc kỹ, giải pháp của mình ở trên cũng giống như bạn mv1098 mà? nhưng giải pháp đó thì mình không nghĩ cách nào giải quyết được thằng DocumentRoot

quanta wrote:

phonglanbiec wrote:
quanta có thể gởi cho mình tài liệu để tìm hiểu kỹ hơn về phần này không?  
Ngay cả khi với system users, xác thực qua PAM bạn cứ tạo một vài user rồi thử xem có liên quan đến user chạy FTP server không. Còn virtual users thì dùng FTP server nào thì Google cho FTP server ấy.  
Mình sẽ xem lại phần này.

quanta wrote:

phonglanbiec wrote:
Phải chmod lại. Vì mặc định Apache gán quyền 644.  
Không, quyền mặc định của thư mục là 755. Làm sao biết khi nào Apache hay FTP users tạo ra một thư mục mới mà chmod, chẳng nhẽ lại dùng inotify cron. Bạn tìm hiểu thêm về umask xem.  
Trước nay mình chỉ làm umask cho FTP chứ chưa cho Apache nên tìm hiểu lại phần này. Vẫn đang suy nghĩ các giải pháp khác :)]]>
/hvaonline/posts/list/39567.html#243649 /hvaonline/posts/list/39567.html#243649 GMT
ftp lên Apache web root - gán permission thế nào cho đúng

phonglanbiec wrote:
Đã đọc kỹ, giải pháp của mình ở trên cũng giống như bạn mv1098 mà?  
Giống là giống thế nào? Một đằng là add apache và nobody vào chung một group rồi gán quyền write cho group, còn một đằng là add apache vào tất cả các group của FTP users.

phonglanbiec wrote:
nhưng giải pháp đó thì mình không nghĩ cách nào giải quyết được thằng DocumentRoot  
Dùng mount --bind.

phonglanbiec wrote:
Trước nay mình chỉ làm umask cho FTP chứ chưa cho Apache nên tìm hiểu lại phần này.  
Phải gán umask cho cả 2 hoặc dùng SGID.]]>
/hvaonline/posts/list/39567.html#243651 /hvaonline/posts/list/39567.html#243651 GMT
ftp lên Apache web root - gán permission thế nào cho đúng

quanta wrote:

phonglanbiec wrote:
Đã đọc kỹ, giải pháp của mình ở trên cũng giống như bạn mv1098 mà?  
Giống là giống thế nào? Một đằng là add apache và nobody vào chung một group rồi gán quyền write cho group, còn một đằng là add apache vào tất cả các group của FTP users.  
Có thể bạn quanta không hiểu ý mình ở topic mình đã viết ở trên.

phonglanbiec wrote:
2. Mỗi một user thì có group cùng tên, nhưng trong group đó thì có cả user apache  
Chữ user của mình ở đây được hiểu là FTP User. Vậy là giải pháp đã có rồi, mình không biết về mount --bind nên thành ra đi dài dòng.]]>
/hvaonline/posts/list/39567.html#243652 /hvaonline/posts/list/39567.html#243652 GMT
ftp lên Apache web root - gán permission thế nào cho đúng

phonglanbiec wrote:
Có thể bạn quanta không hiểu ý mình ở topic mình đã viết ở trên.  
Bạn nghĩ rằng mình không hiểu ở chỗ nào vậy?

phonglanbiec wrote:

phonglanbiec wrote:
2. Mỗi một user thì có group cùng tên, nhưng trong group đó thì có cả user apache  
Chữ user của mình ở đây được hiểu là FTP User.  
Mình có hiểu thành cái gì khác đâu nhỉ. ]]>
/hvaonline/posts/list/39567.html#243653 /hvaonline/posts/list/39567.html#243653 GMT
ftp lên Apache web root - gán permission thế nào cho đúng /hvaonline/posts/list/39567.html#243654 /hvaonline/posts/list/39567.html#243654 GMT ftp lên Apache web root - gán permission thế nào cho đúng

quanta wrote:

mv1098 wrote:
1 user có thể có nhiều domain nên đặt theo cú pháp như sau thì mình thấy hợp lý hơn /home/user1/www/domaina.com/public_html /home/user1/www/domainb.com/public_html  
Sau đó trỏ thế nào về /var/www/html/domain.com nhỉ?  
Cái này dùng user_dir

quanta wrote:

mv1098 wrote:

quanta wrote:
những thư mục mới do Apache tạo ra hoặc FTP user upload sẽ có quyền mặc định là bao nhiêu?  
Theo mình default permission sẽ set là rwx 
Cho owner, group, hay other? 
set rwx cho owner và group thôi còn other set r-x Nếu sử dụng unmask thì mình sẽ set 002 quanta thấy có ổn không ?]]>
/hvaonline/posts/list/39567.html#243660 /hvaonline/posts/list/39567.html#243660 GMT