ฉันจะรันสคริปต์ทุบตีที่ต้องการสิทธิ์รูทได้อย่างไร


15

ฉันมีบรรทัดสคริปต์นี้จาก ISP ของฉัน:

sudo bash
echo "plugin L2TP.ppp">>/etc/ppp/options 
echo "l2tpnoipsec">>/etc/ppp/options

มันใช้งานได้ถ้าฉันวางทีละบรรทัดลงในเทอร์มินัล ฉันต้องการสร้างไฟล์ * .command และรันโดยดับเบิลคลิก แต่ทั้งหมดที่ฉันได้รับคือการแจ้งรหัสผ่านและจากนั้นก็ล้าง bash window ไฟล์ "options" ที่เป็นผลลัพธ์ว่างเปล่า

ฉันลองสิ่งนี้:

#!/bin/bash

echo "plugin L2TP.ppp">>/etc/ppp/options 
echo "l2tpnoipsec">>/etc/ppp/options

ฉันเข้าใจ:

/ etc / ppp / options: ปฏิเสธการอนุญาต

ฉันคิดว่าฉันต้องใช้คำสั่งบางอย่างเพื่อรับสิทธิ์รูทจาก bash ภายใน


เมื่อคุณสร้างสคริปต์ของคุณคุณทำมันโดยการพิมพ์ sudo ./ispscript.command? นอกจากนี้สคริปต์ทุบตีมักจะมี. sh ต่อท้าย: ipscript.sh
แอรอนเลค

1
FYI สคริปต์นี้ควรใช้งานครั้งเดียวเท่านั้น นอกจากนี้หากคุณยังคงเรียกใช้สคริปต์เหมือนเดิมมันจะเป็นการต่อท้าย >> กับไฟล์ ไฟล์ตัวเลือกจะมีขนาดเพิ่มขึ้นเรื่อย ๆ ยิ่งคุณรันมากขึ้น (สคริปต์) สิ่งนี้อาจหรือไม่อาจทำให้เกิดปัญหากับสิ่งที่เคยอ่านไฟล์ตัวเลือก
dhempler

@ dennis.hempler ขอบคุณฉันรู้สิ่งนี้ จริงๆแล้วฉันจะเรียกใช้สคริปต์นี้บ่อยครั้ง เนื่องจากอุปกรณ์โมเด็ม USB ต้องการให้ไฟล์นี้ว่างเปล่าเพื่อให้ทำงานได้อย่างถูกต้อง ดังนั้นก่อนที่จะแทรกโมเด็ม USB ฉันจะลบไฟล์และก่อนที่จะเชื่อมต่อกับอินเทอร์เน็ตแบบมีสายฉันจะเขียนตัวเลือกเหล่านั้นในไฟล์
Dmitriy

คำตอบ:


16

ใช้สคริปต์ที่คุณสร้างขึ้น:

#!/bin/bash

echo "plugin L2TP.ppp">>/etc/ppp/options 
echo "l2tpnoipsec">>/etc/ppp/options

บันทึกไว้ในโฮมไดเร็กตอรี่ของคุณหรือไดเรกทอรี 'สคริปต์' ในโฮมไดเร็กตอรี่ของคุณเช่น l2tp.sh อนุญาตให้เรียกใช้งาน (เขียนคำสั่งนี้ในเทอร์มินัล):

chmod 700 ~/path/to/l2tp.sh

ในการรันไฟล์โดยใช้ sudo (สิทธิ์ใช้งานรูท):

วิธีที่ # 1 ในประเภทอาคาร:

$ sudo ~/path/to/l2tp.sh

วิธีที่ # 2 สร้างไฟล์ run_l2tp.com ขึ้นอยู่กับเนื้อหานี้:

sudo ~/path/to/l2tp.sh

อนุญาตให้เรียกใช้งาน:

chmod u+x run_l2tp.command

เมื่อคุณคลิกสองครั้งที่ run_l2tp.command และป้อนรหัสผ่านไฟล์ l2tp.sh จะถูกเรียกใช้โดยมีสิทธิ์รูท

หมายเหตุบางส่วน:

  • บน UNIX เช่นระบบ ~ สั้นสำหรับ "ไดเรกทอรีบ้านของฉัน"
  • Chmod 700 จะทำให้ไฟล์นี้ทำงานได้โดยคุณ สำหรับข้อมูลเพิ่มเติม: ดูหน้านี้วิกิพีเดีย
  • พิมพ์ 'sudo' ก่อนที่คำสั่งจะดำเนินการโปรแกรมโดยใช้สิทธิ์พิเศษ ระวังเมื่อทำสิ่งนี้สิ่งเลวร้ายอาจเกิดขึ้นได้หากคุณไม่แน่ใจว่ากำลังทำอะไรอยู่
  • เห็นได้ชัดว่าคุณสามารถละเว้น / เส้นทาง / ไปหากคุณบันทึกสคริปต์นี้โดยตรงในไดเรกทอรีบ้านของคุณ

4

บันทึกสิ่งนี้:

#!/bin/bash

echo "plugin L2TP.ppp">>/etc/ppp/options 
echo "l2tpnoipsec">>/etc/ppp/options

script.shไปยังเดสก์ทอปของคุณในไฟล์ชื่อ

เปิดหน้าต่าง Terminal และพิมพ์:

sudo bash ~/Desktop/script.sh

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


4

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

AppleScript น่าจะเป็นสายการบินdo shell script «your script's name here» with administrator privilegesเดียว บันทึกสคริปต์นั้นเป็นแอปพลิเคชัน จากนั้นเมื่อคุณคลิกมันจะขอรหัสผ่านผู้ดูแลระบบจากนั้นเรียกใช้เชลล์สคริปต์ด้วยสิทธิ์ผู้ดูแลระบบ

แน่นอนแทนที่«your script's name here»ด้วยเส้นทางไปยังสคริปต์ของคุณ


2

ปัญหาคือว่าเมื่อคุณทำมันได้จากบรรทัดคำสั่งให้สิ่งที่คุณทำจะเริ่มต้นbashภายใต้sudoและจากนั้นส่งต่อไปทั้งสองคำสั่งเหล่านั้นเพื่อbashไม่เปลือกเดิม (เครื่องหมายที่คุณต้องexitสองครั้ง)

เมื่อคุณทำในสคริปต์bashคำสั่งจะไม่ออกดังนั้นคำสั่งสองคำสั่งถัดไปจะไม่ทำงาน

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

#!/bin/sh --
sudo bash -c 'echo "plugin L2TP.ppp">>/etc/ppp/options' 
sudo bash -c 'echo "l2tpnoipsec">>/etc/ppp/options'

หากเราไม่ต้องการการเปลี่ยนเส้นทาง io ( >>บิต) เราสามารถเรียกคำสั่งได้โดยตรงsudoโดยไม่จำเป็นต้องใช้sudo sh -cเคล็ดลับ (และโปรดทราบว่าฉันต้องอ้างอาร์กิวเมนต์เพื่อsh -cป้องกันไม่ให้เรียกใช้เสียงก้องเหมือนรูท แต่ไฟล์ต่อท้ายเป็นผู้ใช้ดั้งเดิม)

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

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