ต้อง chown เสมอเมื่อเพิ่มไฟล์ใหม่? Centos 6


2

เมื่อใดก็ตามที่ฉันอัปโหลดไฟล์ใหม่ไปยังเซิร์ฟเวอร์ของฉันฉันต้องchown -R apache:apache /dirเพื่อให้สามารถเข้าถึงได้

มีวิธีที่ง่ายกว่านี้ไหม?


นี่เป็นเซิร์ฟเวอร์ของคุณหรือไม่ ถ้าอย่างนั้นเราต้องรู้ว่าคุณใช้ ftp-server ใด ในทุกเซิร์ฟเวอร์ ftp คุณสามารถเปลี่ยนการกำหนดค่าเพื่อให้ไฟล์ที่อัปโหลดได้รับผู้ใช้ที่เหมาะสม: กลุ่มและสิทธิ์ นอกจากนี้ยังเป็นไปได้ที่จะทำงานกับการอนุญาตที่สืบทอดมาจากไดเรกทอรีหลักหรือกับ ACL (Access Control List) แต่การตั้งค่าใน ftp-server ทำได้ง่ายกว่ามาก
Rik

หากคุณไม่ได้ FTP ไปยังเซิร์ฟเวอร์ของคุณในฐานะผู้ใช้apache:apacheแล้วคุณต้องทำสิ่งนี้ไม่ว่าจะด้วยตนเองหรือผ่านทางไคลเอนต์ FTP / การกำหนดค่าเซิร์ฟเวอร์
Jobbo

@Jobbo ฉันจะอัปโหลดในฐานะผู้ใช้ apache ได้อย่างไร: apache?
เทรวิส

@Travis คุณสามารถลงชื่อเข้าใช้ ftp ด้วยชื่อผู้ใช้apache(ถ้าคุณมีรหัสผ่าน) มิฉะนั้นคุณต้องเปลี่ยนการกำหนดค่าของ ftp-server ของคุณ นี่เป็นเซิร์ฟเวอร์ของคุณหรือไม่ และ daemon เซิร์ฟเวอร์ใดที่คุณใช้อยู่ VSFTPD หรืออย่างอื่น?
Rik

@Rik ฉันใช้ vsftpd นี่เป็นเซิร์ฟเวอร์ของฉันด้วย ฉันเข้าใช้งานรูทแล้วและได้อัปโหลดทุกสิ่งในรูท
เทรวิส

คำตอบ:


2

apacheส่วนใหญ่สิ่งที่จำเป็นจริงสำหรับไฟล์ที่จะสามารถเข้าถึงได้คือการที่กลุ่มของพวกเขาถูกตั้งค่าให้ คุณสามารถตั้งค่าได้อย่างง่ายดายโดยค่าเริ่มต้นสำหรับไฟล์ที่สร้างใหม่โดยการเรียกใช้:

find /path/to/root/directory/of/website -type d -print0 | xargs -0 chmod g+s

นี่จะเป็นการตั้งค่าsetgidสถานะในทุกไดเรกทอรีย่อยด้วย ด้วยการตั้งค่าสถานะนี้ไฟล์ใหม่ใด ๆ ที่สร้างขึ้นในนั้นจะสืบทอดกลุ่มของไดเรกทอรีหลัก ( -print0และ-0ตัวเลือกได้รับการออกแบบมาเพื่อจัดการช่องว่างในชื่อไฟล์อย่างถูกต้อง)

ตรวจสอบให้แน่ใจว่าเจ้าของไฟล์ถูกต้องก่อนเรียกใช้ หากไม่แน่ใจคุณสามารถแก้ไขได้ด้วยวิธีเดียวกัน:

find /path/to/root/directory/of/website -print0 | xargs -0 chown apache:apache

แล้วเขาสร้างไดเรกทอรีใหม่ด้วยโปรแกรม ftp
Rik

พวกเขาควรสืบทอดเช่นกันตราบใดที่ ftp-program ไม่เปลี่ยนกลุ่มอย่างชัดเจน
Levans

ใช่มันใช้งานได้ดี ฉันคิดว่าฉันสับสนกับ "ผู้ใช้" - ส่วนหนึ่ง ไม่สามารถสืบทอดได้หากไม่ใช้ ACL แต่สำหรับกลุ่มที่setgidทำงานได้ดี (+1) หากโปรแกรม ftp ตั้งค่ากลุ่ม ... ดี ... ก็ไม่มีอะไรที่ต้องทำอีกแล้วเปลี่ยนการตั้งค่า ฉันเพิ่งทดสอบกับ VSFTPD และใช้งานได้ (กลุ่มไม่ได้ถูกตั้งค่าเป็นกลุ่มที่กำหนดไว้ใน vsftpd.conf แต่นำมาจากไดเรกทอรีหลัก)
Rik

@Levans เมื่อฉันเรียกใช้คำสั่งนั้นฉันจะออก 'find /var/www/travisingram.net/public_html -type d | xargs chmod g + s 'และการอนุญาตไม่ได้รับผลกระทบ อีกวิธีหนึ่งที่ฉันรู้ว่ามันไม่เปลี่ยนแปลงอยู่ใน WordPress ทุกครั้งที่ฉันอัปเดต / ติดตั้งปลั๊กอินมันจะต้องใช้ FTP หรือ SFTP ตอนนี้ถ้ามันถูก apache ด้วย: apache ฉันไม่ควรเห็นมัน ฉันทำคำสั่งไม่ถูกต้องหรือไม่? ฉันใช้ vsftpd
Travis

@Travis คุณใช้คำสั่งนี้มีสิทธิ์เพียงพอ (ในฐานะrootผู้ใช้) หรือไม่ เมื่อแสดงการอนุญาตของไฟล์ (ด้วยls -l) คุณควรเห็นการSแทนที่xกลุ่ม for สำหรับสิทธิ์ในไดเรกทอรี
Levans

0

นี่คือสิ่งที่คุณสามารถทำได้กับ VSFTPD:

คุณสามารถตั้งค่า 2 ตัวเลือกต่อไปนี้ในตัวคุณvsftpd.conf:

guest_enable=YES
guest_username=apache

guest_enableหากเปิดใช้งานทำให้แน่ใจว่าทุกapacheไฟล์จะถูกอัปโหลดเป็นผู้ใช้ / กลุ่ม

โปรดทราบว่านี่จะใช้งานได้กับไฟล์ที่อัพโหลดผ่าน FTP เท่านั้น หากคุณคัดลอกไฟล์ในลินุกซ์ตัวเองไปยังไดเรกทอรี www ของคุณนี้จะไม่ปรับสิทธิ์


นั่นเป็นเหตุผลที่ถ้าคุณยังเข้าถึงไดเรกทอรีที่ผ่านระบบแฟ้มที่ดีที่สุดคือการใช้chmod g+s-method Levans ปัญหา
(IE)

find /var/www/site/public_html -print0 | xargs -0 chown apache:apache
find /var/www/site/public_html -type d -print0 | xargs -0 chmod g+s

guest_enable
หากเปิดใช้งานการเข้าสู่ระบบที่ไม่ระบุชื่อทั้งหมดจะถูกจัดประเภทเป็นการเข้าสู่ระบบ "แขก" ล็อกอินผู้เยี่ยมชมจะถูกแมปกับผู้ใช้ที่ระบุในการตั้งค่า guest_username

เริ่มต้น: ไม่

guest_username
ดูการตั้งค่าบูลีน guest_enable สำหรับคำอธิบายว่าอะไรคือการเข้าสู่ระบบของแขก การตั้งค่านี้เป็นชื่อผู้ใช้จริงที่ผู้ใช้ทั่วไปจะถูกแมป

เริ่มต้น: ftp


apache จะมีรหัสผ่านเดียวกับรูทหรือไม่ คาดเดาไม่ได้ตัดสินใจออกไปก่อนที่ฉันจะถาม ดังนั้นจึงไม่มีรหัสผ่านเปิดใช้งานทั่วไป? Sorta สับสนที่นี่
เทรวิส

คุณไม่ควรใช้รูทเพื่อเข้าสู่ระบบ ftp มีการตั้งค่าชื่อผู้ใช้ ftp สำหรับมัน แต่มันไม่สำคัญว่าผู้ใช้ที่คุณลงชื่อเข้าใช้ (คุณสามารถตั้งค่าผู้ใช้ ftp ในการกำหนดค่าได้) คุณต้องแจ้งให้โปรแกรม ftp เขียนไฟล์apache:apacheเนื่องจากเว็บเซิร์ฟเวอร์ของคุณต้องการการเข้าถึง (. แม้ว่า Apache ผู้ใช้ไม่สามารถเข้าถึงรหัสผ่าน ftp / ไฟล์ยังสามารถเขียนได้กับผู้ใช้ว่าตราบใดที่ vsftpd กำหนดให้กับผู้ใช้ที่นั่นเป็นที่เส้นเหล่านี้มีการ)
ริก

และถ้าคุณเปิดใช้งานโดยไม่ระบุชื่อใคร ๆ ก็สามารถเข้าสู่ระบบได้โดยไม่มีรหัสผ่าน หากปิดใช้งานอยู่คุณสามารถเข้าสู่ระบบด้วยผู้ใช้ที่คุณเปิดใช้งานการเข้าถึงสำหรับ ftp ซึ่งอาจมาจาก Linux มาตรฐานที่ใช้กับ login.txt แบบเรียบง่ายที่คุณกำหนดผู้ใช้และรหัสผ่าน ขึ้นอยู่กับไฟล์ปรับแต่งของคุณ guest_enabledค่อนข้างสับสนเพราะไม่มีอะไรเกี่ยวข้องกับ 'guest'-access แต่ทำให้ vsftpd เขียนชื่อผู้ใช้อื่น (remap) สำหรับผู้ใช้ 'ปกติ'
Rik

ฉันจะตั้งรหัสผ่านได้อย่างไร? ฉันไม่ทราบคำสั่งเฉพาะสำหรับ vsftpd
เทรวิส

เคยเห็นคุณโพสต์คำถามอื่นที่ฉันทำไว้ก่อนหน้านี้ ฉันลืมเกี่ยวกับการทำคำถามก่อนหน้านี้ ฉันพบว่าฉันมีอันนี้จริง ๆ หลังจากที่ฉันสร้างขึ้นนั้น อย่างไรก็ตามฉันเพิ่งลบมัน
เทรวิส
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.