Unix & Linux

คำถาม & คำตอบสำหรับผู้ใช้ Linux, FreeBSD และระบบปฏิบัติการ Un * x อื่น ๆ

7
ความแตกต่างระหว่าง 2> & 1> output.log และ 2> & 1 | ออกที. ล็อก
ฉันต้องการทราบความแตกต่างระหว่างสองคำสั่งต่อไปนี้ 2>&1 > output.log และ 2>&1 | tee output.log ฉันเห็นเพื่อนร่วมงานคนหนึ่งของฉันใช้ตัวเลือกที่สองเพื่อเปลี่ยนเส้นทาง ฉันรู้ว่า 2> & 1 ทำอะไรคำถามเดียวของฉันคือวัตถุประสงค์ของการใช้ทีที่ตัวดำเนินการเปลี่ยนเส้นทางแบบง่าย ">" สามารถใช้งานได้อย่างไร

5
เป็นไปได้หรือไม่ที่จะรู้ว่าโปรแกรมหรือสคริปต์ใดที่สร้างไฟล์ที่กำหนด?
ไฟล์สามไฟล์ปรากฏในไดเรกทอรีบ้านของฉันซึ่งเรียกว่า "client_state.xml", "lockfile" และ "time_stats_log" สองอันสุดท้ายนั้นว่างเปล่า ฉันสงสัยว่าพวกเขาไปถึงที่นั่นได้อย่างไร ไม่ใช่ครั้งแรกที่มันเกิดขึ้น แต่ครั้งสุดท้ายคือเมื่อหลายสัปดาห์ก่อน ฉันลบไฟล์และไม่มีอะไรเสียหายหรือบ่น stat $filenameฉันยังไม่ได้สามารถที่จะคิดว่าสิ่งที่ผมทำในขณะที่รายงานโดย มีวิธีใดที่ฉันจะทราบได้ว่าพวกเขามาจากไหน อีกวิธีหนึ่งมีวิธีการตรวจสอบไดเรกทอรีบ้าน (แต่ไม่ใช่ไดเรกทอรีย่อย) สำหรับการสร้างไฟล์หรือไม่
35 files  monitoring 

4
Interrupt ถูกจัดการใน Linux อย่างไร?
ฉันเพิ่งรู้ว่าInterruptเป็นhardware signal assertionที่เกิดในขาประมวลผล แต่ฉันอยากรู้ว่า Linux OS จัดการกับมันอย่างไร อะไรคือสิ่งที่เกิดขึ้นเมื่อมีการขัดจังหวะ?

2
เป้าหมายบริการและซ็อกเก็ตของ systemd คืออะไร
ฉันรู้ว่าพวกเขาทั้งหมดเป็นไฟล์หน่วย แต่ฉันไม่สามารถเข้าใจความหมายพิเศษของพวกเขา ฉันคิดว่าเป้าหมายนั้นคล้ายกับ daemons และซ็อกเก็ตเหมือนกันกับซ็อกเก็ต (IP + พอร์ต) แต่ยังมีหมายเลขไอโหนด ใครช่วยอธิบายด้วยคำพูดง่ายๆได้บ้าง?
35 systemd 

6
ฉันจะแบ่งพาร์ติชันไดรฟ์ USB เพื่อให้สามารถบู๊ตได้และมีพาร์ติชันเก็บข้อมูลที่ใช้งานร่วมกับ Windows ได้อย่างไร
แยกออกจากที่นี่ ฉันมีแฟลชไดรฟ์ขนาด 16gb ซึ่งฉันต้องการให้ ISO แบบสดๆสามารถบู๊ตได้ (ผ่าน unetbootin หรืออะไรทำนองนั้น) มันจะเป็น distro 32 บิตที่ฉันสามารถใช้ plug-in และ boot บนคอมพิวเตอร์ที่ฉันต้องการ เนื่องจากมันจะเป็น ISO แบบสดฉันจะต้องมีที่ไหนสักแห่งในการบันทึกข้อมูล ฉันต้องการให้ไดรฟ์ USB มีขนาดประมาณ 1gb สำหรับ distro และอีก 15gb สำหรับจัดเก็บข้อมูล ฉันสร้างพาร์ติชัน FAT สองพาร์ทแรกเรียกว่า 'บู๊ตได้' และที่เก็บข้อมูล 'ที่สอง ที่เก็บข้อมูลทำงานได้ดีใน Linux แต่ Windows จะเห็นพาร์ติชันที่สามารถบูตได้เท่านั้น ไม่สามารถเข้าถึงที่เก็บข้อมูล ฉันจะทำให้ข้อมูลสามารถเข้าถึงได้บน Windows และยังคงมีการกระจายที่สามารถบูตได้? หากคำตอบคือวิธีการแบ่งพาร์ติชันโปรดระบุลำดับและประเภทของแต่ละพาร์ติชัน ฉันต้องการพื้นที่สว็อปสำหรับสิ่งนี้หรือไม่

2
การซ้อนทับของระบบไฟล์ Linux - workdir ใช้ทำอะไร (OverlayFS)
OverlayFS มีworkdirตัวเลือกข้างสองไดเรกทอรีอื่น ๆlowerdirและupperdirซึ่งต้องเป็นไดเรกทอรีว่างเปล่า น่าเสียดายที่เอกสารเคอร์เนลของโอเวอร์เลย์ไม่ได้พูดถึงวัตถุประสงค์ของตัวเลือกนี้มากนัก "workdir" จะต้องเป็นไดเรกทอรีว่างเปล่าในระบบไฟล์เดียวกับ Upperdir สำหรับการอ่านได้อย่างเดียวซ้อนworkdirอาจจะ ommittet upperdirในหมู่ นี่ทำให้ฉันรู้ว่ามันเกี่ยวข้องกับการเขียนไฟล์ที่ถูกผสาน โปรดอธิบายสิ่งที่เกิดขึ้นในworkdirเมื่อไฟล์ถูกเขียนหรือเปลี่ยนแปลงในไดเรกทอรีที่ผสาน ทำไมการเขียนupperdirไม่พอ?
35 overlayfs 

2
PATH ของ cron ตั้งอยู่ที่ไหน?
Cron ไม่ได้ใช้เส้นทางของผู้ใช้ที่เป็น crontab และมีของตัวเองแทน มันสามารถเปลี่ยนแปลงได้อย่างง่ายดายโดยการเพิ่มPATH=/foo/barที่จุดเริ่มต้นของ crontab และวิธีแก้ปัญหาแบบคลาสสิกคือการใช้เส้นทางที่แน่นอนไปยังคำสั่งที่เรียกใช้โดย cron แต่เส้นทางที่กำหนดไว้เริ่มต้นของ cron อยู่ที่ไหน? ฉันสร้าง crontab พร้อมเนื้อหาต่อไปนี้ในระบบ Arch (cronie 1.5.1-1) และทดสอบบนกล่อง Ubuntu 16.04.3 LTS ด้วยผลลัพธ์เดียวกัน: $ crontab -l * * * * * echo "$PATH" > /home/terdon/fff ที่พิมพ์: $ cat fff /usr/bin:/bin แต่ทำไม พา ธ ทั้งระบบเริ่มต้นถูกตั้งค่าไว้/etc/profileแต่มีไดเร็กทอรีอื่น: $ grep PATH= /etc/profile PATH="/usr/local/sbin:/usr/local/bin:/usr/bin" ไม่มีอะไรเกี่ยวข้องใน/etc/environmentหรือ/etc/profile.dไฟล์อื่น ๆ …
34 cron  path 

1
อะไรคือ“ การสลับบริบทโดยสมัครใจ”?
ฉันได้รับไฟล์ไบนารีและฉันควรจะถอดรหัสรหัสผ่าน (ทำการบ้าน) นอกจากนี้ยังมีฟังก์ชั่นที่ได้รับ (ฟังก์ชั่นซึ่งเป็นส่วนหนึ่งของไฟล์ไบนารี) ฟังก์ชั่นนั้นแสดงให้เห็นว่าสตริงการป้อนข้อมูลถูกเปรียบเทียบกับอักขระรหัสผ่านที่ถูกต้องตามตัวอักษรและคืนเท็จทันทีเมื่ออักขระผิด (นั่นไม่ใช่วิธีที่ปลอดภัยในการทำฉันเดาเพราะมันถึงเวลาที่จะรั่วไหล ตัวอย่าง). แต่ครูของเราได้เพิ่มตัวจับเวลาแบบสุ่มที่ให้ผลลัพธ์ (แก้ไข / ผิด) เพื่อให้ยากขึ้นสำหรับเรา ... อย่างไรก็ตามฉันมีฉันทำมันสำเร็จแล้วด้วยวิศวกรรมย้อนกลับและได้รับรหัสผ่านที่ถูกต้อง ตอนนี้ฉันกำลังเล่นกับมันในบรรทัดคำสั่ง: /usr/bin/time -v ./program_name enter_password ด้วยคำสั่งนี้ฉันได้รับข้อมูลมากมายเช่นเวลาของระบบ, swaps, เวลาดำเนินการ .. แต่สิ่งที่น่าสนใจที่สุดสำหรับฉันคือ "การเปลี่ยนบริบทโดยสมัครใจ" เพราะอักขระที่ถูกต้องมากขึ้นของรหัสผ่านที่ฉันป้อน " ฉันเข้าใจ! ยิ่งฉันป้อนตัวละครผิดมากเท่าไหร่ฉันจะได้รับ ฉันใช้เวลาเกือบสองชั่วโมงในการถอดรหัสรหัสผ่านเพียงแค่ป้อนคำสั่งนั้นป้อนอักขระและสังเกต "สวิตช์บริบทแบบสมัครใจ" เมื่อใดก็ตามที่อักขระ ONE ถูกต้อง "การสลับบริบทแบบสมัครใจ" จะลดลงหนึ่งตัว คำถามของฉัน "สวิตช์บริบทแบบสมัครใจ" คืออะไรและทำไมพวกเขาถึงช่วยฉันถอดรหัสรหัสผ่าน

3
ไม่สามารถเพิ่มคีย์ gpg ด้วย apt-key หลังพร็อกซี
การเพิ่มคีย์ gpg ผ่านapt-keyล้มเหลวอย่างเป็นระบบเนื่องจากฉันเปลี่ยนมาใช้ Ubuntu 17.04 (ฉันสงสัยว่ามันเกี่ยวข้องกันโดยตรง) ตัวอย่างด้วยคีย์ repo ของ Spotify : $ sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys BBEBDCB318AD50EC6865090613B00F1FD2C19886 Executing: /tmp/apt-key-gpghome.wRE6z9GBF8/gpg.1.sh --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys BBEBDCB318AD50EC6865090613B00F1FD2C19886 gpg: keyserver receive failed: No keyserver available สิ่งเดียวกันถ้าฉันลบhkp://คำนำหน้า บริบท: ฉันใช้CNTLMเพื่อจัดการกับพร็อกซีขององค์กรในพื้นที่ ตัวแปร Env ถูกตั้งค่า (ใน/etc/environment): $ env | grep 3128 https_proxy=http://localhost:3128 http_proxy=http://localhost:3128 ftp_proxy=http://localhost:3128 /etc/apt/apt.confมีการกำหนดค่า ( aptคำสั่งทำงานได้ดี): …
34 debian  apt  proxy  gpg 

1
อย่างไร !! ทำงานในทุบตี?
มีประโยชน์มากเมื่อคุณลืม sudo ที่จุดเริ่มต้นของคำสั่งของคุณ!!ทำหน้าที่เหมือนนามแฝงของคำสั่งก่อนหน้า ตัวอย่าง: $ mv /very/long/path/for/a/protected/sensible/file/caution.h . (...) Permission denined $ sudo !! sudo mv /very/long/path/for(...) . [sudo] password : เราจะเรียก!!เคล็ดลับสองครั้งนั้นได้อย่างไร งานวิจัยทางอินเทอร์เน็ตนั้นยากเพราะโทเค็นนั้น มันทำงานยังไง? ฉันสงสัยลิงก์ด้วยคำสั่ง history มันถูกกำหนดไว้ที่ไหน? ฉันสามารถนิยามตัวเองได้ไหม แก้ไข: นักออกแบบเหตุการณ์ที่น่าสนใจ !!:* มันหมายถึงข้อโต้แย้งของคำสั่งก่อนหน้า ใช้กรณี: cat /a/file/to/read/with/long/path nano !!:* :p เพียงพิมพ์คำสั่งโดยไม่ต้องดำเนินการคุณจะต้องวางไว้ที่ส่วนท้ายของตัวกำหนดเหตุการณ์ $ !-5:p sudo rm /etc/fstab -f เพิ่มเติมที่นี่

4
จะลดช่องโหว่ Specter และ Meltdown บนระบบ Linux ได้อย่างไร
นักวิจัยด้านความปลอดภัยได้เผยแพร่โครงการ Project Zeroช่องโหว่ใหม่ที่เรียกว่า Specter และ Meltdown ทำให้โปรแกรมสามารถขโมยข้อมูลจากหน่วยความจำของโปรแกรมอื่น ๆ ได้ มันมีผลต่อสถาปัตยกรรม Intel, AMD และ ARM ข้อบกพร่องนี้สามารถใช้ประโยชน์จากระยะไกลได้โดยไปที่เว็บไซต์ JavaScript รายละเอียดทางเทคนิคสามารถพบได้บนเว็บไซต์ RedHat , ทีมรักษาความปลอดภัยอูบุนตู ข้อมูลรั่วไหลผ่านการโจมตีช่องทางด้านการดำเนินการเก็งกำไร (CVE-2017-5715, CVE-2017-5753, CVE-2017-5754 aka Spectre และ Meltdown) พบว่าการโจมตีช่องทางด้านใหม่ส่งผลกระทบต่อโปรเซสเซอร์ส่วนใหญ่รวมถึงโปรเซสเซอร์จาก Intel, AMD และ ARM การโจมตีช่วยให้กระบวนการผู้ใช้ที่เป็นอันตรายสามารถอ่านหน่วยความจำเคอร์เนลและรหัสที่เป็นอันตรายในแขกที่มาอ่านหน่วยความจำ เพื่อแก้ไขปัญหาจำเป็นต้องมีการอัพเดตเคอร์เนล Ubuntu และไมโครโค้ดโปรเซสเซอร์ การอัปเดตเหล่านี้จะประกาศในอนาคตเกี่ยวกับความปลอดภัยของ Ubuntu เมื่อมีให้ใช้งาน ตัวอย่างการใช้งานใน JavaScript ในฐานะที่เป็นหลักฐานพิสูจน์แนวคิดของรหัส JavaScript ที่เขียนว่าเมื่อทำงานในเบราว์เซอร์ Google Chrome อนุญาตให้ JavaScript เพื่ออ่านหน่วยความจำส่วนตัวจากกระบวนการที่มันทำงาน …

13
ฉันสามารถสร้าง * super * super-user เพื่อที่ฉันจะได้มีผู้ใช้ที่สามารถปฏิเสธการรูทได้หรือไม่?
ฉันคิดว่าอาจเป็นประโยชน์ที่จะมีผู้ใช้ที่มีสิทธิ์สูงกว่าผู้ใช้รูท คุณจะเห็นว่าฉันต้องการเก็บกิจกรรมทั้งหมดและสิทธิ์ผู้ใช้รูทที่มีอยู่เกือบทั้งหมดอย่างที่เป็นอยู่ในตอนนี้ อย่างไรก็ตามฉันต้องการความสามารถในการปฏิเสธสิทธิ์ในการรูทกรณีที่แยกได้เป็นกรณี ๆ ไป ข้อดีอย่างหนึ่งของการทำเช่นนี้จะทำให้ฉันสามารถป้องกันไม่ให้มีการติดตั้งไฟล์ที่ไม่ต้องการในระหว่างการอัพเดต นี่เป็นเพียงตัวอย่างหนึ่งของความได้เปรียบที่เป็นไปได้ เนื่องจากการอัปเดต apt-get นั้นดำเนินการโดยรูทหรือด้วยสิทธิ์ sudo apt-get จึงมีความสามารถในการแทนที่ไฟล์ที่ไม่ต้องการในระหว่างการอัพเดต หากฉันสามารถปฏิเสธสิทธิพิเศษเหล่านี้ให้กับไฟล์เหล่านี้ได้ฉันสามารถกำหนดให้เป็นลิงค์ไปยัง/dev/nullหรืออาจมีไฟล์ตัวยึดตำแหน่งว่างที่อาจมีสิทธิ์ที่จะปฏิเสธไม่ให้แทนที่ไฟล์ในระหว่างการอัปเดต นอกจากนี้ฉันไม่สามารถช่วยได้ แต่ได้รับการเตือนเกี่ยวกับบรรทัดที่ถูกกล่าวในการสัมภาษณ์กับหนึ่งในผู้สร้างอูบุนตูเมื่อชายคนนั้นพูดบางอย่างเกี่ยวกับวิธีที่ผู้ใช้เชื่อถือ "us" (อ้างอิงจาก Ubuntu devs) "เพราะเรามีราก "ซึ่งเป็นการอ้างอิงถึงวิธีการอัปเดตระบบด้วยการอนุญาตรูท เพียงแค่เปลี่ยนขั้นตอนการติดตั้งเพื่อแก้ไขปัญหานี้ไม่ใช่สิ่งที่ฉันสนใจที่นี่ ตอนนี้ความคิดของฉันมีรสชาติสำหรับความคิดที่ว่ามีอำนาจที่จะปฏิเสธการเข้าถึงรูทฉันอยากจะหาวิธีที่จะทำให้สิ่งนี้เกิดขึ้นเพียงเพื่อการทำเช่นนั้น ฉันเพิ่งคิดเกี่ยวกับเรื่องนี้และไม่ได้ใช้เวลาในความคิดจนถึงตอนนี้และฉันค่อนข้างมั่นใจว่าจะสามารถหาคำตอบได้ อย่างไรก็ตามฉันอยากรู้ว่าสิ่งนี้ได้ทำไปแล้วหรือว่านี่อาจไม่ใช่แนวคิดหรือแนวคิดใหม่ โดยทั่วไปดูเหมือนว่าควรมีวิธีที่จะมีผู้ใช้ super super ซึ่งจะได้รับอนุญาตนอกเหนือจากระบบโดยเพียงหนึ่งองศา หมายเหตุ: แม้ว่าฉันรู้สึกว่าคำตอบที่ยอมรับนั้นตรงกับเกณฑ์มากที่สุด แต่ฉันชอบคำตอบของ @CR ด้วย ฉันต้องการสร้างผู้ใช้จริงบนต้นไม้ (ฉัน) แต่ฉันเดาว่าฉันจะต้องนั่งลงวันหนึ่งเมื่อฉันมีเวลาคิดออก นอกจากนี้ฉันไม่ได้พยายามเลือกบน Ubuntu ที่นี่ ฉันจะไม่ใช้มันเป็น distro หลักของฉันถ้าฉันรู้สึกเชิงลบเกี่ยวกับเรื่องนี้
34 permissions  sudo  users  root 

4
เป็นกลุ่ม - วิธีการแทนที่หนึ่งบรรทัดใหม่ \ n ด้วยสอง \ n's
ในโปรแกรมแก้ไข vim ฉันต้องการแทนที่อักขระขึ้นบรรทัดใหม่ (\ n) ด้วยอักขระบรรทัดใหม่สองตัว (\ n \ n) โดยใช้โหมดคำสั่ง vim เนื้อหาไฟล์อินพุต: This is my first line. This is second line. คำสั่งที่ฉันพยายาม: :%s/\n/\n\n/g มันจะแทนที่สตริงด้วยอักขระที่ไม่ต้องการเช่น This is my first line.^@^@This is second line.^@^@ จากนั้นฉันลองคำสั่งต่อไปนี้ :%s/\n/\r\r/g มันทำงานอย่างถูกต้อง คุณช่วยอธิบายได้ไหมว่าทำไมมันถึงใช้ได้ดีกับคำสั่งที่สอง?

9
แก้ไขข้อความสำหรับการพิมพ์รหัส C ++
ฉันกำลังมองหาบรรณาธิการที่จะพิมพ์ (บนกระดาษ) รหัส C ++ ตอนนี้ฉันอยู่โรงเรียนวิศวกรรมและผู้สอนขอให้เราส่งรหัสบนกระดาษ เขาต้องการชื่อ + นามสกุล, หมายเลขคลาส (ที่ส่วนหัว), จำนวนหน้าที่อยู่ด้านล่างและคำสงวนไว้เป็นตัวหนาสำหรับทุกหน้า! บน Windows notepadd++ก็สามารถทำได้ด้วย แต่ฉันใช้ Linux และไม่พบ IDE หรือโปรแกรมแก้ไขข้อความที่ใช้ได้ (ผมเคยพยายามแล้วSCITE, geditและSyntaxic)
34 editors  c++  ide 

5
mv -f คืออะไร
คู่มือ GNU coreutils สำหรับmvพูดว่า: -f --force Do not prompt the user before removing a destination file. อย่างไรก็ตามดูเหมือนว่านี่จะเป็นพฤติกรรมเริ่มต้นสำหรับmvดังนั้น-fตัวเลือกที่ดูเหมือนจะฟุ่มเฟือย เช่นใน GNU Bash เวอร์ชั่น 4.3.11: $ ls -l total 0 $ touch 1 2; mv -f 1 2; ls 2 $ touch 1 2; mv 1 2; ls 2 ดูเหมือนว่าไม่น่าจะเป็นความตั้งใจของ-fธงคือการแทนที่alias mv="mv -i"เพราะมีหลายวิธีมาตรฐานของการเอาชนะนามแฝง (เช่นการใช้\mv) …
34 files  history  mv 

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