Unix & Linux

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

1
ปิดการใช้งานโมดูลเคอร์เนลซึ่งรวบรวมในเคอร์เนล (ไม่โหลด)
เซิร์ฟเวอร์ของฉันมีการ์ดเครือข่ายออนบอร์ด 10-Gbit สองใบและสองใบ ฉันต้องปิดการใช้งานการ์ดเครือข่าย 1-Gbit อย่างสมบูรณ์เพื่อที่ifconfig -aจะไม่แสดง การ์ดเครือข่ายใช้โมดูลเคอร์เนลที่แตกต่างกัน การใช้ 10 กิกะบิตและการใช้ixgbe 1 Gbitigb 01:00.1 Ethernet controller: Intel Corporation 82599ES 10-Gigabit SFI/SFP+ Network Connection (rev 01) Subsystem: Dell Ethernet 10G 4P X520/I350 rNDC Kernel driver in use: ixgbe 05:00.1 Ethernet controller: Intel Corporation I350 Gigabit Network Connection (rev 01) Subsystem: Dell …

3
การตั้งค่า sudo แบบไม่ใช้รหัสผ่านบน Linux ดิสทริบิวชัน
ฉันเพิ่งตั้งค่าทั้งระบบ Fedora 28 และ Ubuntu 18.04 และต้องการกำหนดค่าบัญชีผู้ใช้หลักของฉันทั้งสองเพื่อให้ฉันสามารถเรียกใช้sudoคำสั่งโดยไม่ต้องใส่รหัสผ่าน ฉันจะทำสิ่งนี้ในระบบที่เกี่ยวข้องได้อย่างไร
18 linux  sudo  password 

5
ระวิงหมายถึงอะไรสำหรับการพิมพ์?
มาร์คเขียนความคิดเห็นสำหรับฉัน ฉันไม่รู้ว่าจะทำอย่างไรให้ถ้วยไม่ใช่สปูลนั่นคือวิธีทำให้คำสั่ง lpr จบการทำงานหลังจากที่ไดรเวอร์เครื่องพิมพ์ทำงานเท่านั้น "สปูล" สำหรับการพิมพ์หมายถึงอะไร Google บอกว่ามันเป็นคำกริยาหมายถึง "ส่ง (ข้อมูลที่มีไว้สำหรับการพิมพ์หรือการประมวลผลบนอุปกรณ์ต่อพ่วง) ไปยังร้านค้าระดับกลาง" อะไรคือร้านค้าระดับกลางที่สปูลการพิมพ์แสดงให้เห็นเช่นเมื่อพิมพ์โดยlprคำสั่ง ดูเหมือนว่ามาร์คจะเกี่ยวข้องกับความหมายของสปูลด้วยการบล็อก แต่ฉันไม่สามารถหาคำตอบได้จากการดูคำจำกัดความของ Google ขอบคุณ
18 printing  cups  lpr 

1
GitKraken ไม่เริ่มทำงานอีกต่อไปบน Ubuntu 18.04
เมื่อฉันเปิด Ubuntu เมื่อวันที่ 18.04 และต้องการเริ่ม GitKraken มันไม่ทำงาน หลังจากฉันคลิกที่ไอคอนของมันฉันเห็นว่ากระบวนการพยายามเริ่มต้นที่มุมซ้ายบน (ถัดจาก "กิจกรรม") แต่หลังจากผ่านไปไม่กี่วินาทีกระบวนการดูเหมือนจะตายและไม่มีอะไรเกิดขึ้น การพยายามเรียกใช้ GitKraken จากคอนโซลล้มเหลวด้วยข้อความสองข้อความต่อไปนี้: /snap/gitkraken/58/bin/desktop-launch: line 23: $HOME/.config/user-dirs.dirs: Permission denied ln: failed to create symbolic link '$HOME/snap/gitkraken/58/.config/gtk-2.0/gtkfilechooser.ini': File exists น่าเสียดายทักษะ Linux ของฉันมี จำกัด เกินไปที่จะแก้ปัญหานี้ สิ่งเดียวที่ฉันได้ลองก็chmod 777 $HOME/.config/user-dirs.dirsเพราะPermossion deniedแต่นั่นก็ไม่ได้ช่วยอะไร แก้ไข: เป็น terdon แนะนำในความคิดเห็นของเขาฉันได้ทำls -ld ~/.config/user-dirs.dirsและนี่คือผลลัพธ์: -rwxrwxrwx 1 myusername myusername 633 Mai …


1
รายชื่อไดเรกทอรีไม่ได้เรียงอย่างเต็มที่
ฉันมีรายการไดเรกทอรีต่อไปนี้ในระบบ Debian Linux อย่างไรก็ตามสิ่งหนึ่งที่แปลกก็คือไฟล์ populate.sql ดูเหมือนจะไม่ได้เรียงกับส่วนที่เหลือ -rw-r--r-- 1 user1 user1 10004 Jul 28 13:16 populate2.sql -rw-r--r-- 1 user1 user1 10244 Jul 28 13:16 populate3.sql -rw-r--r-- 1 user1 user1 10359 Jul 28 13:16 populate4.sql -rw-r--r-- 1 user1 user1 11618 Jul 28 13:16 populate5.sql -rw-r--r-- 1 user1 user1 11654 Jul 28 13:17 …

3
fakeroot ไม่ได้ละเมิดความปลอดภัยใน Linux อย่างไร
หลังจากอ่านคำตอบที่ดีงามจากคำถามนี้ฉันยังคงคลุมเครือว่าทำไมคุณถึงอยากจะแกล้งทำเป็นว่าคุณเป็นคนรูทโดยไม่ได้รับผลประโยชน์ใด ๆ จากการเป็นคนรูท จนถึงตอนนี้สิ่งที่ฉันสามารถรวบรวมได้คือ fakeroot ถูกใช้เพื่อให้ความเป็นเจ้าของไฟล์ที่ต้องรูทเมื่อ unzip / tar'ed คำถามของฉันคือทำไมคุณไม่ทำอย่างนั้นกับ chown? การสนทนาของ Google Groups ที่นี่ชี้ให้เห็นว่าคุณต้องมี fakeroot เพื่อรวบรวมเคอร์เนล Debian (ถ้าคุณต้องการที่จะทำจากผู้ใช้ที่ไม่มีสิทธิ์) ความคิดเห็นของฉันคือเหตุผลที่คุณจำเป็นต้องรูทเพื่อรวบรวมอาจเป็นเพราะการอ่านไม่ได้ตั้งค่าการอนุญาตสำหรับผู้ใช้รายอื่น หากเป็นเช่นนั้นการละเมิดความปลอดภัยที่ fakeroot อนุญาตสำหรับการรวบรวม (ซึ่งหมายความว่า gcc สามารถอ่านไฟล์ที่เป็นรูทได้) คำตอบนี้ที่นี่อธิบายว่าการเรียกระบบที่เกิดขึ้นจริงกับ uid / gid จริงของผู้ใช้ดังนั้นอีกครั้งที่ fakeroot ช่วยได้ที่ไหน fakeroot หยุดการเพิ่มระดับสิทธิพิเศษที่ไม่พึงประสงค์บน Linux อย่างไร หาก fakeroot สามารถหลอก tar ให้สร้างไฟล์ที่ root เป็นเจ้าของได้ทำไมไม่ทำอะไรที่คล้ายกับ SUID ล่ะ จากสิ่งที่ฉันได้รวบรวม fakeroot จะมีประโยชน์เมื่อคุณต้องการเปลี่ยนเจ้าของไฟล์แพ็คเกจใด ๆ …
18 linux  chown  fakeroot 

4
“ เรียกใช้คำสั่งใด ๆ ซึ่งจะส่งผ่านข้อมูลที่ไม่น่าเชื่อถือไปยังคำสั่งที่ตีความข้อโต้แย้งเป็นคำสั่ง”
จากคู่มือของ findutils: ตัวอย่างเช่นการสร้างเช่นสองคำสั่งเหล่านี้ # risky find -exec sh -c "something {}" \; find -execdir sh -c "something {}" \; อันตรายมาก เหตุผลนี้คือ '{}' ถูกขยายเป็นชื่อไฟล์ซึ่งอาจมีเครื่องหมายอัฒภาคหรืออักขระอื่น ๆ ที่พิเศษสำหรับเชลล์ หากตัวอย่างมีคนสร้างไฟล์ /tmp/foo; rm -rf $HOMEคำสั่งสองคำสั่งด้านบนสามารถลบโฮมไดเร็กตอรี่ของใครบางคนได้ ดังนั้นด้วยเหตุนี้จึงไม่เรียกใช้คำสั่งใด ๆ ซึ่งจะส่งผ่านข้อมูลที่ไม่น่าเชื่อถือ (เช่นชื่อของไฟล์ les) ไปยังคำสั่งที่ตีความอาร์กิวเมนต์เป็นคำสั่งที่จะตีความเพิ่มเติม (เช่น 'sh') ในกรณีของเชลล์มีวิธีแก้ไขปัญหาที่ฉลาดสำหรับปัญหานี้: # safer find -exec sh -c 'something "$@"' sh {} \; …
18 shell 

1
bash เปลี่ยนพฤติกรรมขึ้นอยู่กับค่าของตัวแปร“ IFS”
เมื่อฉันตั้งค่าIFSตัวแปรเป็นช่องว่างให้bashถือว่าหลายช่องว่างเป็นหนึ่งช่องว่าง ( myprogramเป็นโปรแกรมที่พิมพ์อาร์กิวเมนต์บรรทัดคำสั่งที่ได้รับ): IFS=" " x="hello hi world" ./myprogram $x argv[1] = hello argv[2] = hi argv[3] = world แต่เมื่อฉันตั้งค่าIFSตัวแปรเป็นเครื่องหมายจุลภาคbashไม่ถือว่าเครื่องหมายจุลภาคหลายรายการเป็นเครื่องหมายจุลภาคเดียว: IFS="," x="hello,,,hi,,,world" ./myprogram $x argv[1] = hello argv[2] = argv[3] = argv[4] = hi argv[5] = argv[6] = argv[7] = world ทำไมถึงเป็นอย่างนั้น?
18 bash  shell 

1
หาก suid bit ไม่มีผลกระทบกับไดเร็กทอรีและ sticky bit ไม่มีผลกับไฟล์ทำไมถึงไม่รวมกันเป็นหนึ่งบิต
สิ่งนี้จะช่วยประหยัดหนึ่งบิตต่อไฟล์หรือมีช่องว่างภายในที่จำเป็นต้องใช้ต่อไปหรือไม่? และแม้ว่าจะมีช่องว่างภายในทำไมไม่รวมเข้าด้วยกันและใช้บิตพิเศษสำหรับคุณลักษณะใหม่

5
หน้าจอหรือคล้ายกันสำหรับการเชื่อมต่อ SSH ที่ไม่ต่อเนื่องโดยอัตโนมัติ
ฉันมักจะต้องเชื่อมต่อกับเซิร์ฟเวอร์ผ่าน ssh ในสภาพแวดล้อม wifi ที่ไม่น่าเชื่อถือ บนเซิร์ฟเวอร์ฉันรันหน้าจอดังนั้นหากฉันถูกตัดการเชื่อมต่อฉันสามารถเชื่อมต่อและกลับมาใช้งานเซสชันหน้าจอต่อและรับตำแหน่งที่ฉันค้างไว้ได้ แต่การสูญเสียการเชื่อมต่อยังคงเป็นช่วงเวลาสำคัญ: ถ้าการเชื่อมต่อหลุดขณะที่ฉัน อยู่บนเซิร์ฟเวอร์หน้าต่างเทอร์มินัลมีแนวโน้มที่จะหยุด ฉันต้องฆ่าแท็บนั้นเปิดแท็บใหม่ไปที่เซิร์ฟเวอร์อีกครั้งแล้วกลับมาใช้งานหน้าจอต่อ ฉันลองสิ่งนี้กับหน้าจอที่ทำงานอยู่บนเซิร์ฟเวอร์และหน้าจอในเครื่อง ไม่ว่าจะด้วยวิธีใดก็จะหยุดเมื่อการเชื่อมต่อหลุดออก มีวิธีใดบ้างที่ฉันสามารถมีบางสิ่งที่คล้ายกับหน้าจอหรืออาจตรวจสอบตัวเองซึ่งจะพยายามเชื่อมต่อใหม่และทำให้เซสชันทำงานต่อไปโดยอัตโนมัติดังนั้นฉันจึงไม่ต้องทำการเชื่อมต่อใหม่ด้วยตนเอง บ่อยครั้งเมื่อฉันขาดการเชื่อมต่อฉันคิดว่ามันเป็นเพียงช่วงเวลาสั้น ๆ - อาจน้อยกว่าหนึ่งวินาที ฉันใช้ Ubuntu 14.04 LTS รุ่น MATE ขอบคุณ

2
ทำความเข้าใจกับ `echo $ ((0x63)) '
echo $((0x63))ผมกำลังมองหาวิธีการแปลงเลขฐานสิบหกผ่านบรรทัดคำสั่งและพบว่ามีวิธีที่ง่ายมาก มันใช้งานได้ดี แต่ฉันสับสนเล็กน้อยกับสิ่งที่เกิดขึ้นที่นี่ ฉันรู้ว่า$(...)ปกติจะเป็น sub-shell โดยที่เนื้อหาจะถูกประเมินก่อนคำสั่ง outer มันยังเป็น sub-shell ในสถานการณ์นี้หรือไม่? ฉันไม่คิดว่าจะหมายถึงว่า sub-shell นั้นเพิ่งจะประเมิน(0x63)ว่าไม่ใช่คำสั่ง บางคนสามารถทำลายคำสั่งให้ฉันได้หรือไม่?
18 bash 

5
ฉันจะรับเฉพาะ PID ที่ไม่มีข้อมูลเพิ่มเติมใด ๆ ของกระบวนการที่ทำงานบนพอร์ต 3000 ได้อย่างไร
ฉันใช้ CentOS 7 ฉันต้องการรับ PID (ถ้ามี) ของกระบวนการที่ทำงานบนพอร์ต 3000 ฉันต้องการรับ PID นี้เพื่อวัตถุประสงค์ในการบันทึกเป็นตัวแปรในเชลล์สคริปต์ จนถึงตอนนี้ฉันมี [rails@server proddir]$ sudo ss -lptn 'sport = :3000' State Recv-Q Send-Q Local Address:Port Peer Address:Port Cannot open netlink socket: Protocol not supported LISTEN 0 0 *:3000 *:* users:(("ruby",pid=4861,fd=7),("ruby",pid=4857,fd=7),("ruby",pid=4855,fd=7),("ruby",pid=4851,fd=7),("ruby",pid=4843,fd=7)) แต่ฉันไม่สามารถหาวิธีที่จะแยก PID ทั้งหมดได้ด้วยตัวเองโดยไม่มีข้อมูลเพิ่มเติมทั้งหมดนี้

3
แอพ Mac สามารถติดตามตำแหน่งของไฟล์ได้อย่างไร
ฉันสังเกตพฤติกรรมเช่นนี้ใน Mac ของฉัน: เปิด PDF ด้วย PDF Expert ทำการเปลี่ยนแปลงไฟล์ย้ายไฟล์ใน Finder บันทึกใน PDF Expert และมันจะถูกบันทึกอย่างถูกต้องไปยังสถานที่ใหม่ เปิดเปลือกในไดเรกทอรีเหมือน~/fooถังขยะไดเรกทอรีที่มี app ~/.Trash/fooอื่นและรหัสผ่านของเปลือกผลได้อย่างถูกต้อง เกิดอะไรขึ้นภายใต้ประทุน? กรณีเหล่านี้ดูเหมือนจะบ่งบอกว่าแอพไม่ได้มีแค่พา ธ ที่สมบูรณ์ของไฟล์เช่น emacs (ฉันเหมาะสมกับสิ่งนี้หรือไม่) หรือเป็นกลไกที่แตกต่างอย่างสิ้นเชิง?
18 files  filesystems  osx 

3
เหตุใดตัวเลือกในตัวแปรที่ยกมาจึงล้มเหลว แต่ทำงานเมื่อไม่ได้อ้างอิง
ฉันอ่านเกี่ยวกับว่าฉันควรอ้างอิงตัวแปรใน bash เช่น "$ foo" แทนที่จะเป็น $ foo อย่างไรก็ตามในขณะที่เขียนสคริปต์ฉันพบกรณีที่ใช้ได้โดยไม่ต้องใส่เครื่องหมายคำพูด แต่ไม่ใช่กับพวกเขา: wget_options='--mirror --no-host-directories' local_root="$1" # ./testdir recieved from command line remote_root="$2" # ftp://XXX recieved from command line relative_path="$3" # /XXX received from command line อันนี้ใช้ได้ผล: wget $wget_options --directory_prefix="$local_root" "$remote_root$relative_path" อันนี้ไม่ (บันทึกคำพูดคู่ aroung $ wget_options): wget "$wget_options" --directory_prefix="$local_root" "$remote_root$relative_path" อะไรคือสาเหตุของสิ่งนี้? บรรทัดแรกเป็นเวอร์ชั่นที่ดี; หรือฉันควรสงสัยว่ามีข้อผิดพลาดที่ซ่อนอยู่ที่ไหนสักแห่งที่ทำให้เกิดพฤติกรรมนี้? …

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