สิ่งนี้ไม่เกี่ยวข้องกับสคริปต์ของคุณ ใน Bash shell, the ;
ถูกมองว่าเป็นคำสั่งสิ้นสุดสำหรับสตริงคำสั่ง และหลังจากนั้นจะเป็นคำสั่งรอง ดังนั้นวิธีการประมวลผลสิ่งของของคุณจึงมีผลดังนี้
ดำเนินการคำสั่งก่อนที่ ;
:
./copycron.sh /home/apple /home/พาย
ดำเนินการคำสั่งที่สองหลังจาก ;
:
รีบูต
เนื่องจากคุณกำลังดำเนินการน่าจะเป็น ราก
หรือ superuser มันรีบูทสำเร็จ
อย่างไรก็ตาม หากคุณทำบางอย่างที่เฉพาะเจาะจงมากขึ้นและดำเนินการคำสั่งอื่นตามอำเภอใจหลังจาก ;
คุณจะสังเกตเห็นว่าคำสั่งนั้นทำงานแทน ข้อโต้แย้งสองข้อของคุณต่อสคริปต์ของคุณจะยังคงอยู่ /บ้าน/แอปเปิ้ล
และ /บ้าน/พาย
ตามลำดับ สคริปต์ไม่เคยเห็น ;รีบูต
ส่วนหนึ่งเป็นเพราะไม่ได้แยกวิเคราะห์เป็นอาร์กิวเมนต์ นี่เป็นข้อ จำกัด ของ Bash ไม่ใช่บางอย่างในสคริปต์ของคุณ
คุณสามารถทดสอบสิ่งนี้ด้วยสคริปต์ต่อไปนี้ จากนั้นเรียกใช้คำสั่ง:
ไฟล์: argecho.sh
#!/bin/bash
echo "อาร์กิวเมนต์ที่คั่นด้วยช่องว่าง: $*"
เสียงก้อง ""
เสียงสะท้อน "------"
เสียงก้อง ""
คำสั่งให้ดำเนินการ:
./argecho.sh foo bar baz /tmp/something.txt;echo ฉันทำอย่างอื่นไปแล้ว
เอาต์พุต:
$ ./argecho.sh foo bar baz /tmp/something.txt;echo ฉันทำอย่างอื่นนอกสคริปต์ เห็นไหม
อาร์กิวเมนต์ที่คั่นด้วยช่องว่าง: foo bar baz /tmp/something.txt
------
ฉันทำอย่างอื่นนอกสคริปต์เห็นไหม
คุณจะสังเกตเห็นว่า 'echo' และอาร์กิวเมนต์อื่นๆ ในนั้นไม่รวมอยู่ในอาร์กิวเมนต์ของคุณในสคริปต์ของคุณ นี่คือพฤติกรรมทุบตีมาตรฐาน
จากการแก้ไขของคุณ ข้อกังวลของคุณคือมีใครบางคนกำลังขโมยคำสั่งที่เก็บ Jenkins ของคุณและออกคำสั่งที่เป็นอันตราย โดยการเปลี่ยนสคริปต์จาก sh 'copycron "${พื้นที่ทำงาน}" "${targetdir}"'
ถึง sh copycron /home /boot;ปิดเครื่อง
น่าเสียดายสำหรับคุณ สิ่งนี้ไม่สามารถแก้ไขอะไรได้เลย ซึ่งจะส่งผลให้คุณไม่สามารถควบคุมได้อย่างเหมาะสมว่าใครสามารถเข้าถึงที่เก็บคำสั่งได้ ผู้คุกคามดังกล่าวจะสามารถเข้าถึงการทำลายระบบของคุณได้มากขึ้น ไม่ใช่แค่เรียกใช้คำสั่งง่ายๆ เช่นการเปลี่ยนแปลงข้างต้น พวกเขาน่าจะติดตั้งมัลแวร์ในระบบของคุณมากกว่าสิ่งใด และเว้นแต่คุณจะรักษาความปลอดภัยที่เก็บคำสั่งของคุณอย่างเหมาะสมเพื่อไม่ให้ใครก็ตามสามารถ 'แก้ไขแบบสุ่มได้' การขาดการควบคุมที่เก็บของคุณคือสิ่งที่จะทำให้คุณผิดหวัง
ไม่มีการชุบแข็งจริง ๆ ที่เราสามารถทำได้ที่นี่หากผู้ใช้เจนกินส์มีสิทธิ์ sudo ไม่จำกัดเช่นกัน ไม่มี เพราะสิ่งนี้จะต้องพึ่งพาคุณในการรักษาความปลอดภัยระบบของคุณอย่างเหมาะสมหรือสร้างกลไกการปรับใช้ทางเลือกที่ปลอดภัยกว่าและไม่ต้องการแบบเต็ม ซูโด
ในการทำงานกับทุกสิ่ง