Tôi biết câu hỏi này đã được thảo luận, nhưng bằng cách đọc các bài đăng, tôi không thể tìm ra câu trả lời, bởi vì một số người nói "vâng, có thể làm việc được" và những người khác nói "Lệnh OpenSSH luôn giữ quyền"
Trước tất cả chỉ để chính xác:
- Tôi sử dụng OpenSSH 5.9 trên RHEL 6.2
- Tôi đã cấu hình một máy chủ SFTP được chroot, sử dụng
internal-sftp
hệ thống con, với-u 0002
umask - Tôi chính xác tôi không sử dụng
-p
hoặc-P
tùy chọn
Từ những gì tôi đã đọc trên một mặt: có nhiều cách để xác định ô cho chuyển SFTP:
- lựa chọn
-u
củainternal-sftp
(hoặcsftp-server
), vì OpenSSH 5.4 - tạo một trình bao bọc
sftp-server
(trong đó chúng tôi đặt ô rõ ràng - điều này không phù hợp với môi trường chroot btw) - thêm một cấu hình cụ thể trong
pam.d/sshd
tập tin
Mặt khác tôi đã đọc:
Máy khách và máy chủ OpenSSH SFTP thực hiện chuyển các quyền (dưới dạng phần mở rộng) và tạo tệp từ xa với các quyền ở phía cục bộ. AFAICT, không có cách nào để vô hiệu hóa hành vi này.
Vì vậy, tôi đã làm bài kiểm tra sau:
Trên máy khách của tôi, tôi đã tạo tập tin MYFILE
và thư mục MYDIR
với quyền 600 và 700.
Sau đó với sftp
các lệnh:
mkdir => the new directory has permissions following the umask (OK)
put MYFILE => MYFILE has same permissions as on client (KO)
put -r MYDIR => MYDIR has same permissions as on client (KO)
Nếu tôi thay đổi quyền của MYFILE
và MYDIR
ở phía máy khách và tải lên lại, tôi sẽ nhận được quyền mới ở phía máy chủ.
Tôi đã thử pam.d
giải pháp quá, nhưng nó không thay đổi gì.
Vì vậy, bây giờ tôi bối rối:
Từ những gì tôi đã thử nghiệm và một phần của những gì tôi đọc, tôi sẽ nói OpenSSH luôn bảo toàn quyền. Nhưng vì có nhiều bài viết nói rằng một ô có thể được xác định, tôi có thể tưởng tượng tôi đã làm một điều sai trong cấu hình thử nghiệm của mình.
Tôi sẽ đánh giá cao một số thông tin phản hồi có kinh nghiệm.
Cảm ơn bạn.