วิธีให้การเข้าถึงสคริปต์อ่านไฟล์ในไดเรกทอรีบน Linux


0

ฉันสร้างเชลล์สคริปต์ที่ลบรายการที่ซ้ำกันในไดเรกทอรีที่กำหนด มันพิมพ์ "การเข้าถึงถูกปฏิเสธ" ตามด้วยชื่อไฟล์หากไฟล์บางอย่างไม่สามารถอ่านได้ เมื่อฉันพยายามวิ่ง ./filename (ชื่อของไฟล์เชลล์) ภายใต้ไดเรกทอรีที่แน่นอนไฟล์ทั้งหมดจะถูกพิมพ์ออกมาพร้อมกับ "ปฏิเสธการเข้าถึง" ถัดจากมัน

ได้รับอนุญาต:

drwxr-xr-x     .
drwx------ 24  ..
-rw-r--r--  1  file1.cpp
-rw-r--r--  1  file2.cpp
-rwxr-xr-x  1  file3.cpp
-rwxr-xr-x  1  file2.txt
-rw-r--r--  1  script

เอาต์พุตเมื่อฉันรันคำสั่ง ./script ภายใต้ไดเรกทอรี:

/file1.cpp: permission denied 
/file2.cpp: permission denied 
/file3.cpp: permission denied 
/file2.txt: permission denied 
/script.sh: permission denied

คำสั่ง / บรรทัดใดที่ให้ข้อความแสดงข้อผิดพลาด ผู้ใช้ของคุณได้อ่าน & amp; เขียนสิทธิ์เข้าถึงไฟล์ & amp; ไดเรกทอรี?
Xen2050

คุณตระหนักดีว่าข้อความผิดพลาดของคุณพูด /file1.cppในคำอื่น ๆ ไฟล์ในไดเรกทอรีรากไม่ได้อยู่ในไดเรกทอรีปัจจุบันหรือไม่
RalfFriedl

มันอยู่ในไดเรกทอรีปัจจุบัน ฉันใช้คำสั่ง ls เพื่อตรวจสอบ
user9081274

คำสั่งที่ฉันใช้คือ. script ภายใต้ไดเรกทอรี
user9081274

ฉันยังได้ลอง. / สคริปต์ directory1 ยังคงไม่โชคดี
user9081274

คำตอบ:


1

เป็นการยากที่จะบอกโดยไม่เห็นรหัส แต่สคริปต์ของคุณอาจทำสิ่งที่ต้องการ

cp "$file" "$dir/$file"

ที่ไหน $file ถูกตั้งค่าเป็น file1.cpp และ $dir ถูกตั้งค่าเป็นโมฆะ ดังนั้นมันจึงทำ

cp file1.cpp /file1.cpp

และแน่นอนคุณไม่ได้รับอนุญาตให้สร้าง /file1.cpp (เช่นเพื่อสร้างไฟล์ในไดเรกทอรีราก)

ดังนั้นการแก้ปัญหาจะต้องตั้ง $dir.


0

คุณไม่สามารถให้สิทธิ์การเข้าถึงสคริปต์แก่ผู้ใช้และกลุ่ม

หากผู้ใช้ที่เรียกใช้สคริปต์ไม่มีสิทธิ์เข้าถึงไฟล์ให้เรียกใช้สคริปต์ในฐานะผู้ใช้ที่มีสิทธิ์เข้าถึง

ในไดเรกทอรีให้รันคำสั่งเหล่านี้และเพิ่มผลลัพธ์ให้กับคำถาม:

id
ls -la

จากนั้นเรียกใช้สคริปต์ในแบบที่คุณเรียกใช้งานปกติและเพิ่มผลลัพธ์ของสคริปต์


โอ้ตกลงฉันรันสคริปต์ในฐานะผู้ใช้ที่สามารถเข้าถึงได้ ยังไม่มีโชค
user9081274

2
โปรดเพิ่มข้อความแสดงข้อผิดพลาดที่แน่นอนและการอนุญาตที่ถูกต้องของไฟล์และไดเรกทอรีให้กับคำถาม
RalfFriedl

ฉันควรใช้คำสั่งอะไรเพื่อรันสคริปต์ของฉัน สคริปต์ของฉันใช้ไดเรกทอรีเป็นอินพุตและแก้ไขไดเรกทอรีนั้นโดยลบรายการที่ซ้ำ ตอนนี้ฉันแค่เรียกใช้คำสั่ง. /file.sh ภายในไดเรกทอรี มันไม่ทำงาน
user9081274

/file1.cpp: สิทธิ์ถูกปฏิเสธ /file2.cpp: สิทธิ์ถูกปฏิเสธ /file3.cpp: สิทธิ์ถูกปฏิเสธ /file2.txt: สิทธิ์ถูกปฏิเสธ /script.sh: สิทธิ์ถูกปฏิเสธ
user9081274

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