Làm thế nào để đặt ô mong muốn với SFTP?


23

Tôi có máy chủ SFTP (openssh / sftp-server) và tôi muốn đặt umask 002 cho người dùng sử dụng dịch vụ này. Tôi đã thử cài đặt PAM (pam.d / common-session) và .profile cho mỗi người dùng, nhưng không gặp may.

Với đăng nhập SSH, mọi thứ đều ổn, nhưng khi tôi thử với SFTP (với gFTP), tôi có bộ 022 umask.

Tôi đã thử sử dụng một trình bao bọc cho sftp-server đang thay đổi ô trước khi gọi sftp-server, không gặp may.

Có ai giúp đỡ không? Cảm ơn rất nhiều!

Câu trả lời:


25

Vì OpenSSH 5.4p1 tôi nghĩ, bạn có thể sử dụng tùy chọn "-u", ví dụ:

Subsystem sftp /usr/lib/openssh/sftp-server -u 022

Từ trang người đàn ông:

 -u umask
         Sets an explicit umask(2) to be applied to newly-created files
         and directories, instead of the user's default mask.

thật tuyệt !! Tôi sẽ xem càng sớm càng tốt và báo cáo kết quả của mình :)
mat_jack1

5
Đối với những người không có tùy chọn -u, điều này hoạt động:Subsystem sftp /bin/sh -c 'umask 0002; /usr/lib/openssh/sftp-server'
Steve Clay

1
Giải pháp tốt. Nó giải quyết vấn đề với các ứng dụng và ứng dụng khách, như CyberDuck, đặt các quyền mặc định của chúng bất kể ô hệ thống. Tôi thấy nó hữu ích để đảm bảo rằng mọi ứng dụng khách sẽ đặt quyền phù hợp để cho phép người dùng của tôi làm việc cùng nhau trên các tệp nhóm. Cũng có thể hữu ích khi thêm rằng cài đặt này sẽ không ngăn người dùng tùy chỉnh quyền truy cập tệp nếu họ muốn.
gerlos

Một điều cuối cùng cần thêm: nếu bạn chỉ cần tính năng sftp và không cần cấp cho người dùng quyền truy cập shell, bạn cũng có thể cân nhắc sử dụng rssh thay vì bash cho shell của họ và đặt umask mặc định cho họ trong /etc/rssh.conf . Điều này có thể làm cho máy chủ của bạn an toàn hơn
gerlos

7

Tôi hy vọng điều này có thể cứu người khác hàng giờ thất vọng ...

Nếu bạn đang sử dụng ứng dụng GUI SFTP, hãy kiểm tra tùy chọn của nó để đặt quyền khi tải lên.

Tôi đã thử tất cả các giải pháp ở trên, và hóa ra ứng dụng này chỉ ghi đè chúng.


^^ Có, trong một thời gian dài, tôi đã thiết lập ô trên kết nối sftp bằng cách tạo một tập lệnh tương tự như giải pháp của Weboide. Gần đây tôi đã gãi đầu về lý do tại sao điều này dường như không hoạt động tốt như trong quá khứ. Rõ ràng, tại một số điểm, một bản cập nhật cho máy khách SFTP của tôi đã khiến nó được đặt rõ ràng sau khi kết nối với ssh, vì vậy hãy tìm hiểu.
Jared Kipe

Nó không chỉ là GUI. Ngay cả khách hàng. Phải mất quá lâu để tôi thấy rằng tệp thử nghiệm mà tôi đã tải lên có 0600 mà máy khách (OpenSSH sftp) đã sao chép sang phía từ xa.
xebeche

Cảm ơn bạn! Đã dành quá lâu để chơi xung quanh với quyền mà không có gì.
Tania Rascia

2

Sau nhiều giờ cố gắng áp dụng các cách hack và sửa lỗi khác nhau, tôi đã tìm thấy một giải pháp thích hợp!

Có một bản vá cho SSH cho phép bạn chọn ô mà bạn muốn cho SFTP. Bạn có thể tải xuống tại đây: http://sftpfilecontrol.sourceforge.net/

Đối với tôi (OpenSSH_5.2p1 + sftpfilecontrol-v1.3, OpenSSL 0.9.8g ngày 19 tháng 10 năm 2007) nó hoạt động hoàn hảo!


2
Chỉ cần lưu ý rằng tùy chọn '-u' để đặt ô có sẵn trong OpenSSH kể từ 5.4p1, hãy xem câu trả lời của tôi tiếp tục.
Weboide

2

Trong tệp cấu hình ssh, bạn cũng có thể sử dụng chế độ này để đặt chế độ của tệp một cách cụ thể (ghi đè bất kỳ chmod nào mà máy khách có thể cố gắng đặt). Ở đây tôi đang sử dụng Internal-sftp nhưng tôi đoán nó sẽ giống với sftp-server:

ForceCommand internal-sftp -u 0022   

0

Để trích dẫn thông điệp này :

Tôi đã làm việc này ổn bằng cách thêm dòng "umask 007" trong /etc/init.d/ssh.

Bash sử dụng các .profileshell đăng nhập tương tác. Tôi không nghĩ sftpđược tính là một. Bạn có thể đặt ô trong /etc/bash.bashrchoặc ~/.bashrcnếu mẹo ở trên không hoạt động hoặc bạn muốn kiểm soát chi tiết hơn.


2
cảm ơn vì câu trả lời, nhưng tôi đã sử dụng ssh umask 002 (tôi cũng đã thử 0002) và nó không hoạt động :( bashrc cũng không được xem xét, vì với một máy khách SFTP bên ngoài tôi không nghĩ rằng bash được sử dụng. Nếu tôi đăng nhập trực tiếp với ssh thì mọi thứ đều ổn. Vấn đề của tôi chỉ xảy ra với các khách hàng SFTP. Cảm ơn!
mat_jack1

Rất tiếc, bạn đã đúng. Tôi không biết tại sao tôi lại nghĩ về việc Bash có liên quan.
Tạm dừng cho đến khi có thông báo mới.

0

Tham khảo câu hỏi này để tìm một giải pháp đơn giản không yêu cầu các phiên bản mở cụ thể cũng như các bản vá tùy chỉnh.

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.