Tôi đang chạy máy chủ Ubuntu 16.04. Trên máy chủ của tôi, tôi có một tệp trong thư mục /home/userA/dirA
:
userA@myUbuntu:~$
userA@myUbuntu:~$ pwd
/home/userA
userA@myUbuntu:~$
userA@myUbuntu:~$ ls -l
tổng số 8
drwxrwxr-x 3 userA userA 4096 ngày 17 tháng 2 14:13 dirA
userA@myUbuntu:~$
userA@myUbuntu:~$ ls -l dirA/
tổng cộng 7796
-rw-rw-r-- 1 userA userA 1234 ngày 17 tháng 2 14:05 theFile.txt
userA@myUbuntu:~$
Lưu ý quyền sở hữu ở đây; người dùng người dùngA
sở hữu tệp và thư mục chứa tệp.
Tôi cần một tập lệnh shell có thể di chuyển theFile.txt
đến một vị trí khác, vào một thư mục không thuộc sở hữu của người dùngA
. Đây là kịch bản của tôi:
#!/bin/bash
echo "Đang cố di chuyển tập tin..."
{
sudo mv /home/userA/dirA/theFile.txt /home/userB/dirB/.
} || {
echo "Không thể di chuyển tập tin!"
}
... và đầu ra:
userA@myUbfox:~$ ./myScript.sh
Đang cố di chuyển tệp...
Không di chuyển được tệp!
userA@myUbuntu:~$
Như bạn có thể nói, kịch bản chạy như người dùngA
. Tôi không muốn chạy nó như nguồn gốc
.
Vì vậy, tôi cho rằng tập lệnh bị lỗi do các quyền; một kịch bản chạy như người dùngA
không có quyền di chuyển tệp vào thư mục thuộc sở hữu của người dùngB
. Tôi đã thử tất cả các loại biến thể của sudo
lệnh và những người khác, nhưng vô ích. Tôi cũng đã thử các cách giải quyết ngớ ngẩn, chẳng hạn như sao chép tệp vào /tmp
(hoạt động đó) và sau đó thực hiện một chown
để thay đổi quyền sở hữu tệp (không hoạt động). Nhưng phải có một cách để làm điều này gọn gàng. Bất kỳ ý tưởng?
TIẾT LỘ ĐẦY ĐỦ :: Tôi cũng đã đăng câu hỏi này đây.