คำถามติดแท็ก executable

บิตการอนุญาตในโหมดไฟล์ที่อนุญาตให้เรียกใช้ไฟล์เป็นโปรแกรม นอกจากนี้คำถามที่เกี่ยวข้องกับรูปแบบของไฟล์โปรแกรมและการค้นหาและเรียกใช้ไฟล์โปรแกรม

4
กรณีการใช้งานที่ถูกต้องสำหรับการอนุญาตให้ใช้ไฟล์“ เรียกใช้เท่านั้น” คืออะไร
ผมได้อ่านบน chmod และโหมดฐานแปด ฉันเห็นว่า1ทำงานได้เท่านั้น กรณีการใช้งานที่ถูกต้องสำหรับการอนุญาตให้ดำเนินการเท่านั้นคืออะไร ในการเรียกใช้ไฟล์โดยทั่วไปจะต้องการอ่านและเรียกใช้สิทธิ์ $ echo 'echo foo' > say_foo $ chmod 100 ./say_foo $ ./say_foo bash: ./say_foo: Permission denied $ chmod 500 ./say_foo $ ./say_foo foo

4
ปฏิบัติการ Linux ล้มเหลวด้วย“ ไม่พบไฟล์” แม้ว่าไฟล์จะอยู่ที่นั่นและใน PATH
ฉันต้องการเปิดใช้งานwineexecutable (เวอร์ชั่น 2.12) แต่ฉันได้รับข้อผิดพลาดต่อไปนี้ ( $= shell prompt): $ wine bash: /usr/bin/wine: No such file or directory $ /usr/bin/wine bash: /usr/bin/wine: No such file or directory $ cd /usr/bin $ ./wine bash: ./wine: No such file or directory อย่างไรก็ตามไฟล์อยู่ที่นั่น: $ which wine /usr/bin/wine ปฏิบัติการที่แน่นอนอยู่ที่นั่นและไม่มี symlink ที่ไม่ทำงาน: $ stat /usr/bin/wine File: …

2
คำสั่งระบบเช่น ls ถูกสร้างขึ้นได้อย่างไร?
ฉันมีข้อสงสัยเกี่ยวกับ * ระวัง ฉันไม่ทราบว่าไฟล์เรียกทำงานประเภทใดlsไม่ว่าจะเป็น. sh หรือ. ksh หรือระบบปฏิบัติการประเภทอื่น ๆ หากเป็นเช่นนั้นมันคืออะไร เมื่อฉันพยายามที่จะดูว่าซอร์สโค้ดของlsคำสั่งมีลักษณะอย่างไรจะแสดงสิ่งที่อ่านไม่ได้วิธีใดที่ * nix ใช้ในการสร้างไฟล์ที่อ่านไม่ได้ประเภทเหล่านี้และฉันสามารถทำให้ไฟล์ของฉันคล้ายกับไฟล์เหล่านี้ (เช่นls- ไม่สามารถอ่านได้)

1
เหตุใดคำสั่ง file จึงบอกว่า ELF ไบนารีมีไว้สำหรับ Linux 2.6.9
เมื่อใดก็ตามที่ฉันเรียกใช้ไฟล์บนไบนารี ELF ฉันจะได้รับผลลัพธ์นี้: [jonescb@localhost ~]$ file a.out a.out: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), for GNU/Linux 2.6.9, dynamically linked (uses shared libs), for GNU/Linux 2.6.9, not stripped ฉันแค่สงสัยว่ามีการเปลี่ยนแปลงอะไรใน Linux 2.6.9 ที่ไบนารีนี้ไม่สามารถทำงานบน 2.6.8 ได้? ไม่รองรับ ELF ใน Linux 2.0 หรือไม่
18 linux  executable  elf 

3
การเรียกใช้สคริปต์ sh: «การอนุญาตถูกปฏิเสธ»แม้จะมีบิตและรูทที่สามารถเรียกทำงานได้
ฉันติดตั้ง Debian ในVirtualBox (สำหรับการทดลองต่าง ๆ ซึ่งโดยปกติแล้วระบบของฉัน) และพยายามที่จะเปิดตัวสคริปต์ addon ของแขก VirtualBox ฉันเข้าสู่ระบบในฐานะ root และพยายามที่จะเปิดตัวautorun.shแต่ฉันได้รับ«การอนุญาตถูกปฏิเสธ» ls -lแสดงให้เห็นว่าสคริปต์มีสิทธิ์ดำเนินการ ขออภัยที่ฉันไม่สามารถคัดลอกผลลัพธ์ - VirtualBox ไม่มีประโยชน์อย่างแน่นอนหากไม่มี addon ไม่ว่าจะเป็นไดเรกทอรีที่ใช้ร่วมกันหรือคลิปบอร์ดที่ใช้ร่วมกันไม่ได้ แต่เพื่อให้แน่ใจว่าฉันคัดลอกสิทธิ์ด้วยมือ: #ls -l ./autorun.sh -r-xr-xr-x 1 root root 6966 Mar 26 13:56 ./autorun.sh ตอนแรกฉันคิดว่าอาจเป็นเพราะสคริปต์ดำเนินการบางอย่างที่ทำให้เกิดข้อผิดพลาด ฉันพยายามแทนที่/bin/shด้วยสิ่งที่ชอบ#/pathtorealsh/sh -xvแต่ฉันไม่ได้ผลลัพธ์ - ดูเหมือนว่าสคริปต์จะไม่สามารถดำเนินการได้ ฉันยังไม่ทราบเลยว่าอะไรจะทำให้เกิด

1
การดำเนินการสคริปต์ใน zsh - สิทธิ์ของไฟล์
ฉันสับสนเกี่ยวกับการอนุญาตให้ใช้ไฟล์ไม่ทำงานตามที่คาดไว้ อาจเป็นเพราะความคาดหวังของฉันผิด อย่างไรก็ตาม: ฉันมีไฟล์สคริปต์สำหรับความเรียบง่ายที่เรียกว่าเพียงแค่ตั้งอยู่ในs ~/binเพื่อประโยชน์ของตัวอย่างนี้ไฟล์มีเพียงบรรทัดต่อไปนี้: #!/bin/zsh echo "Test"; ง่ายมาก. ฉันนำทางไปยัง~/binไดเรกทอรีและchmodสิทธิ์ของแฟ้มของsการ400- คืออ่านอย่างเดียวสำหรับฉันเท่านั้น ไม่มีสิทธิ์ดำเนินการ ดังนั้นฉันจึงพยายามรันสคริปต์โดยป้อนเส้นทางของสิ่งนี้: % ./s zsh: permission denied: ./s จนถึงตอนนี้ดีมาก ไม่สามารถเรียกใช้ไฟล์ได้เนื่องจากการอนุญาตที่ไม่ถูกต้อง การกำหนดสิทธิ์การเข้าถึงให้เกิน500(เรียกใช้การอนุญาตที่ได้รับ) จะทำงานได้ดีเช่นกัน - ด้วยการอนุญาตเหล่านี้ไฟล์จะทำงานได้ดี: % ./s Test ทั้งหมดนี้เป็นไปตามที่คาดไว้ แต่ฉันก็chmodอนุญาตให้ย้อนกลับไปที่400(ดำเนินการอนุญาตอีกครั้ง) ลองsourceใช้ไฟล์และสิ่งนี้เกิดขึ้น: % source s Test แม้ว่าสิทธิ์จะเป็น 400สคริปต์จะดำเนินการ ดังนั้นนี่คือคำถามของฉัน: เหตุใดจึง./sล้มเหลว (เช่นควร) แต่source sดำเนินการตามปกติ สิ่งนี้ไม่ได้เป็นการทำลายวัตถุประสงค์ทั้งหมดของการอนุญาตให้ดำเนินการหรือไม่ ใน400สิทธิ์sh sและzsh sยังทำงาน ฉันแน่ใจว่าฉันกำลังทำหรือเข้าใจบางสิ่งผิดปกติอย่างน่ากลัว สามารถชี้คนออกที่ให้ฉันและอธิบายความแตกต่างระหว่าง./s, source s, …

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
เป็นไปได้อย่างไรที่จะทำการอัพเดทสดขณะที่โปรแกรมกำลังทำงานอยู่?
ฉันสงสัยว่าแอปพลิเคชันนักฆ่าเช่น Thunderbird หรือ Firefox สามารถอัปเดตผ่านตัวจัดการแพคเกจของระบบในขณะที่ยังทำงานอยู่ได้ จะเกิดอะไรขึ้นกับรหัสเก่าในขณะที่กำลังอัปเดต ฉันต้องทำอย่างไรเมื่อฉันต้องการเขียนโปรแกรม a.out ที่ปรับปรุงตัวเองในขณะที่มันกำลังทำงานอยู่?

1
ความสามารถในการใช้งานในสคริปต์โดยไม่ต้อง setcap'ing ล่ามไบนารี?
ตอนนี้ฉันกำลังใช้cap_net_bind_service MY_USERNAMEใน /etc/security/capability.conf ตอนนี้ผมก็ต้องชุดcap_net_bind_service+iล่ามภาษาสคริปต์ที่ชื่นชอบเพื่อให้สามารถที่จะเพิ่มCAP_NET_BIND_SERVICEไปที่มีประสิทธิภาพชุดผ่าน libcap [-ng] ใช้งานได้ดี แต่ฉันสงสัยว่ามีวิธีการที่จะบรรลุสิ่งเดียวกันโดยไม่ต้องตั้งค่าตัวพิมพ์ใหญ่ใด ๆ ให้เป็นล่ามไบนารี ในขณะที่มันไม่ใช่ปัญหาใหญ่ (บัญชีผู้ใช้อื่นไม่มีขีด จำกัด ดังนั้นพวกเขาจึงไม่สามารถใช้งานได้แม้จะมีการตั้งค่าบิตในตัวแปลไบนารี่) มันค่อนข้างน่ารำคาญเนื่องจากฉันต้องตั้งค่าสถานะใหม่ทุกครั้งที่ล่ามเป็น อัปเดต

4
เป็นกลุ่ม: สร้างไฟล์ด้วย + x บิต
มีวิธีใดบ้างในการตั้งค่า+xบิตของสคริปต์ขณะที่สร้าง ตัวอย่างเช่นฉันวิ่ง: vim -some_option_to_make_file_executable script.sh และหลังจากบันทึกฉันสามารถเรียกใช้ไฟล์โดยไม่ต้องย้ายใด ๆ เพิ่มเติม PS ฉันสามารถเรียกใช้chmodจากvimหรือแม้กระทั่งจากคอนโซลตัวเอง แต่มันน่ารำคาญเล็กน้อยเพราะvimแนะนำให้โหลดไฟล์ นอกจากนี้ยังเป็นเรื่องน่ารำคาญที่จะพิมพ์chmodคำสั่งทุกครั้ง PPS มันจะเป็นการดีที่จะทำให้มันขึ้นอยู่กับนามสกุลของไฟล์ (ฉันไม่ต้องการปฏิบัติการ.txt:-))

3
การเรียกใช้สคริปต์ไพ ธ อนจากเทอร์มินัลโดยไม่มีนามสกุล. py
ฉันต้องการที่จะเรียกสคริปต์หลามscript.pyจากท่าเรือโดยเพียงแค่พิมพ์สคริปต์ เป็นไปได้ไหม ถ้าเป็นเช่นนั้นได้อย่างไร ฉันรู้ว่าฉันสามารถหลีกเลี่ยงการพิมพ์python script.py ได้โดยเพิ่ม#! / usr / bin / env pythonไว้ด้านบนสุดของสคริปต์ แต่ฉันยังต้องเพิ่มคำต่อท้าย. pyเพื่อเรียกใช้สคริปต์

3
การสร้างไบนารีแบบคงที่
ฉันติดตั้งแอปพลิเคชัน [เช่น fdisk] แต่มันก็ต้องมีห้องสมุดสำหรับการดำเนินการ ฉันกำลังมองหาอรรถประโยชน์ / เครื่องมือซึ่งจะช่วยให้ฉันสร้างไบนารีแบบคงที่จากไบนารีที่ติดตั้งไว้แล้ว เพื่อให้ฉันสามารถใช้ได้ทุกที่ เครื่องมือเดียวที่เชื่อถือได้ที่ฉันพบErmineLightมาจาก ที่นี่แต่อันนี้คือเครื่องมือแบ่งปัน มีซอฟต์แวร์โอเพนซอร์ซรุ่นเดียวกันหรือไม่ EDIT fdisk เป็นเพียงตัวอย่าง ฉันใช้เวลาส่วนใหญ่กับ LFS ดังนั้นถ้าฉันต้องใช้ยูทิลิตี้ใด ๆ ฉันต้องทำตามขั้นตอนดังนี้ ดาวน์โหลดแหล่งที่มา กำหนดค่า แต่งหน้า ทำการทดสอบ ทำการติดตั้ง ดังนั้นเพื่อประหยัดเวลาฉันกำลังมองหาวิธีแก้ปัญหาที่ฉันจะสร้างไบนารีแบบคงที่จาก debian หรือจาก fedora หรือจาก distrbution อื่น ๆ ลองบน LFS และถ้ามันทำงานได้ดีหรือตามความต้องการของฉันฉันจะ ไปกับซอร์สโค้ดสำหรับการรวบรวม


1
ไฟล์ปฏิบัติการที่ชื่อ 'ทดสอบ' อยู่ใน $ PATH แต่จะไม่ทำงาน
ฉันมีไฟล์ใน $ HOME / bin (ก่อนที่คุณจะถามใช่มันอยู่ในเส้นทางของฉัน) เรียกว่าtestฉันยืนยันว่าสามารถดำเนินการได้ดีเมื่อฉันรันด้วยพา ธ เต็มไปยังไฟล์ อย่างไรก็ตามฉันได้รับปัญหาแปลก ๆ จริง ๆ เมื่อฉันไม่เรียกใช้วิธีนี้ เมื่อฉันเพิ่งรันtestในเทอร์มินัลมันไม่ทำอะไรเลยและส่งคืนทันที ฉันรู้ว่านี่ไม่ใช่ปัญหาในการค้นหาไฟล์ด้วยเหตุผลหลายประการ: ไม่มีข้อความแสดงข้อผิดพลาด โดยปกติหากไม่พบไฟล์หรือไม่สามารถดำเนินการข้อความจะถูกพิมพ์ออกมาโดยบอกว่า การรันwhich testยังคงส่งคืนพา ธ ไฟล์ที่ถูกต้อง น่าจะเป็นที่แปลกประหลาดของทั้งหมด - straceสคริปต์ที่ทำงานได้ดีเมื่อวิ่งผ่าน ฉันพยายามใช้straceเพื่อดูว่าฉันสามารถทราบได้ว่าเกิดอะไรขึ้น แต่เมื่อฉันใช้งานด้วยstraceมันทำงานได้อย่างที่คาดไว้กับปัญหา 0 ข้อ

1
“ ไม่มีไฟล์หรือไดเรกทอรีดังกล่าว” ในไฟล์ที่เรียกใช้งานได้ แต่มีไฟล์อยู่และ ldd จะรายงานไลบรารีทั้งหมดที่มีอยู่
ดังนั้นโดยคำสั่งอื่น ๆ ไฟล์ปฏิบัติการอยู่ แต่เมื่อฉันพยายามที่จะรันมันก็อ้างว่ามันไม่ได้มี มันไม่ใช่ตัวละครพิเศษในชื่อเพราะฉันเปลี่ยนชื่อมันเป็น "cat" และดูเหมือนว่าจะเป็นเลขฐานสองสำหรับสถาปัตยกรรมที่ถูกต้อง ... "ดูเหมือน" ฉันเดาว่าคำถามคืออะไรข้อผิดพลาดอื่น ๆ เลยททท. BESIDES ... ไฟล์ไม่ได้อยู่ที่นั่นเพราะเห็นได้ชัดคือ! ldd xls linux-gate.so.1 => (0xb77bc000) libQtGui.so.4 => /usr/lib/i386-linux-gnu/libQtGui.so.4 (0xb6cc2000) libpng12.so.0 => /lib/i386-linux-gnu/libpng12.so.0 (0xb6c98000) libSM.so.6 => /usr/lib/i386-linux-gnu/libSM.so.6 (0xb6c8f000) libICE.so.6 => /usr/lib/i386-linux-gnu/libICE.so.6 (0xb6c76000) libXrender.so.1 => /usr/lib/i386-linux-gnu/libXrender.so.1 (0xb6c6d000) libfreetype.so.6 => /usr/lib/i386-linux-gnu/libfreetype.so.6 (0xb6bd1000) libfontconfig.so.1 => /usr/lib/i386-linux-gnu/libfontconfig.so.1 (0xb6b9b000) libXext.so.6 => …
13 linux  executable 

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