最近遇到一点事,需要开放工作室服务器的网站目录上传文件权限,要求静态网站上传可以即传即用,考虑到简单起见我想到的办法是新建一个用户加入 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
上传文件
也非常方便。希望对大家有所帮助。