ลองสคริปต์และเรียกใช้


28

ฉันต้องการดาวน์โหลดสคริปต์จาก: http://dl.dropbox.com/u/11210438/flockonus-stack.shและดำเนินการ ฉันเดาว่าใช้ wget เปลี่ยนชื่อ chmod มันและดำเนินการ

คำสั่งสำหรับการทำเช่นนั้นบน Ubuntu คืออะไร?

คำตอบ:


51

ระมัดระวัง

ก่อนเรียกใช้สคริปต์คุณเชื่อถือคนที่เขียนหรือไม่

ตัวอย่างเช่นคุณคาดหวังให้สคริปต์มีหรือไม่

echo "brain1" > /etc/hostname

นั่นจะพยายามเปลี่ยนชื่อโฮสต์ของคุณ


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

wget -O - http://dl.dropbox.com/u/11210438/flockonus-stack.sh | bash

แต่ดาวน์โหลดแยกต่างหากและอ่านก่อนใช้งานครั้งแรก

นอกจากนี้โปรดทราบว่าการแจ้งเตือนแบบโต้ตอบภายในสคริปต์ที่ดาวน์โหลดมาอาจทำงานไม่ถูกต้องโดยใช้วิธีนี้


9
+1 สำหรับการชี้ให้เห็นถึงความกังวลด้านความปลอดภัย (สำคัญ) ด้วยสิ่งนี้ มั่นใจได้อย่างแน่นอนว่าคุณเชื่อถือแหล่งที่มา ที่สามารถได้อย่างง่ายดายเพียงเป็นecho "brain1" > /etc/hostname rm -rf /
Christopher Cashell

2
+1 ขอบคุณพวกสคริปต์นั้นมาจากฉันมันปลอดภัยแล้ว .. รักหนึ่งสายการบิน แต่มันมีบางส่วนของสายการโต้ตอบที่ไม่ได้ทำงาน .. ไม่เป็นไรทำไม?
Fabiano Soriani

1
apt-get installสายของคุณ? หากapt-getจะติดตั้งการพึ่งพาพิเศษใด ๆ มันจะถามคุณและถ้ามันไม่สามารถมันก็จะออกไปเพื่อความปลอดภัย เพิ่มแพ็กเกจที่ขึ้นต่อกันทั้งหมดลงในอาร์กิวเมนต์บรรทัดคำสั่งหรือพิจารณาเพิ่ม-yเช่นapt-get -y install...
Mikel

ปัญหาไม่เกี่ยวข้องกับการพึ่งพามันเกี่ยวข้องกับ apt flushing stdin
Zoredache

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

9

สคริปต์ที่ไม่โต้ตอบ

wget -O - http://website.com/my-script.sh | bash

โปรดทราบว่าเมื่อใช้วิธีนี้สคริปต์แบบโต้ตอบจะไม่ทำงาน


สคริปต์แบบโต้ตอบ

เพื่อให้สคริปต์แบบโต้ตอบทำงานได้คุณสามารถใช้สิ่งนี้:

bash <(wget -qO- http://website.com/my-script.sh)

สคริปต์การโต้ตอบที่ต้องถูกเรียกใช้ในฐานะรูท

คำเตือน: นี่เป็นอันตรายอย่างยิ่ง ไม่แนะนำ.

sudo su -c "bash <(wget -qO- http://website.com/my-script.sh)" root

โปรดทราบว่าคุณไม่สามารถใช้งานได้ง่ายsudo bashเนื่องจากการใช้<(...)จะสร้างไฟล์เสมือนและตัวอธิบายไฟล์นั้นจะไม่สามารถเข้าถึงได้จากอินสแตนซ์ของ bash ของรูท จะต้องดำเนินการกับผู้ใช้รายเดียวกันที่จำเป็นต้องอ่านไฟล์เสมือนดังนั้นจึงต้องส่งคำสั่งของตัวเองในเชลล์ผู้ใช้รูท


1
นี่คือคำตอบที่ดีที่สุด ครอบคลุมประเด็นสำคัญของการดำเนินการเชิงโต้ตอบเทียบกับการไม่โต้ตอบกับสิทธิพิเศษ
Leonid Makarov

5

สคริปต์นั้นมาจากฉันมันปลอดภัย .. รักหนึ่งสายการบิน แต่มันมีบางสายการโต้ตอบที่ไม่ได้ทำงาน .. ไม่ได้ทำไม?

เมื่อ dpkg ทำงานเรียกโดย apt-get มันจะล้างข้อมูล stdin หากคุณใช้คำสั่งเช่นcurl blah | bashนั้นโดยทั่วไปคุณจะส่งเนื้อหาของหน้าเว็บเพื่อทุบตีผ่าน STDIN หากหนึ่งในคำสั่งของคุณคือ apt-get แล้วทำงานทุกอย่างอื่นจะถูกลบทิ้ง

apt-get install --yes denyhosts </dev/nullเคล็ดลับคือการใช้คำสั่งเช่นนี้ สิ่งนี้จะช่วยให้ได้รับอินพุตที่แตกต่างกันและมันจะล้าง / dev / null แทนสคริปต์ที่เหลือของคุณ

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

สำหรับบันทึกฉันชอบขดมากกว่า wget สำหรับเรื่องนี้ แต่ wget ก็ควรจะดี


ฉันพยายามสคริปต์ที่มีการโต้ตอบบางอย่างมันทำงานได้ดี .. ฉันไม่เข้าใจ xD dl.dropbox.com/u/11210438/lala.sh
Fabiano Soriani

4
#!/bin/sh
if [ ! -f "/tmp/flockonus-stack.sh" ]
then
    wget -O /tmp/flockonus-stack.sh http://dl.dropbox.com/u/11210438/flockonus-stack.sh
fi

sh /tmp/flockonus-stack.sh

4

ตัวอย่างทั้งหมดเหล่านี้หายไปเป็นจุดสำคัญ หากคุณใช้ url http://dl.dropbox.com/u/11210438/flockonus-stack.shคุณจะต้องตรวจสอบสคริปต์ทุกครั้งที่ดาวน์โหลดเพราะทุกคนสามารถแก้ไขได้บนเส้นทางเครือข่ายระหว่างคุณและดรอปบ็อกซ์ หากคุณเปลี่ยนไปใช้http s : //dl.dropbox.com/u/11210438/flockonus-stack.shคุณจะไม่มีที่มาของความไม่มั่นคงนั้น

(Dropbox พยายามเปลี่ยนเส้นทาง http URL เป็น https แต่ในกรณีของการโจมตีเครือข่าย wget จะไม่ได้รับการพูดคุยกับดรอปบ็อกซ์จริงและจะไม่เห็นการเปลี่ยนเส้นทาง)


2
นี่น่าจะเป็นความคิดเห็นที่ดีกว่าสำหรับคำถามไม่ใช่คำตอบเพราะมันไม่ได้ตอบคำถามอย่างแน่นอน ยังคงมีมูลค่าชี้อย่างแน่นอน!
Bill Weiss

2

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

ตัวอย่างเช่น:

!#/bin/bash

#Change to temp directory
cd /tmp

#Download file using wget
wget http://dl.dropbox.com/u/11210438/flockonus-stack.sh

#Execute the file

sh flockonus-stack.sh

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