ฉันใช้เซิร์ฟเวอร์ Ubuntu 16.04 บนเซิร์ฟเวอร์ของฉัน ฉันมีไฟล์อยู่ในไดเร็กทอรี /home/userA/dirA
:
ผู้ใช้A@myUbuntu:~$
userA@myUbuntu:~$ pwd
/home/userA
ผู้ใช้A@myUbuntu:~$
userA@myUbuntu:~$ ls -l
รวม 8
drwxrwxr-x 3 userA userA 4096 17 ก.พ. 14:13 น. dirA
ผู้ใช้A@myUbuntu:~$
userA@myUbuntu:~$ ls -l dirA/
รวม 7796
-rw-rw-r-- 1 userA userA 1234 17 ก.พ. 14:05 theFile.txt
ผู้ใช้A@myUbuntu:~$
หมายเหตุความเป็นเจ้าของที่นี่ ผู้ใช้ ผู้ใช้ก
เป็นเจ้าของไฟล์และไดเรกทอรีที่ไฟล์นั้นอยู่
ฉันต้องการเชลล์สคริปต์ที่เคลื่อนไหวได้ theFile.txt
ไปยังตำแหน่งอื่น ลงในไดเร็กทอรีที่ไม่ได้เป็นเจ้าของ ผู้ใช้ก
. นี่คือสคริปต์ของฉัน:
#!/bin/bash
echo "กำลังพยายามย้ายไฟล์..."
{
sudo mv /home/userA/dirA/theFile.txt /home/userB/dirB/
} || {
echo "ย้ายไฟล์ไม่สำเร็จ!"
}
... และผลลัพธ์:
userA@myUbuntu:~$ ./myScript.sh
กำลังพยายามย้ายไฟล์...
ย้ายไฟล์ไม่สำเร็จ!
ผู้ใช้A@myUbuntu:~$
อย่างที่คุณบอกได้ว่าสคริปต์ทำงานเป็น ผู้ใช้ก
. ฉันไม่ต้องการที่จะเรียกใช้มันเป็น ราก
.
ดังนั้นฉันจึงถือว่าสคริปต์ล้มเหลวเนื่องจากการอนุญาต สคริปต์ทำงานเป็น ผู้ใช้ก
ไม่มีสิทธิ์ย้ายไฟล์ไปยังไดเร็กทอรีที่เป็นของ userB
. ฉันได้ลองใช้รูปแบบต่างๆ ของ ซูโด
คำสั่งและอื่น ๆ แต่ก็ไม่มีประโยชน์ ฉันได้ลองใช้วิธีแก้ปัญหาแบบโง่ๆ เช่น คัดลอกไฟล์ไปที่ /tmp
(ที่ได้ผล) แล้วทำก เคี้ยว
เพื่อเปลี่ยนความเป็นเจ้าของไฟล์ (ไม่ได้ผล) แต่ต้องมีวิธีทำให้เรียบร้อย ความคิดใด ๆ ?
การเปิดเผยข้อมูลทั้งหมด :: ฉันได้โพสต์คำถามนี้ด้วย ที่นี่.