Làm cách nào để sao chép thư mục mà root không thể truy cập vào thư mục mà chỉ root mới có thể truy cập?


11

Tôi có một thư mục trên mount nfs, trên máy chủ đang ở /home/myname/.rubies

Root không thể truy cập thư mục này:

[mitchell.usher@server ~]$ stat /home/mitchell.usher/.rubies
  File: `/home/mitchell.usher/.rubies'
  Size: 4096            Blocks: 8          IO Block: 32768  directory
Device: 15h/21d Inode: 245910      Links: 3
Access: (0755/drwxr-xr-x)  Uid: (  970/mitchell.usher)   Gid: (  100/   users)
Access: 2016-08-22 15:06:15.000000000 +0000
Modify: 2016-08-22 14:55:00.000000000 +0000
Change: 2016-08-22 14:55:00.000000000 +0000

[mitchell.usher@server ~]$ sudo !!
sudo stat /home/mitchell.usher/.rubies
stat: cannot stat `/home/mitchell.usher/.rubies': Permission denied

Tôi đang cố gắng sao chép một cái gì đó từ trong thư mục /optmà chỉ root mới có quyền truy cập:

[mitchell.usher@server ~]$ cp .rubies/ruby-2.1.3/ -r /opt
cp: cannot create directory `/opt/ruby-2.1.3': Permission denied

[mitchell.usher@server ~]$ sudo !!
sudo cp .rubies/ruby-2.1.3/ -r /opt
cp: cannot stat `.rubies/ruby-2.1.3/': Permission denied

Rõ ràng tôi có thể làm như sau (và là những gì tôi đã làm trong thời gian này):

[mitchell.usher@server ~]$ cp -r .rubies/ruby-2.1.3/ /tmp/
[mitchell.usher@server ~]$ sudo cp -r /tmp/ruby-2.1.3/ /opt/

Có cách nào để làm điều này không liên quan đến việc sao chép nó như một bước trung gian hoặc thay đổi quyền không?


cp -Rp /home/mitchell.usher/.rubies /tmp/templocation; sudo mv /tmp/templocation/ruby-2.1.3 /optđiều này sẽ không làm việc? Nếu không, tại sao?
MelBurslan

@MelBurslan đó là những gì tôi đã làm, như đã nêu trong câu hỏi. Nhưng hãy nói rằng đó là một tệp 50 GB không phù hợp với bất kỳ nơi nào khác trên hệ thống tệp, sau đó tôi sẽ không thểcp <file> /tmp/tmpfile
Mitch

Câu trả lời:


29

Bạn có thể sử dụng tarnhư một quá trình đệm

cd .rubies
tar cf - ruby-2.1.3 | ( cd /opt && sudo tar xvfp - )

Đầu tiên tarchạy như bạn và vì vậy có thể đọc thư mục nhà của bạn; thứ hai tarchạy dưới sudovà vì vậy có thể viết cho /opt.


1
Làm thế nào là điều này trên bộ nhớ? Nếu tôi có một tệp 10 GB, điều đó có phải sẽ lấp đầy 10 GB bộ nhớ trước khi nó chuyển sang các phần mềm không dấu, hay nó sẽ không bị xóa khi nó bị lỗi?
Mitch

5
Họ chạy song song; một ống thông thường có bộ đệm 64Kbyte. Không có gì phải lo lắng về :-) unix.stackexchange.com/questions/11946/ cho các chi tiết kích thước ống.
Stephen Harris


cpiocó thể được sử dụng theo nhiều cách tương tự.
Toby Speight

Nếu bạn có GNU tar, bạn có thể lưu lớp con bằng cách sử dụng -Cđối số của nó để thay đổi thư mục (tức là tar cf - ruby-2.1.3 | sudo tar -C /opt xpf -). Có thể đáng để đề cập rằng bạn muốn đảm bảo rằng sudosẽ không hỏi mật khẩu của bạn (ví dụ: thông qua một sudoersmục nhập hoặc thông tin đăng nhập được lưu trữ).
Toby Speight

6

Bạn có thể sử dụng rsynchoặc scpsao chép từ user@localhostthư mục địa phương.

Ví dụ cho rsync:

# rsync "$real_user@localhost:$PWD/.rubies/ruby-2.1.3" /opt

Bạn có thể thay thế

$ rsync .rubies/ruby-2.1.3 "root@localhost:/opt"

nếu bạn cho phép truy cập root localhost trực tiếp (không được khuyến nghị; chúng tôi thường thích truy cập root hơn thông qua sudo).


-4

Bạn có thể tạo một mục thứ hai trong FAT (hoặc bất cứ điều gì).
Tôi làm điều này cho HOSTStập tin của tôi . Tôi có một liên kết trong một thư mục có thể ghi liên quan đến tệp và nó có các quyền khác nhau, vì vậy tôi có /Hosts/HOSTSthể sửa đổi dễ dàng và các thay đổi được đặt trong cả hai (ví dụ: tệp "một"). Đó là 2 mục cho 1 tệp. Tôi không nhớ lệnh, xin lỗi.

Đối với bạn, bạn tạo một liên kết đến /opttất cả các tệp trong .rubiesvà khi bạn thay đổi bất cứ thứ gì trong /optđó, đó là cùng một tệp như trong .rubies.


4
Điều này là sai và gây hiểu lầm, bên cạnh việc không trả lời câu hỏi.
Wildcard

Điều đó chỉ sai vì chúng tôi đang xử lý một hệ thống tệp khác. Người trả lời rõ ràng là đề cập đến các liên kết cứng hoạt động như đã đề cập, mặc dù không áp dụng cho câu hỏi này.
Julie Pelletier

Cảm ơn Wildcard, tôi đã có một dòng trong câu trả lời của mình về việc nhận được một loạt flack nhưng nó đã được chỉnh sửa khi Michael cải thiện nó. : p
Kỹ sư
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.