Unix & Linux

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


2
ถามรหัสผ่านในเชลล์ที่สอดคล้องกับ POSIX หรือไม่
เมื่อฉันต้องการขอรหัสผ่านในbashสคริปต์ฉันทำอย่างนั้น: read -s ... แต่เมื่อผมทำงานbashในโหมด POSIX กับshที่-sตัวเลือกที่ถูกปฏิเสธ: $ read -s sh: 1: read: Illegal option -s ฉันจะขออินพุตอย่างปลอดภัยด้วยคำสั่ง POSIX ได้อย่างไร

2
อนุญาตให้เจ้าของสร้าง & อ่านไฟล์ แต่ไม่แก้ไขหรือลบ
ฉันต้องการให้สิทธิ์ผู้ใช้ในการสร้างและอ่านไฟล์ในไดเรกทอรีเฉพาะ แต่ไม่สามารถแก้ไขหรือลบไฟล์ได้ หากผู้ใช้สามารถต่อท้ายไฟล์ที่ใช้ได้ แต่ฉันไม่ต้องการ นี่คือบน Ubuntu Linux ฉันคิดว่ามันเป็นไปไม่ได้ด้วยสิทธิ์ของไฟล์ Unix มาตรฐาน แต่อาจเป็นไปได้ที่ใช้ ACL ผู้ใช้จะเชื่อมต่อโดยใช้ SFTP เสมอดังนั้นหากมีวิธีการควบคุมสิ่งนี้ภายใน SFTP (ตรงข้ามกับสิทธิ์ของระบบปฏิบัติการ) ที่จะใช้ได้ เพื่อให้ชัดเจนอย่างยิ่งฉันต้องการสิ่งต่อไปนี้: echo hello> test # สำเร็จเนื่องจากไม่มีการทดสอบและอนุญาตให้สร้างได้ echo hello >> test # สามารถประสบความสำเร็จหรือล้มเหลวขึ้นอยู่กับว่าอนุญาตให้ผนวกท้ายได้หรือไม่ echo hello2> test # ล้มเหลวเนื่องจากมีการทดสอบอยู่แล้วและไม่อนุญาตให้แก้ไข cat test # สำเร็จเนื่องจากการอ่านได้รับอนุญาต การทดสอบ rm # ล้มเหลวเนื่องจากไม่อนุญาตให้ลบ หากคุณสงสัยว่าทำไมฉันถึงต้องการทำเช่นนี้มันจะทำให้ระบบสำรองข้อมูลของ Duplicati ทนทานต่อ Ransomware
17 linux  files  permissions  acl 

1
กระบวนการที่ล็อกอัพโดยไม่สนใจ SIGKILL นั้นทำงานได้ (ไม่ใช่ซอมบี้หรืออยู่ในโหมดสลีปที่ไม่สามารถหยุดทำงานได้) อยู่ในสถานะใด
ฉันมีกระบวนการที่หลายต่อหลายครั้งในตอนนี้หยุดการตอบสนองและดูเหมือนจะล็อคอย่างสมบูรณ์ มันไม่ตอบสนองต่อความพยายามใด ๆ ที่ strace หรือ peeking กับ gdb (gdb เพิ่งแฮงค์บน wait4 () syscall) กระบวนการนี้เป็นกระบวนการที่ทำงานได้และจะไม่รอใน syscall (/ proc / X / syscall: running) หรือในการนอนหลับแบบต่อเนื่อง (/ proc / X / สถานะ: State: R (running)) กระบวนการนี้อยู่ในสถานะใด? นี่อาจเป็นข้อผิดพลาดของเคอร์เนลในบางประเภทหรือไม่ กระบวนการเป็นสีแดงและนี่เกิดขึ้นสองสามครั้งแล้ว สิ่งเดียวที่สามารถฆ่ากระบวนการนั้นได้คือการรีบูตดูเหมือนว่า ระบบปฏิบัติการคือ Cent 7 แก้ไข: เวอร์ชันเคอร์เนลคือ 3.10.0-123.13.2.el7.x86_64 ลองอัปเดตเป็น 3.10.0-229.11.1.el7 เพื่อดูว่ามีความแตกต่างหรือไม่

3
วิธีเรียกใช้การวนซ้ำไม่สิ้นสุดในพื้นหลัง
ฉันจะเรียกใช้วนรอบไม่สิ้นสุดในพื้นหลังในขณะที่ดำเนินการสคริปต์ต่อไปได้อย่างไร ตัวอย่าง "script": while true; do something_in_the_background; done do_something_while_the_loop_goes_on_in_the_background for 1 2 3; do somethingelse; done exit 0 สิ่งนี้ (สังเกตเห็น&) ดูเหมือนว่าจะผิดพลาดทั้งระบบหลังจากนั้นครู่หนึ่ง: while true; do something_in_the_background & done do_something_while_the_loop_goes_on_in_the_background for 1 2 3; do somethingelse; done exit 0
17 bash 

2
การติดตั้งแพ็กเกจใหม่ด้วยไฟล์ที่หายไป / เสียหาย
หลังจากปิดระบบไม่สะอาดและมีสีสัน fsck ไฟล์ทั้งหมดก็หายไป ผลลัพธ์ของ 'rpm -Va' มีความยาวหลายร้อยบรรทัด (ส่วนใหญ่ไฟล์หายไป แต่ยังมีการตรวจสอบและความไม่ตรงกันอื่น ๆ ) มีวิธีง่าย ๆ ในการติดตั้งแพ็คเกจที่มีไฟล์ที่หายไปและ / หรือเสียหายหรือไม่? ระบบปฏิบัติการที่เป็นปัญหาคือ Fedora 22
17 fedora  yum  rpm  dnf 

3
วัตถุประสงค์ของการอนุญาตเช่น 0111 หรือ 0333
วัตถุประสงค์ของการอนุญาต Linux เช่น 111 หรือ 333 คือผู้ใช้สามารถดำเนินการแต่ไม่สามารถอ่านไฟล์ได้หากความสามารถในการดำเนินการไม่ได้หมายความถึงความสามารถในการอ่านโดยอัตโนมัติ

4
อินพุตมาตรฐานของโปรแกรมหนึ่งสามารถส่งผ่านเป็นอาร์กิวเมนต์ไปยังโปรแกรมอื่นได้อย่างไร
สมมติว่ามีโปรแกรมอยู่ซึ่งใช้เวลาสองข้อโต้แย้ง ไฟล์อินพุตและไฟล์เอาต์พุต จะเกิดอะไรขึ้นถ้าฉันไม่ต้องการบันทึกไฟล์เอาต์พุตนี้ลงในดิสก์ แต่จะผ่านมันไปยังstdinโปรแกรมอื่นโดยตรง มีวิธีที่จะบรรลุเป้าหมายนี้หรือไม่? คำสั่งจำนวนมากที่ฉันเจอบน Linux มีตัวเลือกให้ส่งผ่าน '-' เป็นอาร์กิวเมนต์ไฟล์เอาต์พุตซึ่งทำสิ่งที่ฉันได้ระบุไว้ด้านบน เป็นเพราะการผ่านstdinโปรแกรมเป็นอาร์กิวเมนต์เป็นไปไม่ได้? ถ้าเป็นเช่นนั้นเราจะทำอย่างไร ตัวอย่างของการใช้ภาพนี้คือ: pdftotext "C BY BRIAN W KERNIGHAN & DENNIS M RITCHIE.pdf" stdin(echo) เชลล์ที่ฉันใช้อยู่นั้นมันทุบตี

1
มันเป็นพฤติกรรมมาตรฐานสำหรับซีดีที่จะเลือกโดยอัตโนมัติเมื่อได้รับชื่อไดเรกทอรีที่ไม่สมบูรณ์?
ฉันมีสามโฟลเดอร์ที่เรียกว่าProjectA, และProjectB ProjectCเมื่อฉันtabสมบูรณ์cdไปcd ProjectและกดมันเลือกEnter ProjectCฉันพบว่านี่เป็นกรณีที่มีกรณีอื่นที่คล้ายคลึงกัน; มันเริ่มต้นที่ล่าสุดในการสั่งซื้อพจนานุกรม (แต่นี่ก็อาจมีการเปลี่ยนแปลง / เพิ่มล่าสุด) นี่เป็นพฤติกรรมเริ่มต้นที่คาดไว้สำหรับcdหรือฉันตั้งบางสิ่งบางอย่างโดยบังเอิญ ฉันใช้ OSX 10.10.3 กับทุบตี 4.3

3
จะ“ หัก” ไฟล์ชื่อ“ -” ได้อย่างไร?
ฉันสร้างไฟล์โดยใช้ชื่อ-(เช่นseq 10 > -) โดยไม่ตั้งใจ จากนั้นฉันก็ลองใช้lessดู แต่มันก็แค่แฮงค์ ฉันเข้าใจว่าสิ่งนี้เกิดขึ้นเพราะless -คาดว่าจะป้อนข้อมูลจากstdinดังนั้นจึงไม่ตีความ-ว่าเป็นชื่อไฟล์ ฉันพยายามless \-แต่มันก็ไม่ทำงานเหมือนกัน ดังนั้นมีวิธีใดบ้างที่ระบุlessว่า-เป็นไฟล์ไม่ใช่ stdin? สิ่งที่ดีที่สุดที่ฉันจะได้รับคือ: find -name '-' -exec less {} +
17 less  stdin 

5
การส่งไฟล์ผ่าน Samba ด้วยบรรทัดคำสั่ง
ฉันสงสัยว่ามีวิธีใช้ Samba เพื่อส่งรายการไปยังเครื่องไคลเอนต์ผ่านทางบรรทัดคำสั่ง (ฉันต้องส่งไฟล์จากเซิร์ฟเวอร์ Samba) ฉันรู้ว่าฉันสามารถใช้งานได้ตลอดscpแต่ก่อนอื่นฉันก็สงสัยว่ามีวิธีการทำกับ Samba หรือไม่ ขอบคุณ!

2
สัญลักษณ์ @ แสดงถึงอะไรในจุดเริ่มต้นของเส้นทางซ็อกเก็ตโดเมน unix ใน Linux
เมื่อฉันเรียกnetstat --protocol unixหรือlsof -Uผมเห็นว่าบางเส้นทางซ็อกเก็ตยูนิกซ์จะใช้ได้กับสัญลักษณ์ @ ตัวอย่างเช่น@ / tmp / dbus-qj8V39Yrpa จากนั้นเมื่อฉันเรียกใช้ls -l /tmpฉันไม่เห็นไฟล์ชื่อdbus-qj8V39Yrpa ที่นั่น คำถามคือสิ่งที่สัญลักษณ์ @ ที่เติมไว้แสดงว่าอะไร และคำถามที่เกี่ยวข้องที่สองคือ - ฉันจะหาไฟล์ซ็อกเก็ต unix ได้ที่ไหน ( @ / tmp / dbus-qj8V39Yrpa ) บนระบบไฟล์
17 linux  path  socket 

2
การเขียนไฟล์ systemd unit ด้วยพา ธ ที่ปฏิบัติการได้ที่ตั้งค่าสภาพแวดล้อม
ฉันกำลังเขียนไฟล์ systemd unit สำหรับแอปพลิเคชัน Java และฉันต้องการควบคุมเวอร์ชันของ Java ที่ใช้เพื่อเริ่มต้นทำงาน ไฟล์บริการของฉัน (แบบง่าย) คือ [Service] Type=simple EnvironmentFile=%h/Documents/apps/app/app-%i/app.cfg ExecStart=${JAVA_HOME}/bin/java ${JAVA_OPTS} -jar %h/Documents/apps/app/app-%i/myapp.jar SuccessExitStatus=143 เมื่อพยายามเริ่มมันฉันได้รับข้อผิดพลาดกลับมา Apr 28 12:43:37 rombert systemd[1613]: [/home/robert/.config/systemd/user/app@.service:7] Executable path is not absolute, ignoring: ${JAVA_HOME}/bin/java ${JAVA_OPT Apr 28 12:43:37 rombert systemd[1613]: app@1.0.0.service lacks both ExecStart= and ExecStop= setting. Refusing. ฉันรู้ว่าJAVA_HOMEตั้งไว้ถูกต้อง; ถ้าฉันเปลี่ยนExecStartบรรทัดเพื่อเริ่มต้นด้วย/usr/bin/javaจากนั้นเพิ่มสิ่งที่-DsomeOption=${JAVA_HOME}ฉันเห็นมันก็โอเค วิธีแก้ปัญหาที่ชัดเจนคือการสร้างสคริปต์ตัวตัด …
17 systemd  java 

2
ทำความเข้าใจกับตัวเลือก -exec (1) (เครื่องหมายปีกกาและเครื่องหมายบวก)
ใช้คำสั่งต่อไปนี้ใครช่วยอธิบายหน่อยได้ไหมว่าอะไรคือจุดประสงค์สำหรับการจัดฟันส่วนปลาย ({}) และเครื่องหมายบวก (+)? และคำสั่งจะทำงานแตกต่างกันอย่างไรหากถูกแยกออกจากคำสั่ง find . -type d -exec chmod 775 {} +
17 find 

3
ค้นหาคำอธิบายไฟล์ที่แชร์ "open file description"
ถ้าฉันทำ (ในเชลล์เหมือนบอร์น): exec 3> file 4>&3 5> file 6>> file ตัวอธิบายไฟล์ 3 และ 4 ตั้งแต่ 4 เป็นdup()ed จาก 3 แชร์คำอธิบายไฟล์แบบเปิดเดียวกัน (คุณสมบัติเดียวกันชดเชยแบบเดียวกันภายในไฟล์ ... ) ในขณะที่ตัวอธิบายไฟล์ 5 และ 6 ของกระบวนการนั้นอยู่ในคำอธิบายไฟล์แบบเปิดที่แตกต่างกัน(ตัวอย่างเช่นแต่ละไฟล์มีตัวชี้ในไฟล์) ขณะนี้ในlsofการส่งออกทั้งหมดที่เราเห็นคือ: zsh 21519 stephane 3w REG 254,2 0 10505865 /home/stephane/file zsh 21519 stephane 4w REG 254,2 0 10505865 /home/stephane/file zsh 21519 stephane …

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