กลุ่ม www-data เขียนหลังจาก sftp?


1

ฉันต้องการให้ผู้ใช้ apache ของฉันสามารถอ่านและเขียนไฟล์ผู้ใช้ sftp ของฉันเพื่อให้สามารถอัปโหลดไฟล์ที่พร้อมใช้งาน (rwX) ให้กับทั้งผู้ใช้ sftp และ apache คนอื่น ๆ และทุกคนก็อ่านได้ก็โอเค .

Psst: I know this question comes up a lot, and I've been reading answers and trying many many things for two days now and am now thoroughly confused. ด้วย ฉันตระหนักถึงความเสี่ยงด้านความปลอดภัยที่เกี่ยวข้องกับการอนุญาตให้ www-data เขียนเพื่อเข้าถึงเว็บไซต์ของฉัน แต่นั่นไม่ใช่ปัญหาที่ฉันจะพูดถึงที่นี่

นี่คือขั้นตอนของฉัน:

usermod -aG www-data tim
mkdir -p /var/www/mysite/public_html

# now upload/untar the site, etc. not shown here #

chown -R www-data:www-data /var/www/mysite
chmod -R u+rwX,go+rwX,g+s,o-w /var/www/mysite

# now make the apache virtual host and so on .. not shown here #

ไฟล์ภายใน public_html มีการตั้งค่าเช่นนี้ - กลุ่มมีการเขียน:

-rw-rwSr-- 1 www-data www-data favicon.ico

ตอนนี้เข้าสู่ระบบในฐานะบัญชี "tim" ของฉันโดยใช้ sftp ฉันอัปโหลดไฟล์ใหม่ไปยังโฟลเดอร์ public_html จากนั้นดูที่การอนุญาต:

-rw-r--r-- 1 tim      wwww-data COPYING.txt

ดังนั้นฉัน สูญหาย เขียนกลุ่มแม้ว่าฉันคิดว่าฉันจะเพิ่ม g+s บนโฟลเดอร์พาเรนต์เพื่อให้สืบทอดกลุ่ม

เห็นได้ชัดว่านี่ไม่ได้หมายความว่ามันจะสืบทอดกลุ่ม / หน้ากาก / ฉันได้อ่านบางที่ (และสูญเสียการอ้างอิง) ที่ SFTP ไม่ให้เกียรติ umask; ดูเหมือนจะเป็นที่ที่สิทธิ์การสูญหาย แต่ฉันไม่รู้ว่าจะแก้ไขอย่างไร

แก้ไข พบการอ้างอิง umask และได้ลอง - http://john.parnefjord.se/node/62 - จะเห็นว่าไฟล์กำลังดำเนินการเข้าสู่ระบบ apon แต่ยังคงหน้ากากไม่ได้ตั้งค่าเป็น g + w หลังจากอัปโหลด


FYI, g+s ส่งผลกระทบต่อ ID กลุ่มที่กำหนดให้กับไฟล์ใหม่เท่านั้นไม่ใช่สิทธิ์ของกลุ่ม
Kenster

คำตอบ:


0

ฉันไม่ได้ตรวจสอบมากนัก แต่ฉันพยายาม 2-3 ครั้งด้วยสิทธิ์กลุ่มที่แตกต่างกันในเซิร์ฟเวอร์ท้องถิ่น

สิ่งที่ฉันได้รับที่นี่คือสิ่งที่เคยได้รับอนุญาตให้กับไฟล์ที่ระบบท้องถิ่นคือ สิทธิ์เดียวกันทั้งหมด รับโดยไฟล์ที่เซิร์ฟเวอร์ระยะไกล


0

เมื่อกระบวนการสร้างไฟล์บนระบบปฏิบัติการยูนิกซ์กระบวนการควบคุมการอนุญาตที่กำหนดให้กับไฟล์ กระบวนการระบุชุดของการอนุญาตโดยทั่วไปคือ 0666 หรือ 0777 ในการเรียกระบบการสร้างไฟล์ สิทธิ์ถูกแก้ไขโดย umask ของกระบวนการเพื่อสร้างสิทธิ์ที่แท้จริงสำหรับไฟล์ การตั้งค่าสถานะพิเศษในไดเรกทอรีหลักไม่ได้เป็นส่วนหนึ่งของกระบวนการนี้ กระบวนการยังสามารถเปลี่ยนการอนุญาตในไฟล์ที่มีอยู่ผ่านการเรียกระบบอื่นที่มีชื่อ chmod().

SFTP เป็นโปรโตคอลระบบไฟล์ระยะไกลจริงๆ เมื่อไคลเอนต์สร้างไฟล์บนเซิร์ฟเวอร์ไคลเอนต์สามารถบอกเซิร์ฟเวอร์ว่าสิทธิ์ใดที่จะมอบให้กับไฟล์ใหม่ ลูกค้าสามารถเรียกใช้ chmod() จากระยะไกลเพื่อเปลี่ยนการอนุญาตไฟล์ที่มีอยู่ เซิร์ฟเวอร์ OpenSSH SFTP ไม่มีวิธีการใด ๆ สำหรับผู้ดูแลเซิร์ฟเวอร์ในการ จำกัด สิ่งนี้ที่ฉันรับรู้

สิ่งที่ฉันอาจจะทำคือการเขียนเชลล์สคริปต์ที่กวาดผ่านโฟลเดอร์และแก้ไขการอนุญาตของไฟล์ คุณสามารถเรียกใช้สคริปต์จาก cron ทุกสองสามนาที สิ่งที่คุณควรเริ่มต้น:

#!/bin/sh
cd /var/www/mysite || exit 1
find . -type f ! -perm 0664 -exec chmod 0664 '{}' ';'
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.