相关文章推荐
闷骚的紫菜  ·  JSch - ...·  1 周前    · 
很拉风的烈酒  ·  西行纪 - 知乎·  1 年前    · 
15328076128  ·  ARM Trusted ...·  3 年前    · 
天涯  ·  ECS qps_ecsqps能力_ecs ...·  3 年前    · 

最近遇到一点事,需要开放工作室服务器的网站目录上传文件权限,要求静态网站上传可以即传即用,考虑到简单起见我想到的办法是新建一个用户加入 www-data 组,登录目录设在网站所在目录下,要传网站直接把文件丢上去就行(前提是这些网站都在同一个域名下,不然还需要另外配置 Server)。可是 SFTP 上传的文件都是默认755,原本 vsftpd 可以用户 local_umask 控制上传文件权限,但是坑爹的硬件防火墙封了 FTP 端口,只能通过22端口。但是 SFTP 虽然名字里带 FTP ,但是实际上 SFTP不是由 vsftpd 控制而是由 openssh 控制,SFTP 没有专门的守护进程,也没有独立的配置文件(我在查了半天 vsftpd 相关问题之后才发现这一事实,晕死)

查看 openssh 的配置没发现有 umask 的相关配置,应该只能改 bash 的环境配置了。

那么问题又来了,我在 /etc/passwd 中设置的登陆地址是网站所在地址,系统没有自动生成 bash 的配置文件,于是乎我在手动建立了一个 .bash_profile ,里面填了一行 umask 002,重启 sshd ,惊奇地发现没有效果——原本权限777的文件上传之后还是755。

仔细一想,bash 的配置文件好像不止一个,大概是 SFTP 读取的配置不对?于是又去查了一下关于 bash 的配置,一查吓一跳,还有这么多细节问题以前没注意的。其中最大的问题就是 login shell 和 non-login shell 的区别:

login shell:取得bash 时需要完整的登入流程,就称为login shell。

最近遇到一点事,需要开放工作室服务器的网站目录上传文件权限,要求静态网站上传可以即传即用,考虑到简单起见我想到的办法是新建一个用户加入 www-data 组,登录目录设在网站所在目录下,要传网站直接把文件丢上去就行(前提是这些网站都在同一个域名下,不然还需要另外配置 Server)。可是 SFTP 上传的文件都是默认755,原本 vsftpd 可以用户 local_umask 控制上传文件权限,但...
SFTP (Secure File Transfer Protocol,安全文件传输协议)是一种基于可靠数据流(data stream),提供文件存取和管理的网络传输协议,与 FTP 协议相比, SFTP 在客户端与服务器间提供了一种更为安全的文件传输方式,如果你还在使用 FTP 来进行文件传输,强烈建议切换到更为安全的 SFTP 上来。 常用命令使用: 1.远端服务器当前工作目录 sftp > pwd Remote working directory: / 2.远端服务器切换目录 sftp > cd
在一些生产环境中,有时,用户需要传数据到服务器,但是 配置 ftp 服务比较麻烦,此时,我们可以为用户创建 sftp 账户,让用户使用 sftp 来上传下载所需的数据。 sftp 账号即为系统账号,将账户密码给用户,用户除了能登录 sftp 上传下载数据外,还可以访问系统中的其他目录,由此,给我们的系统带来了安全隐患,我们需要把 sftp 用户限制在特定的目录中。 二、 配置 2.1、创建用户...
背景:之前搭建 SFTP 多用户都是同属一个用户组,所有用户都可以进行读写操作,需要将各个用户 权限 调整,遂度娘一波,没有明显匹配的文档,自己综合整理记录。 如下图所示,用户组G1的用户可读写目录1,目录2,用户组G2的用户只能访问目录2 新建 SFTP 目录 mkdir -p /opt/mwdata/{smsdata,shipin-data} 其中/opt/mwdata作为 sftp 的主目录,充当所有用户的家目录 新建 SFTP 用户,及用户家目录相关调整 新增用户组 sftp 为组1 , sftp v
### 回答2: SFTP (Secure File Transfer Protocol)是一种加密的协议,它可以在网络中安全地传输文件。 SFTP 是在SSH(Secure Shell)协议的基础上发展而来的。 Linux 自带的 sftp 命令可以用来 上传文件 SFTP 服务器上。下面是简要的操作步骤: 1. 打开终端,进入命令行模式。 2. 输入 sftp 命令,连接到 SFTP 服务器。命令格式为: sftp [用户名@]主机名或IP地址。例如: sftp user@example.com或 sftp user@192.168.0.1。 3. 输入密码,连接到 SFTP 服务器后,需要输入密码进行认证。 4. 进入远程目录,使用cd命令进入远程目录,也可以使用lcd命令进入本地目录。 5. 上传文件 ,使用put命令 上传文件 。命令格式为:put 本地文件名 [远程路径]。例如:put local_file /remote/path。 6. 退出 sftp ,使用exit命令退出 sftp 。 需要注意的是, SFTP 上传文件 时文件的 权限 默认 为600或rw-------。如果需要 修改 上传文件 权限 ,可以使用chmod命令。 此外,还可以使用基于GUI的文件传输软件,如FileZilla,进行 SFTP 文件上传操作。这种方式需要先下载和安装FileZilla软件,并输入 SFTP 服务器IP地址、端口、用户名、密码等信息进行登录,然后进行文件传输操作。 ### 回答3: SFTP (Secure File Transfer Protocol) 是一种安全的、加密的文件传输协议,是基于SSH协议传输的。 在 Linux 上进行 SFTP 文件上传,需要使用 sftp 客户端。当然,事先需要确保本地机器和远程机器间已经建立了 SSH 连接。 以下是详细的步骤: 1. 打开终端,输入 sftp ,进入 sftp 客户端。 2. 输入 sftp 命令连接到远程主机,如 sftp username@hostname。 3. 输入密码,若连接成功,则会出现 sftp 提示符。 4. 使用命令cd进入要上传的文件所在的目录。若要上传到远程主机的根目录,不需要cd。可以直接继续执行上传操作。 5. 使用命令put 上传文件 ,如put abc.txt。若要上传到远程主机的指定目录,可以在文件名前加上目录路径,如put /home/username/abc.txt。 6. 等待上传过程执行完成。 7. 使用exit命令退出 sftp 客户端。 以上就是在 Linux 上使用 SFTP 上传文件 的流程。由于 SFTP 是基于SSH协议的,所以传输中的数据是加密的,非常安全。同时,使用 SFTP 上传文件 也非常方便。希望对大家有所帮助。