Thay đổi người dùng trong khi scp


16

Tôi cần sao chép tập tin giữa các máy Linux. Vấn đề mà người dùng tôi sử dụng để đăng nhập ( myuser), khác với người dùng có thể truy cập tệp.

Nếu tôi chỉ sshvào máy, tôi có thể chuyển đổi người dùng bằng cách sử dụng sudo su someuser, tôi có thể làm điều đó bằng cách nào đó scpkhông?

Trong khi sử dụng WinSCP, tôi đã quản lý để làm điều đó, bằng cách định cấu hình SCP / Shell, vì vậy tôi tin rằng phải có một cách tương tự để thực hiện thông qua shell thuần.


Tôi bối rối. Tại sao bạn không đăng nhập với tư cách là người dùng thao túng tệp?
rahmu

Bởi vì không thể đăng nhập bằng người dùng khác.
Tarlog

Làm thế nào về kết nối sshvà thực hiện scp, một cái gì đó như thế này : ssh myuser@host "sudo scp ..."?
rahmu

Có lẽ câu trả lời ở đây có thể làm việc trong tình huống như vậy? unix.stackexchange.com/questions/43094/ Khăn @Tarlog Điều này giả định rằng trên chính máy từ xa, bạn có thể ssh someuser @ remote
Bernhard

Câu trả lời:


9

Giả sử rằng người dùng bạn CÓ THỂ không cần mật khẩu để sudo su vào người dùng mục tiêu, bạn có thể thử điều này:

dd if=myfile | ssh some.host "sudo -u targetuser dd of=myfile" 

... Xin lỗi, tôi vẫn không tin rằng chỉ cần cấu hình targetuserđể chỉ cho phép scp / sftp / rsync trên SSH và sử dụng khóa RSA để xác thực không phải là một lựa chọn tốt hơn nhiều.


1
hoặc tar -cvf - * | ssh user@host "sudo -u targetuser tar -C /targetdir -xf -"cho một loạt các tập tin
Matt

Cũng đúng, và tôi cho rằng chúng ta có thể tranh luận liệu có hữu ích -zhay -jkhông tùy thuộc vào tốc độ kết nối và phần cứng máy tính ở hai bên ...
Shadur

3

Nếu bạn biết thông tin đăng nhập cho người dùng khác ( someuser), bạn có thể chỉ định nó trong scpcuộc gọi của mình .

Từ man scptrang:

Tên tệp có thể chứa thông số kỹ thuật của người dùng và máy chủ lưu trữ để chỉ ra rằng tệp sẽ được sao chép vào / từ máy chủ đó. Tên tệp cục bộ có thể được làm rõ bằng cách sử dụng tên đường dẫn tuyệt đối hoặc tương đối để tránh scp xử lý tên tệp có chứa ':' làm chỉ định máy chủ. Bản sao giữa hai máy chủ từ xa cũng được cho phép.

Đây là cú pháp được sử dụng:

[[user@]host:]/path/to/file

Thí dụ

Bạn muốn sao chép tệp /home/foo/bartừ host1localhost của mình, sử dụng người dùng someuser, đây là lệnh:

scp someuser@host1:/home/foo/bar .

Bạn sẽ được yêu cầu xác thực (mật khẩu, khóa, ...).


1
Không thể đăng nhập như người dùng khác.
Tarlog

Sau đó thiết lập đăng nhập chỉ scp / rsync bằng các khóa RSA.
Shadur

1
Không thể sử dụng người dùng khác bằng bất kỳ loại đăng nhập nào. Khác sau đó tôi đã sử dụng các khóa RSA cho ssh / scp.
Tarlog

1

Có lẽ là có thể , nhưng tôi nói đó là một cách rất khó xử để làm điều đó.

Đề nghị đầu tiên của tôi là đăng nhập như người dùng đó. Ngay cả khi bạn không có mật khẩu của người dùng đó, bạn có thể thêm khóa ssh công khai của riêng bạn vào ủy quyền của họ và sau đó scp bằng khóa của họ, như rahmu hiển thị.

Nếu điều đó là không thể, đề nghị thứ hai của tôi là đăng nhập bằng ssh, sudo cho người dùng và tạo một tập hợp các tệp bạn muốn sao chép và đặt nó ở đâu đó mà người dùng của bạn có thể đọc. Sau đó scp xuống tarfile.


Không thể đăng nhập người dùng khác. Đúng, tôi đã tự mình tìm ra gợi ý thứ hai. Tìm kiếm một cách dễ dàng :)
Tarlog

Liên kết được đăng bởi gcb nên là dịch vụ, sau đó. Ít nhất là nếu bạn sẽ làm điều này nhiều hơn một lần. Hoặc, tất nhiên, bạn có thể thay đổi quyền truy cập vào tệp để cấp cho người dùng của bạn quyền truy cập vào nó.
Jenny D

Chà, tôi đang cố gắng tạo một tập lệnh (tất nhiên sẽ được sử dụng nhiều lần) sẽ được sử dụng bởi những người dùng khác nhau. Vì vậy, cấp quyền truy cập cho tôi sẽ không thực sự giúp đỡ. Bất cứ ai có khả năng 'sudo su otheruser' đều có thể chạy tập lệnh.
Tarlog

Gotcha. Tôi sẽ bắt đầu với liên kết từ gcb, sau đó nếu bạn gặp vấn đề với tập lệnh đăng nó và xem liệu chúng tôi có thể hỗ trợ một số nguồn trợ giúp không.
Jenny D


0

Tôi đã cố gắng đưa ra một số ví dụ trong bài viết sau. Ý tưởng cơ bản là không sử dụng scp, mà sử dụng dd và ssh với chuyển đổi người dùng sudo. Nhìn:

http://hmmss.wordpress.com/2014/07/02/ssh-and-scp-with-anther-user


1
Sẽ tốt hơn nếu cung cấp thêm chi tiết ở đây, nếu liên kết trở nên không hợp lệ, câu trả lời của bạn chỉ còn lại ít giá trị.
Anthon
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.