cp - ไม่สามารถสร้างไฟล์ปกติ: สิทธิ์ถูกปฏิเสธ


23

ฉันต้องการคัดลอก/lib/udevแต่ให้ข้อผิดพลาด

cp -f /tmp/ok_pcscd_hotplug.sh /lib/udev

cp:cannot create regular file /lib/udev/ok_pcscd_hotplug : Permission denied

ฉันหยั่งราก แต่ไม่เข้าใจ ฉันควรทำอย่างไร


ในกรณีของฉันเมื่อฉันต้องการคัดลอกบางอย่างลงใน exFAT มันล้มเหลวในแต่ละไฟล์ที่มี "|" ในชื่อไฟล์
neverMind9

คำตอบ:


24

ตรวจสอบว่าคุณเป็น superuser จริงๆด้วย:

whoami

หากเอาต์พุตคือrootคุณเป็น superuser และคุณสามารถทำสำเนาไฟล์ด้วย:

cp -f /tmp/ok_pcscd_hotplug.sh /lib/udev/.

มิฉะนั้นคุณต้องใช้sudo:

sudo cp -f /tmp/ok_pcscd_hotplug.sh /lib/udev/.

หากคุณยังไม่สามารถเขียนไปยังไดเรกทอรีได้อาจเป็นไปได้ว่า:

  1. ไดเรกทอรีเปิดใช้งานการตั้งค่าสถานะที่ไม่เปลี่ยนรูป lsattrตรวจสอบกับ
  2. ไดเรกทอรีถูกเมาท์ด้วยสิทธิ์แบบอ่านอย่างเดียว: พิมพ์เทอร์มินัล:

    cat /proc/mounts(หรือmountหรือcat /etc/mtab)

    และตรวจสอบผลลัพธ์หากไดเร็กทอรีนั้นถูกเมาท์แบบอ่านอย่างเดียว

หากคุณอยู่ในกรณีแรกให้เปลี่ยนแอตทริบิวต์ไดเรกทอรีด้วยchattr;

  • ลบการตั้งค่าสถานะที่ไม่เปลี่ยนรูปแบบในไฟล์หรือไดเรกทอรี chattr -i <file/dir>
  • การเพิ่มค่าสถานะที่ไม่เปลี่ยนรูปแบบในไฟล์หรือไดเรกทอรีอีกครั้ง chattr +i <file/dir>

/etc/fstabถ้าคุณอยู่ในกรณีหลังแก้ไขไฟล์


whoami - เอาท์พุทรูทฉันลอง cp -f และ sudo cp -f แต่ให้ข้อผิดพลาดอีกครั้ง
user278122

ฉันทำการเปลี่ยนแปลงเล็กน้อยกับคำตอบของฉัน: ฉันคัดลอกคำสั่งจากคำถามของคุณ แต่มีข้อผิดพลาด: คำสั่งตามที่คุณเขียนมันจะเขียนทับ udev คุณต้องเพิ่ม/.ที่ส่วนท้ายของคำสั่งเพื่อคัดลอกไฟล์ใน ไดเรกทอรี
girardengo

ฉันพยายาม: cp -f /tmp/ok_pcscd_hotplug.sh / lib / udev / cp -f /tmp/ok_pcscd_hotplug.sh / lib / udev / cp /tmp/ok_pcscd_hotplug.sh / lib / udev ฉันไม่เข้าใจ, ฉัน root แต่ไม่คัดลอกที่มีปัญหา
user278122

ฉันแก้ไขคำตอบโพสต์ของฉันในคำถามของคุณนอกจากนี้ยังส่งออกของmountและlsattr /lib/
Girardengo

เมาท์ / lib / - เมานต์: ไม่พบ / lib / in / etc / fstab หรือ / etc / mtab lsattr / lib / - Inapppropriate ioctl สำหรับอุปกรณ์ในขณะที่อ่านแฟล็กบนเอาต์พุต lib / filename สำหรับทุกไฟล์
user278122

3

มันไม่จำเป็นทุกครั้งที่คุณจำเป็นต้องรูทเพื่อจุดประสงค์นี้ดังนั้นหากคุณต้องการให้ผู้ใช้รูทใช้งานได้ แต่ถ้าคุณต้องการที่จะรูทโดยไม่มีรูทคุณมี 2 ตัวเลือก:

  1. ตรวจสอบการอนุญาตของไฟล์ คุณต้องมีสิทธิ์อ่านเพื่อที่
  2. ตรวจสอบว่าไฟล์หรือลิงค์ที่มีชื่อเดียวกันนั้นไม่มีอยู่ในไดเรกทอรีปลายทาง เพราะหากลิงค์ที่มีชื่อเดียวกันอยู่ในไดเรกทอรีปลายทางจะไม่อนุญาตให้คุณทำเช่นนั้นและจะไม่เตือนว่ามีชื่อลิงค์เดียวกันอยู่

1

ลองcp /tmp/ok_pcscd_hotplug.sh /lib/udev/ในผู้ใช้รูท


ไม่เปลี่ยนให้ข้อผิดพลาดอีกครั้ง - root @ atrust-00351A: / lib # ls-l drwxrwxrwx 4 รูทราก 324 2009-05-22 11:40 udev
user278122

กรุณาโพสต์ผลลัพธ์whoamiและls -al /tmp/ok_pcscd_hotplug.sh
Sambit

whoami - เอาท์พุทรูต ls -al /tmp/ok_pcscd_hotplug.sh - เอาท์พุท -rwxr-xr-x 1 รูทราก 229
278122

จากนั้นตรวจสอบให้แน่ใจว่าok_pcscd_hotplug.shไม่มีความเสียหายและ/lib/udev/มีอยู่ในระบบของคุณ
Sambit

อย่างใดอย่างหนึ่ง ok_pcscd_hot_plug.sh หรือ / lib / udev ใช้ได้ในระบบ
278122


0

ก่อนอื่นให้ทำ "ls -l" และตรวจสอบการอนุญาตสำหรับไดเรกทอรีนี้ หากคุณเห็นสิ่งที่ต้องการ -rw-r - r-- นั่นหมายความว่าเจ้าของสามารถอ่าน - เขียนกลุ่มผู้ใช้สามารถอ่านได้เท่านั้นโลกสามารถอ่านได้เท่านั้น พิมพ์คำสั่งต่อไปนี้หากเป็นกรณีนี้: "chmod 766" สิ่งนี้จะอนุญาตให้คุณทำการอ่าน - เขียนบนไฟล์นั้น ตอนนี้ให้ลองคัดลอกไฟล์นั้นด้วยวิธีเดียวกัน มันควรจะทำงาน


* chmod 766 <file / dir>
passer โดย

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