ฉันจะคัดลอกไฟล์ลงใน `/ var / www` ด้วย WinSCP ได้อย่างไร


11

เมื่อฉันพยายามวางไฟล์เว็บไว้/var/wwwใน apache บนอินสแตนซ์ของ ec2 Ubuntu มันทำให้ฉันมีข้อผิดพลาดที่ระบุว่าฉันไม่ได้รับอนุญาต

Permission denied.
Error code: 3
Error message from server: Permission denied
Request code: 3

ฉันจะให้สิทธิ์ตัวเองในการทำสิ่งนี้หรือวิธีที่ดีที่สุดในการคัดลอกไฟล์ไปยัง/var/wwwWinSCP คืออะไร

คำตอบ:


15

ฉันได้รับข้อผิดพลาดเดียวกันใน WinSCP ทางออกหนึ่งคือการเปลี่ยนความเป็นเจ้าของของ '/ www /' chownโฟลเดอร์โดยใช้ ด้วยวิธีนี้คุณสามารถทำให้ผู้ใช้ที่คุณเข้าสู่ระบบเป็นเจ้าของแทนที่จะเป็น 'root' เป็นเจ้าของ ฉันใช้ Amazon Linux แทน Ubuntu แต่คำสั่งนี้ใช้ได้กับฉัน:

sudo chown -R -v ec2-user /var/www/

ผู้ใช้ 'ผู้ใช้ ec2' เป็นผู้ใช้ที่ฉันเข้าสู่ระบบด้วย

ลิงก์ที่มีประโยชน์

  • alestic.com : การใช้ sudo, ssh, rsync บนรูปภาพ Ubuntu อย่างเป็นทางการสำหรับ EC2
  • apache.com : รายการคำสั่ง

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

9

เปิดใช้งานสิทธิ์การเขียนสำหรับผู้ใช้ที่เข้าสู่ระบบผ่าน WinSCP มีสองวิธีในการทำเช่นนี้

วิธีแรกคือการเปลี่ยนการอนุญาตในโฟลเดอร์เพื่ออนุญาตให้ทุกคนเขียนถึงมัน นี่ไม่ใช่ความปลอดภัยที่ดีที่สุด

chmod 777 /var/www


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

ค้นหาผู้ที่เป็นเจ้าของไดเรกทอรี:

ls -l /var | grep www

คุณจะเห็นสิ่งที่ชอบ: drwxr-x --- 9 www-data www-data 4096 14 กรกฎาคม 2009 www สิ่งสำคัญที่ควรทราบคือรากศัพท์และชื่อสองชื่อ ในกรณีนี้เจ้าของไดเรกทอรีคือ www-data และกลุ่มของไดเรกทอรีคือ www-data ดังนั้นตอนนี้คุณจะเพิ่มผู้ใช้ของคุณในกลุ่ม www-data

usermod -G www-data user

ตอนนี้เพียงแค่เพิ่มสิทธิ์เขียนไปยังกลุ่ม

chmod 770 /var/www

ตอนนี้

ls -l /var | grep www

ควรกลับมา: drwxrwx --- 9 www-data www-data 4096 14 กรกฎาคม 2009 www

ด้วยวิธีนี้คุณจะสามารถเขียนไปยังไดเรกทอรีในขณะที่ไม่เปิดสิทธิ์การเขียนให้ทุกคน


1
แก้ไขเล็กน้อยเพื่อความถูกต้อง - sudo chmod 777 / var / www - sudo usermod -G www-data (ชื่อผู้ใช้) - sudo chmod 770 / var / www - มันอาจทำงานได้ขึ้นอยู่กับว่าคุณเป็นใครในตัวอย่างของคุณ แต่ 'sudo' ควรทำงาน ไม่ว่าคุณจะเป็นใคร
bshea

1

บน ec2 ใช้ได้กับฉัน ล็อกอินไปที่ box ผ่าน putty ด้วยผู้ใช้ "ec2-user" และใช้คำสั่ง:

sudo root
chmod 777 <NAME_OF_FOLDER>

หมายเหตุ: การอนุญาตนี้จะให้สิทธิ์การเขียนสำหรับผู้ใช้ทั้งหมด

ตอนนี้ควรสามารถเขียนโดยใช้ WinScp


1

บทช่วยสอนต่อไปนี้ทำงานให้ฉันและให้ภาพหน้าจอที่เป็นประโยชน์ เข้าสู่ระบบในฐานะผู้ใช้ทั่วไปที่มีสิทธิ์ sudo เพียงแค่ปรับแต่งตัวเลือก WinSCP ไม่กี่ตัว: http://cvlive.blogspot.de/2014/03/how-to-login-in-as-ssh-root-user-from.html

ตั้งค่า Session / File protocol เป็น: SCP ป้อน host / instance ip, พอร์ต - ปกติคือ 22 และชื่อผู้ใช้ปกติ ป้อนข้อมูลรับรองรหัสผ่านหากจำเป็นต้องเข้าสู่ระบบ เพิ่มไฟล์ไพรเวทคีย์ของผู้ใช้ใน Advanced / SSH / Authentication

การยกเลิกการเลือกการรับรองความถูกต้องขั้นสูง / SSH / การรับรองความถูกต้อง / ความพยายาม "แป้นพิมพ์แบบโต้ตอบ" ควรอนุญาตให้ขั้นสูง / สิ่งแวดล้อม / SCP เชลล์ / เชลล์ / เชลล์: sudo su - เพื่อให้สิทธิ์ sudo สำหรับการเข้าถึงไดเรกทอรีเว็บเซิร์ฟเวอร์ในฐานะผู้ใช้ที่ไม่ใช่เจ้าของ


อัปเดต: 08/03/2017

การบันทึก WinSCP อาจมีประโยชน์ในการแก้ไขปัญหา

winscp.net/eng/docs/logging:

[WinSCP] การบันทึกสามารถเปิดใช้งานได้จากหน้าการบันทึกของกล่องโต้ตอบการตั้งค่า การบันทึกสามารถเปิดใช้งานจากบรรทัดคำสั่งโดยใช้ / log และ / xmllog พารามิเตอร์ตามลำดับสิ่งที่มีประโยชน์โดยเฉพาะอย่างยิ่งกับการเขียนสคริปต์ ในแอสเซมบลี. NET บันทึกเซสชันถูกเปิดใช้งานโดยใช้ Session.SessionLogPath1)

ขึ้นอยู่กับข้อผิดพลาดในการเชื่อมต่อ WinSCP การติดตั้งเซิร์ฟเวอร์บางตัวอาจต้องการคำสั่งที่เพิ่มลงในไฟล์ (Ubunto, CentOS, อื่น ๆ -Line-Server) / etc / sudoers เพื่อไม่ต้องการ TTY สำหรับผู้ใช้ที่ระบุ การสร้างไฟล์ใน /etc/sudoers.d/ (การใช้เครื่องมือเช่น Amazon Command Line Interface หรือ PuTTY) อาจเป็นตัวเลือกที่ดีกว่าการแก้ไข / etc / sudoers บางรุ่น / etc / sudoers แนะนำ:

ไฟล์นี้ต้องแก้ไขด้วยคำสั่ง 'visudo' ในฐานะรูท โปรดพิจารณาเพิ่มเนื้อหาท้องถิ่นใน /etc/sudoers.d/ แทนที่จะแก้ไขไฟล์นี้โดยตรง ดูหน้า man สำหรับรายละเอียดเกี่ยวกับวิธีเขียนไฟล์ sudoers

เมื่อแก้ไขไฟล์ sudoers (เป็น root) ผ่านบรรทัดคำสั่งคำสั่ง 'visudo' ควรใช้เพื่อเปิดไฟล์เนื่องจากจะวิเคราะห์ไฟล์เพื่อหาข้อผิดพลาดทางไวยากรณ์ โดยทั่วไปไฟล์ /etc/sudoers.d/ จะเป็นเจ้าของโดย root และ chmoded โดยมีสิทธิ์น้อยที่สุด อาจมีการอ้างอิงไฟล์ / etc / sudoers ที่เป็นค่าเริ่มต้นเนื่องจากควรมีสิทธิ์ chmod ที่แนะนำในการติดตั้งโดยอัตโนมัติ เช่น: 0440 r - r -----

superuser.com/a/869145:

visudo -f /etc/sudoers.d/somefilename

Defaults:username !requiretty 

ลิงก์ที่มีประโยชน์:

  • Stackoverflow: stackoverflow.com/questions/25688850/cloud-init-how-to-add-default-user-to-sudoers-d
    • www.digitalocean.com/community/tutorials/how-to-edit-the-sudoers-file-on-ubuntu-and-centos

ฟอรัม WinSCP: - winscp.net/forum/viewtopic.php?t=3046 - winscp.net/forum/viewtopic.php?t=2109

WinSCP Doc: https://winscp.net/eng/docs/faq_su

ด้วยโปรโตคอล SCP คุณสามารถระบุคำสั่งต่อไปนี้เป็นเชลล์แบบกำหนดเองในหน้า SCP / Shell ของกล่องโต้ตอบการตั้งค่าไซต์ขั้นสูง:

sudo -s

[ ... ]

โปรดทราบว่าเนื่องจาก WinSCP ไม่สามารถใช้การจำลองเทอร์มินัลได้คุณจึงต้องปิดการใช้งานตัวเลือก sudoers

คำแนะนำใน Ubuntu Apache / etc / sudoers แนะนำให้เพิ่มคำสั่งไปยัง /etc/sudoers.d แทนที่จะแก้ไข / etc / sudoers โดยตรง ทั้งนี้ขึ้นอยู่กับการติดตั้งการเพิ่มคำสั่งไปยัง /etc/sudoers.d/cloud-init อาจทำงานได้เช่นกัน

อาจเป็นประโยชน์ในการสร้างผู้ใช้ทดสอบ SSH ด้วยสิทธิ์ sudo โดยทำตามขั้นตอนที่ระบุไว้ในเอกสารประกอบของอินสแตนซ์เพื่อให้แน่ใจว่าผู้ใช้ได้แนะนำการตั้งค่าอินสแตนซ์และการปรับปรุงใด ๆ


0

stat /var/wwwคุณจำเป็นต้องให้สิทธิ์ของผู้ใช้เขียนจำได้สิทธิ์ก่อนใช้

จากนั้นคุณสามารถเปลี่ยนพวกเขาด้วยsudo chmod 666 /var/wwwและเปลี่ยนพวกเขากลับมาในภายหลังเมื่อมีความจำเป็น

ศึกษาman chmodและดูman sudoคู่มือการอนุญาตไฟล์อื่น ๆ บนอินเทอร์เน็ตสำหรับข้อมูลเพิ่มเติม ...

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