คำถามติดแท็ก unix

Unix เป็นระบบปฏิบัติการคอมพิวเตอร์แบบมัลติทาสกิ้งและผู้ใช้หลายคนที่พัฒนาขึ้นในปีพ. ศ. 2512

10
แฮ็คคอมไพเลอร์ของ Ken Thompson ยังคงเป็นภัยคุกคามหรือไม่?
แฮ็คทอม ธ อมป์สัน (1984) Ken Thompson ได้สรุปวิธีการที่จะคอมไพล์ไบนารีคอมไพเลอร์ (และซอฟต์แวร์ที่คอมไพล์อื่น ๆ เช่นสคริปต์การเข้าสู่ระบบในระบบ * nix) ในปี 1984 ฉันอยากรู้ว่าการคอมไพล์สมัยใหม่ได้แก้ไขข้อบกพร่องด้านความปลอดภัยนี้หรือไม่ คำอธิบายสั้น: เขียนรหัสคอมไพเลอร์ใหม่เพื่อให้มีข้อบกพร่อง 2 ข้อ: เมื่อรวบรวมไบนารีของตัวเองคอมไพเลอร์จะต้องรวบรวมข้อบกพร่องเหล่านี้ เมื่อรวบรวมรหัสที่เลือกล่วงหน้าอื่น ๆ (ฟังก์ชั่นเข้าสู่ระบบ) จะต้องรวบรวมลับๆโดยพลการ ดังนั้นคอมไพเลอร์ก็ทำงานได้ตามปกติ - เมื่อคอมไพล์สคริปต์ล็อกอินหรือคล้ายกันมันสามารถสร้างแบ็คดอร์ความปลอดภัยและเมื่อคอมไพล์เวอร์ชั่นใหม่ของตัวเองในอนาคตมันจะเก็บข้อบกพร่องก่อนหน้า - และข้อบกพร่องจะมีอยู่ในคอมไพเลอร์เท่านั้น ไบนารีดังนั้นจึงเป็นเรื่องยากมากที่จะตรวจจับ คำถาม: ฉันไม่สามารถหาคำตอบสำหรับสิ่งเหล่านี้บนเว็บ: สิ่งนี้เกี่ยวข้องกับการรวบรวมแบบทันเวลาได้อย่างไร ฟังก์ชั่นเหมือนกับการเข้าสู่ระบบการจัดการโปรแกรมบนระบบ * nix ถูกคอมไพล์เมื่อรันหรือไม่? สิ่งนี้ยังคงเป็นภัยคุกคามที่ถูกต้องหรือมีการพัฒนาด้านความปลอดภัยในการรวบรวมตั้งแต่ปี 1984 ที่ป้องกันไม่ให้เกิดปัญหาร้ายแรง สิ่งนี้มีผลกระทบต่อทุกภาษาหรือไม่ ทำไมฉันถึงอยากรู้? ฉันเจอสิ่งนี้ขณะทำการบ้านและมันก็น่าสนใจ แต่ฉันก็ขาดภูมิหลังที่จะเข้าใจอย่างเป็นรูปธรรมไม่ว่าจะเป็นปัญหาปัจจุบันหรือปัญหาที่แก้ไขแล้ว วัสดุอ้างอิง ภาพรวม บางรหัส
156 linux  unix  compiler  hacking 

4
ความเฉลียวฉลาดที่แน่นอนของ Unix pipe คืออะไร
ฉันได้ยินเรื่องราวของดักลาสแมครอยรอยที่มาพร้อมกับแนวคิดและวิธีที่เคน ธ อมป์สันใช้มันในคืนเดียว เท่าที่ฉันเข้าใจไปป์คือการเรียกของระบบซึ่งใช้หน่วยความจำร่วมกันระหว่างสองโพรเซสโดยที่โพรเซสหนึ่งเขียนและอ่านอย่างอื่น ในฐานะคนที่ไม่คุ้นเคยกับระบบปฏิบัติการภายในหรือแนวคิดฉันสงสัยว่า "อัจฉริยะ" ในเรื่องนี้คืออะไร? มันเป็นความคิดของสองกระบวนการที่ใช้หน่วยความจำร่วมกันหรือไม่? หรือเป็นการนำไปปฏิบัติ หรือทั้งคู่? PS: ฉันตระหนักถึงประโยชน์ของท่อหรือวิธีการใช้ในเปลือก คำถามเกี่ยวกับแนวคิดและการดำเนินการของ|

5
มันเป็นความคิดที่ดีที่จะเรียกคำสั่งเชลล์จากภายใน C หรือไม่?
มีคำสั่ง unix shell ( udevadm info -q path -n /dev/ttyUSB2) ที่ฉันต้องการโทรจากโปรแกรม C อาจใช้เวลาประมาณหนึ่งสัปดาห์ในการต่อสู้ฉันสามารถนำไปใช้ใหม่ได้ด้วยตัวเอง แต่ฉันไม่ต้องการทำเช่นนั้น เป็นที่ยอมรับอย่างกว้างขวางในทางปฏิบัติที่ดีสำหรับฉันเพียงแค่โทรpopen("my_command", "r");หรือว่าจะนำเสนอปัญหาความปลอดภัยที่ยอมรับไม่ได้และส่งต่อปัญหาความเข้ากันได้? ฉันรู้สึกผิดที่จะทำสิ่งนี้ แต่ฉันไม่สามารถบอกได้ว่าทำไมมันถึงไม่ดี
50 c  unix  shell 

5
การโปรแกรมในปรัชญา UNIX เหมือนกับการเขียนโปรแกรมเชิงหน้าที่หรือไม่?
สภาพแวดล้อมการเขียนโปรแกรม UNIX (ข้อความคลาสสิก) ระบุว่าวิธี UNIX ในการเขียนโปรแกรมคือการสร้างเครื่องมือขนาดเล็กที่กำหนดอย่างดีซึ่งสามารถรวมกันเพื่อแก้ไขปัญหาที่ซับซ้อนมากขึ้น ในการเรียนรู้ C และ Bash shell ฉันพบว่านี่เป็นแนวคิดที่ทรงพลังที่สามารถใช้เพื่อจัดการกับปัญหาการเขียนโปรแกรมที่หลากหลาย เพียงแค่ใช้แพลตฟอร์ม Linux แนวคิดนั้นค่อนข้างชัดเจนและใช้งานได้ตลอดเวลา การแสดงออกใด ๆ ที่เกิดขึ้นในบรรทัดคำสั่งที่เปลี่ยนเส้นทาง I / O, การเชื่อมโยงเครื่องมือระบบเช่น ls, grep, อื่น ๆ และอื่น ๆ แสดงให้เห็นว่าแนวคิดนี้มีประสิทธิภาพเพียงใด สิ่งที่ทำให้ฉันสับสนคือหลายโปรแกรมเหล่านี้เขียนด้วยภาษา C โดยใช้รูปแบบการเขียนโปรแกรมที่จำเป็น / ขั้นตอน แต่วิธีที่พวกเขาใช้และเชื่อมต่อเข้าด้วยกันในบรรทัดคำสั่งนั้นดูเหมือนโปรแกรมการทำงานกับฉันมากขึ้น ฟังก์ชั่นแยกที่ไม่ได้ขึ้นอยู่กับสถานะของโปรแกรมอื่น ๆ ที่มันอาจจะเข้าร่วม สิ่งนี้ถูกต้องหรือไม่การเข้าใจปรัชญาการเขียนโปรแกรมของ UNIX นั้นคือการเขียนโปรแกรมที่ใช้งานได้โดยใช้เครื่องมือที่อาจสร้างขึ้นโดยใช้รูปแบบการเขียนโปรแกรมที่จำเป็น?

7
มีปรัชญาการเขียนโปรแกรม Windows หรือไม่ [ปิด]
ฉันเขียนโปรแกรมทั้งใน Unix และ Windows ส่วนใหญ่ฉันทำงานใน Unix ซึ่งฉันได้เรียนรู้ปรัชญา Unixซึ่งสามารถสรุปได้ดังนี้ เขียนโปรแกรมที่ทำสิ่งหนึ่งและทำได้ดี เขียนโปรแกรมเพื่อทำงานร่วมกัน เขียนโปรแกรมเพื่อจัดการสตรีมข้อความเนื่องจากเป็นอินเตอร์เฟสสากล ดูเหมือนว่าจะมีความแตกต่างที่ชัดเจนในวัฒนธรรมการเขียนโปรแกรมระหว่างโลก Unix และ Windows เช่น: GUI เทียบกับ CLI ไฟล์ Registry vs config เครื่องมือจำนวนมากที่มีความเชี่ยวชาญสำหรับความต้องการใด ๆ เทียบกับกลุ่มของเครื่องมือมุมฉากทั่วไปซึ่งสามารถรวมกันได้ มี "ปรัชญา Unix" ใน Windows หรือไม่ สิ่งที่โปรแกรมเมอร์ Unix สามารถเรียนรู้จาก Windows หรือควรระวังเมื่อย้ายไปเขียนโปรแกรมใน Windows ฉันต้องการคำตอบเพื่อมุ่งเน้นการปฏิบัติที่ดีที่สุดของการเขียนโปรแกรม Windows (และไม่ใช่การต่อสู้ระหว่าง Windows และ Unix)

8
ความแตกต่างพื้นฐานระหว่าง Unix และ Linux ในการออกแบบและด้านอื่น ๆ คืออะไร? [ปิด]
ปิด. คำถามนี้เป็นคำถามปิดหัวข้อ ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัพเดตคำถามเพื่อให้เป็นหัวข้อสำหรับ Software Engineering Stack Exchange ปิดให้บริการใน7 ปีที่ผ่านมา ฉันอ่านประโยคนี้ต่อไป: Linux เป็นระบบที่คล้าย Unix แต่ไม่ใช่ Unix ฉันไม่รู้ว่าอะไรคือความแตกต่างที่แท้จริงระหว่างสองสิ่งนี้ ฉันรู้ว่า Linux มีแนวคิดมากมายจาก Unix และลิขสิทธิ์ของทั้งสองนั้นแตกต่างกัน นอกเหนือจากนั้นเนื่องจากฉันไม่ใช่ผู้เชี่ยวชาญในหนึ่งในนั้นฉันต้องการทราบว่ามีความแตกต่างพื้นฐานระหว่างพวกเขาในการออกแบบหรือด้านที่สำคัญอื่น ๆ

3
คำอธิบายอย่างง่ายของซ็อกเก็ต Unix
ฉันสามารถค้นหาและฉันได้ดูรายการวิกิพีเดียและที่อื่น ๆ แล้ว แต่ถึงแม้ว่าฉันจะมีประสบการณ์การเขียนโปรแกรมบางอย่างฉันก็ไม่เข้าใจแนวคิดจริงๆ คุณสามารถปฏิบัติต่อฉันเหมือนอายุ 10 ปีและให้คำอธิบายที่ชัดเจนเกี่ยวกับการสื่อสารซ็อกเก็ตได้หรือไม่?
20 unix  sockets 

12
การสัมภาษณ์ผู้ที่มีทักษะ unix ทั่วไป [ปิด]
ปิด คำถามนี้เป็นคำถามความคิดเห็นตาม ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้สามารถตอบข้อเท็จจริงและการอ้างอิงได้โดยแก้ไขโพสต์นี้ ปิดให้บริการใน4 ปีที่แล้ว คุณจะทดสอบนักพัฒนาที่อ้างว่ามีประสบการณ์เชลล์ * nix อย่างไร (เพื่อให้ชัดเจนเราไม่ต้องการทดสอบว่ามีใครสามารถพัฒนาบน * ระวังได้เฉพาะเมื่อพวกเขารู้วิธีรอบบรรทัดคำสั่ง) ฉันกำลังคิดที่จะทำให้พวกเขาแก้ปัญหาการลบข้อมูลออกจากไฟล์บันทึกซึ่งจะเกี่ยวข้องกับพื้นฐานบางอย่างเช่น cat, grep, cut, ... รวมกับ piping คุณต้องการความรู้พื้นฐานอะไรอีก นี่ไม่ใช่สำหรับการสัมภาษณ์คนที่จะพัฒนาสำหรับระบบ * nix และไม่ใช่สำหรับผู้ดูแลระบบ * nix แต่สำหรับนักพัฒนาทั่วไปที่บางครั้งต้องทำงานบางอย่างในระบบ * nix
20 interview  linux  unix  shell 

3
ทำไมคำสั่ง“ ฆ่า” จึงเรียกว่า
เหตุใดจึงตัดสินใจเรียกkillคำสั่ง "ฆ่า" ฉันหมายความว่าใช่ยูทิลิตี้นี้มักจะใช้เพื่อยุติกระบวนการ แต่มันสามารถนำมาใช้เพื่อส่งสัญญาณใด ๆ มันสับสนเล็กน้อยใช่ไหม อาจมีเหตุผลทางประวัติศาสตร์บางอย่าง ทั้งหมดที่ฉันรู้จากman killคำสั่งนี้ปรากฏในเวอร์ชัน 3 AT&T UNIX

4
ลักษณะตัวเลือกบรรทัดคำสั่ง - POSIX หรืออะไร
อยู่ที่ไหนสักแห่งที่ฉันเห็นว่าพูดจาโผงผางกับ java / javac ที่ถูกกล่าวหาว่าใช้การผสมผสานระหว่าง Windows และ Unix style java -classpath ... -ea ... Something IMHO มันไม่มีการผสมผสานมันก็เหมือนfindงานเหมือนกันใช่ไหม AFAIK ตาม POSIX ไวยากรณ์ควรเป็นเช่นนั้น java --classpath ... --ea ... Something และ-abcdefจะหมายถึงการระบุ 6 ตัวเลือกสั้น ๆ ในครั้งเดียว ฉันสงสัยว่าเวอร์ชันใดที่นำไปสู่การพิมพ์น้อยลงและมีข้อผิดพลาดน้อยลง ฉันกำลังเขียนโปรแกรมอรรถประโยชน์ขนาดเล็กใน Java และไม่ว่าในกรณีใดฉันจะใช้รูปแบบ Windows /a /bเนื่องจากฉันสนใจ Unix เป็นหลัก ฉันควรเลือกรูปแบบใด

3
ตัวพิมพ์เล็กในชื่อไฟล์ Linux
เมื่อฉันพบว่า UpperCase นั้นสามารถอ่านได้สำหรับการแยกคำตัวอักษรแรกในชื่อที่ซับซ้อนยาว ๆ ฉันมักจะให้ชื่อไฟล์ Linux บางอันกับ UpperCase ส่วนใหญ่ executables บางไดเรกทอรีเกินไป แต่ไม่กี่สัปดาห์ที่ผ่านมาฉันได้ตั้งข้อสังเกตว่าส่วนใหญ่ของชื่อไฟล์ทั้งหมดใน linux distrib ของฉันนั้นเป็นตัวพิมพ์เล็ก ... ดังนั้นผมจึงทำบาง googling สักครู่ที่ผ่านมาและผมพบว่าบทความนี้: ลินุกซ์ชื่อไฟล์ที่รัฐหนึ่งควรเสมอใช้ตัวพิมพ์เล็กในโลกของยูนิกซ์ ... เป็นการดีที่สุดที่จะใช้ตัวพิมพ์เล็กใน Linux เสมอเว้นแต่คุณจะนึกถึงเหตุผลที่ดีในการใช้ตัวพิมพ์ใหญ่หรือตัวพิมพ์เล็ก คน Unix ส่วนใหญ่ใช้ตัวพิมพ์เล็กเกือบเฉพาะ แต่นอกเหนือจากประเด็น "วัฒนธรรม" นี้แล้วยังมีอีกเหตุผลที่ดีในการใช้ตัวพิมพ์เล็ก หากคุณกำลังแชร์หรือเข้าถึงระบบไฟล์ DOS ด้วย Linux, DOS จะไม่สามารถดูไฟล์ที่มีชื่อไฟล์ตัวพิมพ์ใหญ่หรือตัวพิมพ์เล็กผสมกันได้ ... เป็นอย่างนั้นจริงเหรอ?

2
เหตุใดจึงมีชื่อไดเรกทอรี Oracle ชื่อ / u01 / u02 ฯลฯ ? [ปิด]
ปิด คำถามนี้ต้องการรายละเอียดหรือความคมชัด ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ เพิ่มรายละเอียดและชี้แจงปัญหาโดยแก้ไขโพสต์นี้ ปิดให้บริการใน4 ปีที่แล้ว ฉันทำงานกับ Oracle RDBMS มาสองสามปีแล้วและวันนี้หลังจากติดตั้งครั้งแรกฉันก็สงสัยว่าทำไมเราติดตั้งใน / u01, / u02 เป็นต้น แน่นอนคุณสามารถติดตั้งที่อื่น แต่ด้วยเหตุผลบางอย่างที่ไม่รู้จักอนุสัญญานี้ใช้ทุกที่และฉันไม่เคยเห็นการติดตั้ง Oracle ที่ร้ายแรงเช่น / opt บทเรียนประวัติศาสตร์ใด ๆ ที่ฉันพลาดไป?
11 oracle  unix 
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.