Unix & Linux

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


2
การเป็นสมาชิกกลุ่มและกระบวนการ setuid / setgid
กระบวนการที่ยกเลิกการเลื่อนระดับสิทธิ์ผ่านsetuid()และsetgid()ดูเหมือนจะไม่ได้รับความเป็นสมาชิกกลุ่มของ uid / gid ที่พวกเขาตั้งค่า ฉันมีกระบวนการเซิร์ฟเวอร์ที่ต้องดำเนินการเป็นรูทเพื่อเปิดพอร์ตสิทธิพิเศษ หลังจากนั้นจะยกเลิกการเลื่อนระดับไปเป็น uid / gid ที่ไม่มีสิทธิพิเศษเฉพาะ1 - เช่นของผู้ใช้foo(UID 73) ผู้ใช้fooเป็นสมาชิกของกลุ่มbar: > cat /etc/group | grep bar bar:x:54:foo ดังนั้นถ้าฉันเข้าสู่ระบบในฐานะfooฉันสามารถอ่านไฟล์ที่/test.txtมีคุณสมบัติเหล่านี้: > ls -l /test.txt -rw-r----- 1 root bar 10 Mar 8 16:22 /test.txt อย่างไรก็ตามโปรแกรม C ต่อไปนี้ (คอมไพล์std=gnu99) เมื่อรันรูท: #include <stdio.h> #include <fcntl.h> #include <unistd.h> int main (void) …

2
การใช้ตัวแปรสภาวะแวดล้อมในคำสั่งเชลล์แถบสถานะของ Tmux
ฉันกำลังพยายามที่จะสร้าง tmux US Eastern Time :: UTC :: Central European Timeแถบสถานะซึ่งแสดงให้เห็นว่าสามเขตเวลา: การใช้TZตัวแปรสภาพแวดล้อมทำให้dateคำสั่งแสดงเวลาในเขตเวลาที่กำหนด ฉันพยายามทำด้วยการตั้งค่า tmux.conf นี้: set -g status-right "#[fg=white]#S #I:#P #[fg=yellow]:: %d %b %Y #[fg=green]:: #(TZ=America/New_York date +%H:%M) :: #(date -u +%H:%M) UTC :: #(TZ=Europe/Belgrade date +%H:%M)" แต่ผ่านไม่ทำงานภายในของTZ=foo #(…)(ฉันได้รับเซิร์ฟเวอร์dateแทนสิ่งที่ฉันคาดไว้) ข้อเสนอแนะใด ๆ

2
จอภาพคู่พร้อมไดรเวอร์วิดีโอ 2 ตัวพร้อม xrandr 1.4
ฉันพยายามดูอัลจอคู่กับไดรเวอร์การ์ดแสดงผล 2 แบบ (i915 & nvidia) แต่อย่างที่คุณเห็น xrandr เป็นเพียงรายชื่อผู้ให้บริการ nvidia ฉันใช้ Arch Linux ฉันพยายามค้นหาไม่สำเร็จว่าxrandrจะรับรายชื่อผู้ให้บริการที่ไหน [x@epoch ~]$ xrandr --listproviders Providers: number : 1 Provider 0: id: 0x279 cap: 0x1, Source Output crtcs: 4 outputs: 6 associated providers: 0 name:NVIDIA-0 [x@epoch /etc/X11]$ sudo lshw -numeric -c video *-display description: VGA compatible controller …

2
ตัวเลือก - คำแนะนำในคำสั่งการค้นหาของ grub2 ทำอะไร
ฉันกำลังดูเอกสารsearchคำสั่งGRUB2 อย่างเป็นทางการตามที่พบในhttp://www.gnu.org/software/grub/manual/grub.html#index-search Command: search [--file|--label|--fs-uuid] [--set [var]] [--no-floppy] name Search devices by file (-f, --file), filesystem label (-l, --label), or filesystem UUID (-u, --fs-uuid). If the --set option is used, the first device found is set as the value of environment variable var. The default variable is ‘root’. The --no-floppy …
10 grub2 

2
เหตุใดจึงไม่ใช้โหมดเสริม regex เป็นค่าเริ่มต้น
ฉันกำลังใช้ sed ฉันใช้ regex ที่ถูกต้องเท่าที่ฉันจะเห็น แต่ sed ไม่ได้ทำอะไร ปรากฎว่าฉันใช้\s+ซึ่ง sed ไม่สามารถเข้าใจและเมื่อฉันเปลี่ยนไป[ ]+ใช้งานได้ ดังนั้นเพื่อสรุปฉันสร้าง regex เพื่อให้ทำงานฉันต้องหลบหนีเกือบทุกอย่างและลบ\sช่องว่างออก ดูเหมือนว่ามีโหมดที่จะหลีกเลี่ยงสิ่งเหล่านี้ทั้งหมดซึ่งเป็น-rดังนั้นฉันต้องการถาม: เหตุใดจึงไม่-rเป็นโหมดเริ่มต้นสำหรับ sed ทำไมฉันต้องไปเจอปัญหามากมายเพื่อหลบหนีทุกอย่าง? manบอกว่ามีตัวเลือก--posixและ "POSIX.2 BREs ควรได้รับการสนับสนุน" สิ่งนี้อ้างถึงอะไร โหมด NFA / DFA

2
ไม่สามารถติดตั้งระบบไฟล์กลับเป็นแบบอ่านอย่างเดียวหลังจากการอัปเกรดแพ็คเกจ
ในระบบ Debian ของฉันฉันมีของฉันพาร์ติชันบนแยกต่างหากและติดตั้ง/ read-onlyเท่านั้น/home/, /var/และ/tmp/มีความสามารถเขียนได้ ฉันได้สร้างPre-InvokeและPost-Invoke apt hookเพื่อให้aptสามารถติดตั้งระบบใหม่สำหรับการเขียนโดยอัตโนมัติเมื่อมีการติดตั้งหรืออัปเกรดแพคเกจและติดตั้งใหม่อีกครั้งread-onlyเมื่อเสร็จสิ้น: DPkg::Pre-Invoke {"mount -o remount,rw / ;}; DPkg::Post-Invoke {"mount -o remount / ;}; การตั้งค่าทั้งหมดนี้ทำงานได้ดีโดยมีข้อยกเว้นหนึ่งข้อ บางครั้งในระหว่างกระบวนการติดตั้ง / อัปเกรดบริการบางอย่างจำเป็นต้องเริ่มใหม่หรือเปิดไฟล์ใหม่ในช่วงเวลาสั้น ๆ เมื่อฉัน/ติดตั้งread-writeไฟล์เหล่านี้จะเปิดขึ้นพร้อมwriteสิทธิ์ หลังจากการติดตั้ง / อัพเกรดเสร็จสมบูรณ์แล้วฉันPost-Invokeผิดพลาดผลตอบแทนเบ็ดเพราะมันไม่สามารถ remount กลับไป/read-only มีวิธีแก้ปัญหานี้ไหม? นี่เป็นเรื่องที่น่ารำคาญมากเพราะในสถานการณ์นี้ฉันต้องรีสตาร์ทเซิร์ฟเวอร์ซึ่งไม่สามารถใช้งานได้ แก้ไข ด้านล่างนี้เป็นบันทึกการอัปเกรดแพ็คเกจล่าสุดของฉันซึ่งส่งผลให้เกิดข้อผิดพลาดที่อธิบายไว้: root@alpha# apt-get upgrade Reading package lists... Done Building dependency tree Reading state information... Done The …
10 debian  apt  readonly 

2
Vim - แม็พคำสั่งเชลล์สุดท้ายกับคีย์
มีวิธีการแมปผู้นำ -R เพื่อทำซ้ำคำสั่งสุดท้ายที่ส่งไปทุบตี? ตัวอย่างเช่นเมื่อทำงานกับไฟล์ C ฉันต้องการรวบรวมและเรียกใช้โปรแกรมจากกลุ่มโดยไม่ต้องพิมพ์:! make หรือ gcc ฉันรู้ว่าฉันสามารถผูกคำสั่งเฉพาะกับคีย์ แต่มันจะไม่ทำงานกับไฟล์ประเภทอื่น

4
รับขนาดโดยประมาณของไดเรกทอรี (รวมทั้งไฟล์และไดเรกทอรีย่อยซ้ำ ๆ )
มีวิธีที่จะได้ขนาดที่ถูกต้องอย่างรวดเร็วสำหรับไดเรกทอรี (รวมถึงไดเรกทอรีย่อยทั้งหมดซ้ำ)? ฉันไม่ต้องการขนาดของส่วนย่อยฉันแค่หมายความว่าควรรวมไว้ในรายงานซ้ำขนาดรวม หากเป็นเช่นนั้นจะทำให้มีขนาดโดยประมาณได้หรือไม่ ฉันกำลังคิดบางอย่างตามบรรทัดdfที่ให้การตอบสนองอย่างรวดเร็วสำหรับระบบไฟล์ทั้งหมด แต่คราวนี้เป็นไดเรกทอรีเฉพาะ (และเป็นไดเรกทอรีย่อย) โซลูชั่นที่ใช้duดูเหมือนจะใช้เวลานานเมื่อได้รับไดเรกทอรีประกอบด้วยหลายพันย่อย dirs
10 bash 

3
การกู้คืนข้อมูลจากฮาร์ดไดรฟ์ที่เสียหาย: "เคล็ดลับการแช่แข็ง"
ขณะนี้ฉันอยู่ในธุรกิจการกู้คืนข้อมูลจากความเสียหาย --- และกำลังจะตาย --- ฮาร์ดไดรฟ์ (ตรวจสอบคำถามนี้เพื่อรับข้อมูลพื้นหลัง ) ไดรฟ์ลดลงขณะที่ระบบกำลังทำงาน และในขณะที่ฉันพยายามจะวิ่งต่อไปอย่างโง่เขลาฉันก็testdiskเริ่มได้ยิน - สิ่งที่ฉันคิดคือ --- " คลิกแห่งความตาย " ตอนนี้ฉันได้อ่านในหลายที่เกี่ยวกับ " เคล็ดลับการแช่แข็ง " (เช่นใน AskDifferent , บน Unix SE , บน AskUbuntu ) ปมของมันเป็นดังนี้ (แต่อ่านคำแนะนำเต็ม !): วางฮาร์ดไดรฟ์ที่เสียหายไว้ในถุงแช่แข็ง ziploc เพื่อไม่ให้ความชื้นเข้ามา (ใช้ถุงสองหรือสามถุงและโปรดทราบว่าถุงนั้นไม่จำเป็นต้องมีอุณหภูมิเท่ากัน) วางฮาร์ดไดรฟ์ที่ห่อไว้ในช่องแช่แข็ง ทิ้งฮาร์ดไดรฟ์ไว้ในช่องแช่แข็งอย่างน้อย 12 ชั่วโมง จากนั้นเชื่อมต่อไดรฟ์กับคอมพิวเตอร์และเริ่มคัดลอกข้อมูล ณ จุดหนึ่งฮาร์ดไดรฟ์จะล้มเหลวอีกครั้ง เมื่อทำเช่นนั้นให้ทำซ้ำขั้นตอนจนกว่าข้อมูลทั้งหมดจะถูกคัดลอกหรือไดรฟ์ตาย (ตามโพสต์ที่ลบไปแล้วใน Harddrive ในช่องแช่แข็งที่เหมาะกับคุณหรือไม่ใน SuperUserวิธีแก้ปัญหาการแพทย์ทางเลือกสองวิธีที่จะลองก่อนที่จะถูกแช่แข็งคือ: (1) "วางฮาร์ดไดรฟ์บนพื้นผิวเรียบ …

2
ฉันสามารถตัดชื่อไฟล์ยาว ๆ ใน ls listing
ฉันมีไฟล์จำนวนมากที่มีชื่อยาวมาก กรุณามีวิธีใช้ ls -C และตัดชื่อไฟล์เพื่อรับคอลัมน์เพิ่มเติมสำหรับมุมมองโดยรวมหรือไม่ หรือมีวิธีที่ดีกว่าในการรับรายชื่อแบบย่อ

2
สิทธิ์ไดรฟ์ USB เมื่อทำการเมาท์อัตโนมัติ
ใน Debian มีปัญหาที่พบบ่อยคือคุณพยายามเสียบฮาร์ดไดรฟ์ที่จัดรูปแบบ ntfs ในรูปแบบ ntfs แล้วไม่สามารถเขียนลงในฐานะผู้ใช้ทั่วไปได้เนื่องจากไดเรกทอรีเป็นของ root เมื่อไม่นานมานี้ฉันอ่านว่าสามารถแก้ไขได้ด้วยการเพิ่มตัวเลือกuid=1000,gid=1000(หรืออะไรก็ตามที่คุณเป็น uid และ gid) วิธีนี้ช่วยแก้ปัญหาได้ แต่ดูเหมือนว่าฉันจะน่ารังเกียจนิดหน่อยเพราะถ้าคุณมีระบบผู้ใช้หลายคนไดรฟ์จะเป็นของผู้ใช้คนเดียวกันเสมอและไม่ใช่ผู้ใช้ที่เมานท์ / เข้าสู่ระบบ จากเวลาของฉันกับ Ubuntu ฉันจำได้ว่านี่ไม่ใช่ปัญหาและคุณสามารถติดตั้งไดรฟ์ NTFS (ด้วย GNOME) และพวกเขาเขียนได้โดยผู้ใช้ที่เมานท์พวกเขา ดังนั้นดูเหมือนว่า GNOME จะสามารถเมานต์ไดรฟ์ด้วยสิทธิ์ที่มอบให้แก่ผู้ใช้ที่ล็อกอินอยู่ อย่างไรก็ตามตอนนี้ฉันกำลังใช้ KDE กับ Debian jessie และฉันสงสัยว่าฉันสามารถกำหนดค่าคอมพิวเตอร์ของฉันให้เชื่อมต่อไดรฟ์ด้วยสิทธิ์ของผู้ใช้ที่มี X-session ที่ใช้งานอยู่

2
แคชรหัสผ่านคีย์ย่อย gpg ทั้งหมดในครั้งเดียว? ป้องกันความจำเป็นในการป้อนรหัสผ่าน gpg หลายรายการหรือไม่
ฉันสามารถป้อนรหัสผ่าน gpg เพียงครั้งเดียวและปลดล็อคคีย์ย่อยทั้งหมดของฉัน (การเซ็นการถอดรหัสการรับรองความถูกต้อง) ได้หรือไม่ ในตอนนี้ฉันต้องป้อนรหัสผ่าน gpg ของฉันสามครั้ง (สำหรับการเซ็นชื่อเพื่อถอดรหัสเพื่อการรับรองความถูกต้อง) สิ่งนี้ไม่สะดวก ฉันพยายามหาเชลล์สคริปต์ #!/bin/bash set -x set -e set +o history signing_key=77BB3C48 encryption_key=CE998547 tempfile="$(mktemp)" echo "test" > testfile unset passphrase || exit 1 read -sp 'Enter password. ' passphrase ; echo exec 3<<<"$passphrase" gpg2 --no-tty --use-agent --batch --yes --passphrase-fd 3 --sign-with "$signing_key" …


1
รวมการระบายสีในรูปแบบเวลาของ GNU
ฉันรู้ว่าฉันสามารถระบุรูปแบบเวลาที่กำหนดเองสำหรับlsเช่นนี้ ls -lAF --time-style="+ %Y-%b-%d %H:%M:%S" --color=always แต่ฉันต้องการสี "ลักลอบ" ในรูปแบบเวลา ตัวอย่างเช่นฉันต้องการให้ปีเป็น2014สีแดง ฉันจะทำอย่างไร ฉันได้ลองวางรหัสสี\033[0;31mไว้ด้านหน้า%Yแต่รหัสไม่ได้รับการตีความว่าเป็นสี แต่เป็นคำที่ไม่มีความหมาย
10 terminal  ls 

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