Unix & Linux

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

2
ฉันกำลังติดตั้งเดสก์ท็อป Linux ใหม่ฉันจะทำให้การเข้าสู่ระบบ SSH ทำงานได้อย่างไร
นานมาแล้วฉันสร้างกุญแจคู่โดยใช้ssh-keygenและฉันใช้ssh-copy-idเพื่อเปิดใช้งานการเข้าสู่การพัฒนา VM จำนวนมากโดยไม่ต้องป้อนรหัสผ่านด้วยตนเอง ฉันได้อัปโหลดยังกุญแจสาธารณะของฉันบน GitHub, GitLab และที่คล้ายกันในการตรวจสอบไปยังที่เก็บคอมไพล์โดยใช้แทนgit@https:// ฉันจะติดตั้งเดสก์ท็อป Linux ของฉันใหม่และการเข้าสู่ระบบเหล่านี้ทำงานได้อย่างไร? สำรองและกู้คืน~/.ssh/เพียงพอหรือไม่
15 ssh 

3
ระบบคอมพิวเตอร์ (Linux) มีชื่อโฮสต์เดียวหรือไม่
hostname ใช้เพื่อแสดงชื่อ DNS ของระบบและเพื่อแสดงหรือตั้งชื่อโฮสต์หรือชื่อโดเมน NIS ระบบคอมพิวเตอร์ (Linux) มีชื่อโฮสต์เดียวหรือไม่ ในการโฮสต์เสมือนชื่อโฮสต์หลายชื่อสามารถแก้ไขให้กับไดเรกทอรีรูทต่าง ๆ ในเว็บเซิร์ฟเวอร์ หากระบบคอมพิวเตอร์ (Linux) สามารถมีชื่อโฮสต์ได้เพียงชื่อเดียวจะสามารถโฮสต์เสมือนได้อย่างไร ขอบคุณ
15 linux  hostname 

4
หากฮีปมีการกำหนดค่าเริ่มต้นเป็นศูนย์เพื่อความปลอดภัยแล้วทำไมสแต็กจึงไม่มีการกำหนดค่าเริ่มต้นเพียงอย่างเดียว
บนระบบ Debian GNU / Linux 9 ของฉันเมื่อทำการไบนารี่ สแต็กถูกกำหนดค่าเริ่มต้น แต่ ฮีปจะถูกกำหนดค่าเริ่มต้นเป็นศูนย์ ทำไม? ฉันสมมติว่า zero-initialization ส่งเสริมความปลอดภัย แต่ถ้าฮีปแล้วทำไมไม่สแต็กล่ะ? สแต็กก็เช่นกันไม่ต้องการความปลอดภัยหรือไม่? คำถามของฉันไม่เฉพาะเจาะจงกับ Debian เท่าที่ฉันรู้ ตัวอย่างรหัส C: #include <stddef.h> #include <stdlib.h> #include <stdio.h> const size_t n = 8; // -------------------------------------------------------------------- // UNINTERESTING CODE // -------------------------------------------------------------------- static void print_array( const int *const p, const size_t size, const …
15 linux  security  memory 

6
สะท้อนด้วยความงงงวย
ฉันต้องการพิมพ์ตัวแปรบางอย่างไปที่หน้าจอ แต่ฉันต้องทำให้ยุ่งเหยิงกับตัวละครสองสามตัวแรกก่อนและฉันสงสัยว่ามีคำสั่ง echo ในการทุบตีที่สามารถทำให้ตัวอักษรตัวแรกของค่าลับในขณะพิมพ์ไปยังเทอร์มินัล: echo 'secretvalue' ********lue
15 bash  security 

8
Linux shell script: รันโปรแกรมเฉพาะในกรณีที่มีอยู่ให้เพิกเฉยหากไม่มีอยู่
ฉันกำลังเขียนโปรแกรมเชลล์สคริปต์ Linuxที่จะพิมพ์แบนเนอร์สถานะในระหว่างการดำเนินการเฉพาะเมื่อfigletมีการติดตั้งเครื่องมือที่เหมาะสม(นี่คือ: เข้าถึงได้บนเส้นทางของระบบ) ตัวอย่าง: #!/usr/bin/env bash echo "foo" figlet "Starting" echo "moo" figlet "Working" echo "foo moo" figlet "Finished" ฉันต้องการสำหรับสคริปต์ของฉันในการทำงานไม่มีข้อผิดพลาดแม้เมื่อfigletจะไม่ได้ติดตั้ง สิ่งที่อาจเป็นวิธีการปฏิบัติ ?

3
ฉันจะสร้างแพ็กเก็ต UDP ได้อย่างไร
เมื่อฉันทำคำสั่ง Netcat ต่อไปนี้และดูแพ็กเก็ตด้วยWiresharkมันบอกว่าแพ็คเก็ต UDP ผิดรูปแบบ $ echo "this is a test" | nc -u 127.0.0.1 53 ในทำนองเดียวกันการใช้คำสั่งเช่น$ echo "this is a test" > /dev/udp/127.0.0.1/53สร้างข้อผิดพลาด "แพ็คเก็ตผิดรูปแบบ" ใน Wireshark คำสั่ง echo จะถูกส่ง / ส่งไปยังเซิร์ฟเวอร์ Netcat โดยไม่มีข้อผิดพลาด แต่สิ่งนี้ทำให้ฉันสงสัยว่า: เป็นไปได้หรือไม่ที่จะสร้างแพ็กเก็ต UDP ที่เหมาะสมด้วยตนเองด้วย echo หรือเครื่องมือ Unix ดั้งเดิมอื่น ๆ ? ฉันใช้ Debian และ macOS
15 linux  debian  osx  netcat  udp 

8
วิธีรับเฉพาะหมายเลขเวอร์ชันของ php
ฉันต้องการติดตั้ง php เฉพาะรุ่นบน CentOS ผลผลิตของ php -v PHP 7.1.16 (cli) (built: Mar 28 2018 13:19:29) ( NTS ) Copyright (c) 1997-2018 The PHP Group Zend Engine v3.1.0, Copyright (c) 1998-2018 Zend Technologies ฉันลองสิ่งต่อไปนี้: php -v | grep PHP | awk '{print $2}' แต่ผลลัพธ์ที่ฉันได้รับคือ: 7.1.16 (c) ฉันจะได้รับเพียง 7.1.16 ได้อย่างไร
15 php  version 

6
การใช้ / bin / sh ใน hashbang นั้นถูกต้องหรือไม่หากเชลล์เป้าหมายไม่สามารถใช้งานได้
#!/bin/shโดยทั่วไปเชลล์สคริปต์มีความคิดเห็นต่อไปนี้ที่บรรทัดแรกของไฟล์สคริปต์: จากการวิจัยที่ฉันทำมันเรียกว่า "hash bang" และมันเป็นความเห็นทั่วไป /binความคิดเห็นนี้แจ้งยูนิกซ์ว่าไฟล์นี้จะถูกดำเนินการโดยบอร์นเชลล์ภายใต้ไดเรกทอรี คำถามของฉันเริ่มต้นในจุดนั้น #!/bin/bashถึงตอนนี้ฉันไม่ได้เห็นความคิดเห็นนี้เช่น #!/bin/shมันก็มักจะ อย่างไรก็ตามการแจกแจง Ubuntu ไม่มีโปรแกรม Bourne Shell พวกเขามี Bourne Again Shell (ทุบตี) ในจุดนั้นถูกต้องหรือไม่ที่จะแสดงความคิดเห็น#!/bin/shในเชลล์สคริปต์ที่เขียนในการแจกแจงของ Ubuntu?

4
การใช้นามแฝงการวางระเบิดในระดับโลกจะป้องกันไม่ให้มีการดำเนินการหรือไม่
ถ้าคุณจะตั้งทั่วโลก alias ':(){ :|:& };:'='echo fork bomb averted' นั่นจะเป็นกลยุทธ์ด้านความปลอดภัยที่มีประสิทธิภาพเพื่อหลีกเลี่ยงการประหารชีวิต Bash fork หรือจะมีวิธีในการดำเนินการหรือไม่? ฉันคิดว่าคำถามเป็นเงินสดออกไป: มีวิธีดำเนินการคำสั่งเมื่อมันเป็นนามแฝงกับสิ่งอื่นหรือไม่?
15 bash  security  alias 

7
ฉันจะตรวจสอบว่าไฟล์สามารถสร้างหรือตัดทอน / เขียนทับในทุบตีได้อย่างไร?
ผู้ใช้เรียกสคริปต์ของฉันกับเส้นทางของไฟล์ที่จะได้รับการอย่างใดอย่างหนึ่งจะสร้างหรือเขียนทับในบางจุดในสคริปต์เหมือนหรือfoo.sh file.txtfoo.sh dir/file.txt พฤติกรรมการสร้างหรือเขียนทับเป็นเหมือนข้อกำหนดสำหรับการวางไฟล์ทางด้านขวาของ>โอเปอเรเตอร์เอาท์พุทหรือส่งต่อเป็นอาร์กิวเมนต์ไปที่tee(อันที่จริงการส่งเป็นอาร์กิวเมนต์เพื่อteeเป็นสิ่งที่ฉันกำลังทำอยู่ ) ก่อนที่ฉันจะเข้าไปในความกล้าของสคริปต์ฉันต้องการตรวจสอบอย่างสมเหตุสมผลว่าไฟล์สามารถสร้าง / เขียนทับได้ แต่ไม่ได้สร้างจริง การตรวจสอบนี้ไม่จำเป็นต้องสมบูรณ์แบบและใช่ฉันรู้ว่าสถานการณ์สามารถเปลี่ยนแปลงได้ระหว่างการตรวจสอบและจุดที่ไฟล์ถูกเขียนจริง - แต่ที่นี่ฉันโอเคด้วยวิธีแก้ไขปัญหาความพยายามที่ดีที่สุดเพื่อให้ฉันสามารถประกันตัวได้เร็ว ในกรณีที่เส้นทางของไฟล์ไม่ถูกต้อง ตัวอย่างของสาเหตุที่ไฟล์ไม่สามารถสร้างได้: ไฟล์มีองค์ประกอบไดเรกทอรีเช่นdir/file.txtแต่dirไม่มีไดเรกทอรี ผู้ใช้ไม่มีสิทธิ์ในการเขียนในไดเรกทอรีที่ระบุ (หรือ CWD หากไม่มีการระบุไดเรกทอรี ใช่ฉันรู้ว่าการตรวจสอบการอนุญาต "ล่วงหน้า" ไม่ใช่The UNIX Way ™แต่ฉันควรลองใช้งานและขอการให้อภัยในภายหลัง ในสคริปต์เฉพาะของฉันสิ่งนี้นำไปสู่ประสบการณ์การใช้งานที่ไม่ดีและฉันไม่สามารถเปลี่ยนองค์ประกอบที่รับผิดชอบได้

3
ทำให้ทุกกระบวนการของผู้ใช้ที่กำหนดสามารถฆ่าได้โดยใครก็ได้
บนเซิร์ฟเวอร์ที่ใช้ร่วมกันฉันต้องการให้ผู้ใช้ที่มีระดับความสำคัญต่ำมาก ๆ ต้องใช้ทรัพยากรเมื่อใดก็ตามที่ผู้ใช้รายอื่น (ที่ไม่มีสิทธิ์รูท) ต้องการทรัพยากรพวกเขาสามารถฆ่ากระบวนการใด ๆ ของผู้ใช้ที่มีลำดับความสำคัญต่ำ เป็นไปได้ไหมที่จะปล่อยให้เป็นอย่างนั้น?

1
ผิดหรือเปล่าที่คิดว่า“ memfd” เป็น“ กระบวนการที่เป็นเจ้าของไฟล์”
https://dvdhrm.wordpress.com/2014/06/10/memfd_create2/ ในทางทฤษฎีคุณสามารถบรรลุ [ memfd_create()] พฤติกรรมโดยไม่ต้องแนะนำ syscalls ใหม่เช่นนี้ int fd = open("/tmp", O_RDWR | O_TMPFILE | O_EXCL, S_IRWXU); (หมายเหตุเพื่อรับประกัน tmpfs มากขึ้นที่นี่เราสามารถใช้ " /dev/shm" แทน " /tmp") ดังนั้นคำถามที่สำคัญที่สุดคือทำไมเราถึงต้องการวิธีที่สาม? [ ... ] หน่วยความจำสำรองจะถูกประมวลผลโดยกระบวนการที่เป็นเจ้าของไฟล์และไม่อยู่ภายใต้การเมาต์โควต้า ฉันคิดถูกแล้วว่าส่วนแรกของประโยคนี้ไม่สามารถพึ่งพาได้ รหัสmemfd_create () มีการใช้งานอย่างแท้จริงว่าเป็น " ไฟล์ที่ไม่เชื่อมโยงอยู่ใน [a] tmpfs ซึ่งต้องเป็นเคอร์เนลภายใน " การติดตามรหัสฉันเข้าใจว่ามันไม่ได้มีการใช้การตรวจสอบ LSM แตกต่างกันนอกจากนี้ memfds ยังถูกสร้างขึ้นเพื่อรองรับ "แมวน้ำ" เนื่องจากโพสต์บล็อกอธิบายต่อไป อย่างไรก็ตามฉันสงสัยอย่างมากว่า memfds มีสัดส่วนแตกต่างจาก …

4
ทัชแพด Lenovo X1 Carbon Gen.6 (2018) และปัญหา trackpoint กับ linux
ฉันมีปัญหาในการทำให้ทัชแพดทำงาน มันไม่ตรวจจับความเคลื่อนไหวหรือการคลิกส่วนใหญ่และจะ "ตื่นขึ้น" เป็นระยะ ๆ และตอบสนองต่อ ~ หนึ่งวินาทีแล้วหยุด เช่นเดียวกับ trackpoint ฉันได้ลอง Fedora (27), Mint และ Ubuntu (17.10) แล้วและปัญหาก็เหมือนกันในทุกรุ่น ทุกอย่างที่ตามมาคือ wrt Ubuntu 17.10 hwinfo จะช่วยให้ Unique ID: AH6Q.Y_f5kDtfqz2 ทัชแพดไม่ปรากฏขึ้นในxinput: (มันทำในมิ้นท์ แต่ปัญหาก็มีอยู่ที่นั่น) ใช้libinput debug-eventsฉันได้รับ: (...) -event5 DEVICE_ADDED SynPS/2 Synaptics TouchPad seat0 default group9 cap:pg size 70x50 (...) (When swiping around on the …
15 ubuntu  touchpad 

2
เครื่องหมายคำพูดคู่ในทุบตีจับคู่กันอย่างไร
GNU bash 4.3.48ฉันใช้ พิจารณาสองคำสั่งต่อไปนี้ที่แตกต่างกันโดยเครื่องหมายดอลลาร์เดียวเท่านั้น คำสั่ง 1: echo "(echo " * ")" คำสั่ง 2: echo "$(echo " * ")" ผลลัพธ์ของพวกเขาคือตามลำดับ (echo test.txt ppcg.sh ) และ * เห็นได้ชัดในกรณีแรก*คือก้อนกลมซึ่งหมายความว่าเครื่องหมายอัญประกาศแรกไปพร้อมกับที่สองในการสร้างคู่และที่สามและสี่ในรูปแบบคู่อื่น ในกรณีที่สอง*ไม่ได้ถูกทำให้กลมและมีช่องว่างพิเศษสองช่องในช่องสัญญาณออกหนึ่งช่องก่อนหน้าเครื่องหมายดอกจันและช่องว่างด้านหลังหมายความว่าเครื่องหมายคำพูดที่สองจะขึ้นกับช่องที่สามและช่องแรกจะไปกับช่องที่สี่ มีกรณีอื่นนอกเหนือจากการ$()ก่อสร้างที่มีเครื่องหมายอัญประกาศไม่ตรงกับอันถัดไป แต่ซ้อนกันแทน? พฤติกรรมนี้ได้รับการบันทึกไว้อย่างดีหรือไม่และถ้าใช่ฉันจะหาเอกสารที่เกี่ยวข้องได้จากที่ใด

3
อะไรคือสาเหตุที่ทำให้เมล็ดลีนุกซ์รุ่นเก่าไม่ได้รับสิทธิพิเศษ?
ทำไมนักพัฒนาลีนุกซ์คนแรกเลือกที่จะใช้เคอร์เนลที่ไม่ได้รับสิทธิพิเศษ? มันคือการบันทึกการประสาน? เท่าที่ฉันรู้ลีนุกซ์ได้รับการพัฒนาในช่วงต้นยุค 90 เมื่อพีซีมีหน่วยประมวลผลเดียว เคอร์เนลที่ไม่ได้รับการยกเว้นมีประโยชน์อะไรบ้างในพีซีดังกล่าว แต่ทำไมข้อดีของโปรเซสเซอร์แบบมัลติคอร์จึงลดลง?

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