ฉันจะให้สิทธิ์ไฟล์และไดเรกทอรีที่สร้างโดย FTP เพื่อให้ Apache อ่านและเขียนได้อย่างไร


8

ฉันเป็นคน Windows มากกว่าดังนั้นโปรดแก้ตัวไม่รู้ด้วยคำถาม Linux พื้นฐานนี้

ฉันกำลังดูแลเซิร์ฟเวอร์ Linux (Debian) ซึ่งมีเพียง Apache2 และ vsftp ติดตั้งอยู่

สิ่งที่เกิดขึ้นคือฉันกำลังต่อสู้อย่างต่อเนื่องกับผู้ที่เป็นเจ้าของไฟล์และโฟลเดอร์และดูเหมือนจะไม่ถูกต้อง

นี่คือความเข้าใจของฉัน:

  • ผู้ใช้www-dataต้องการความเป็นเจ้าของโฟลเดอร์และไฟล์เนื่องจากไฟล์ทั้งหมดภายใต้ / var / www / html เรียกใช้สคริปต์ซึ่งต้องการให้พวกเขาเขียนไปยังโฟลเดอร์ของพวกเขา และแน่นอนว่าจะต้องสามารถแสดงหน้าเว็บผ่าน http ได้
  • ผู้ใช้ ftp ของฉัน (เรียกว่าftpuser ) ต้องมีสิทธิ์เขียนไปยังโฟลเดอร์ / var / www / html (เรียกซ้ำ) ตามที่ฉันต้องการเพื่ออัปโหลดไฟล์ใหม่

เมื่อคำนึงถึงสิ่งนี้ฉันได้สร้างกลุ่มที่ชื่อว่าftpandwwwและได้ทำการร้องโฟลเดอร์และไฟล์ทั้งหมดให้กับกลุ่มนี้ สิ่งนี้ได้ผลในระดับ ...

ฉันเกือบจะถูกที่แล้วยกเว้นว่ามีโฟลเดอร์ใหม่ที่สร้างขึ้นโดยใช้ไคลเอนต์ FTP ของฉันมีสิทธิ์ที่ไม่ถูกต้อง (ซึ่งฉันสามารถแก้ไขได้โดยเปลี่ยนพวกเขาภายใต้ไคลเอนต์ FTP) แต่ www-data ไม่สามารถเขียนถึงพวกเขาได้ เพราะพวกเขาเป็นเจ้าของโดยftpuserและฉันก็จบลงด้วยการที่ SSH เข้ามาและวิ่งไปที่กลุ่ม ftpandwww เพื่อให้ทั้งคู่มีความสุข

ฉันจะสร้างโฟลเดอร์ใหม่ทั้งหมดที่ฉันสร้างภายใต้ FTP ได้อย่างไรมีสิทธิ์ที่ถูกต้อง (774) และเป็นเจ้าของโดยกลุ่มftpandwwwโดยอัตโนมัติเพื่อให้ฉันสามารถอัปโหลดและให้บริการผ่านทางเว็บ (มีสิทธิ์การเขียน) โดยไม่ต้องเข้าไป สร้างโฟลเดอร์และไฟล์ใหม่ทุกครั้งหรือไม่


คำตอบ:


10

ใช้สิทธิ์SetGIDในไดเรกทอรีเว็บรูทและเผยแพร่ไปยังลูก ๆ

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

ในการใช้ SetGID กับวัตถุระบบไฟล์ให้ใช้chmodกับ 2 หน้ารหัสสิทธิ์
(เช่น: 740 => 2740)

ฉันใช้ SetGID ในการแบ่งปัน Samba ของฉันเพื่อให้ไฟล์มีกลุ่มของตัวเองเสมอUsersและสมาชิกทุกคนในกลุ่มสามารถอ่านไฟล์ได้ (โดยปกติฉันจะใช้2750เพื่อให้มีเพียงผู้ใช้ที่เจ้าของสามารถเขียนลงไฟล์ได้)

ในกรณีของคุณให้เรียกใช้สิ่งนี้ (แทนที่ XXX ด้วยสิทธิ์ที่คุณต้องการ):

sudo chown -R  root:ftpandwww /var/www
sudo chmod -R 2XXX /var/www 

ftpuser:ftpandwwwแล้วไฟล์ใหม่และโฟลเดอร์ที่จะออกมาพร้อมกับการเป็นเจ้าของเช่น

แก้ไข:

ทั้งนี้ขึ้นอยู่กับ usecase ของคุณ SetGID น่าจะเพียงพอที่จะแก้ปัญหาของคุณ แต่ถ้าคุณมีปัญหาอย่างต่อเนื่องที่หนึ่งหรือผู้ใช้อื่นถูกปฏิเสธการเขียนเนื่องจากได้รับอนุญาตกลุ่มที่ไม่ถูกต้อง (แต่สิทธิ์ในการเป็นเจ้าของ) umask ที่กำหนดเองสำหรับผู้ใช้ที่สร้างไฟล์

หากคุณมีการตั้งค่า umask สำหรับผู้ใช้ (เพราะมันเป็นภูต) ความยากลำบากให้ตรวจสอบหัวข้อนี้เกี่ยวกับตัวเลือกสำหรับการตั้งค่า umask

ฉันอยากจะแนะนำหน้ากาก007ถ้าคุณต้องการให้สมาชิกในกลุ่มสามารถเขียนและลบไฟล์และไม่มีสิทธิ์ให้กับผู้ที่ไม่ใช่เจ้าของ


ขอบคุณฉันจะลองสิ่งนี้เมื่อคุณพูดถึงว่าไฟล์และโฟลเดอร์ทั้งหมดจะมีความเป็นเจ้าของ ftpuser: ftpandwww จะ www-data ยังคงให้บริการและมีสิทธิ์ (ผ่านสคริปต์) เพื่อเขียนกลับไปยังโฟลเดอร์หรือไม่ ขอบคุณอีกครั้ง.
omega1

เจ้าของที่แท้จริงอาจเป็นผู้ใช้ที่เรียกใช้กระบวนการยกเว้นว่าจะใช้การตรวจสอบความถูกต้องภายในเครื่อง ทั้งสองวิธีคำตอบสำหรับคำถามของคุณขึ้นอยู่กับ XXX ที่คุณเลือกใช้ เนื่องจากทั้ง wwwdata และ ftpdata อยู่ในกลุ่มเดียวกันหากคุณให้ 770 ดังนั้นใช่ทั้งสองบัญชีจะสามารถเขียนไปยังวัตถุได้ ถ้าคุณให้ 740 มันผู้ใช้ที่เป็นเจ้าของเท่านั้นที่จะสามารถเขียนได้ แต่สมาชิกของ ftpandwww จะสามารถอ่านได้ ประเด็นก็คือว่าคุณกำลังใช้กลุ่ม perms มากกว่าผู้ใช้ perms สำหรับการดำเนินการเหล่านี้
Frank Thomas
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.