设置sftp客户端上传文件默认权限
时间: 2023-07-25 14:41:57 浏览: 2521
要设置SFTP客户端上传文件的默认权限,可以通过在SFTP服务器上设置umask值来实现。umask值是在创建文件时从文件权限中减去的位掩码。可以通过在SSH会话中运行以下命令来设置umask值:
```
umask 022
```
这将设置umask值为022,这意味着默认权限为755(rwxr-xr-x)。如果要设置默认权限为777(rwxrwxrwx),则可以将umask值设置为000:
```
umask 000
```
请注意,这将允许所有用户对上传的文件进行读取、写入和执行操作,这可能会带来安全风险,因此应该谨慎使用。
相关问题
这将设置SFTP用户创建目录的默认权限
这是一种方法,但是该方法不是最佳实践,因为它将修改SFTP的全局默认目录权限。更好的方法是使用umask值来控制SFTP用户创建的目录和文件的默认权限,而不是直接设置全局默认权限。
要使用umask值控制SFTP用户创建的目录和文件的默认权限,可以按照以下步骤进行操作:
1. 登录SFTP服务器,并使用管理员账户创建一个新用户,例如“sftpuser”。
2. 使用如下命令创建一个新的组,例如“sftpusers”:
```
sudo groupadd sftpusers
```
3. 将“sftpuser”用户添加到“sftpusers”组中:
```
sudo usermod -aG sftpusers sftpuser
```
4. 使用如下命令创建一个目录,用于存储SFTP用户上传的文件:
```
sudo mkdir /sftp_data
```
5. 将目录的权限设置为777:
```
sudo chmod 777 /sftp_data
```
6. 使用如下命令修改目录的所有者和所属组:
```
sudo chown root:sftpusers /sftp_data
```
7. 使用如下命令编辑SSH配置文件:
```
sudo nano /etc/ssh/sshd_config
```
8. 在文件末尾添加以下内容:
```
Match group sftpusers
ChrootDirectory /sftp_data
ForceCommand internal-sftp
X11Forwarding no
AllowTcpForwarding no
```
9. 保存并关闭文件。然后使用如下命令重启SSH服务:
```
sudo service ssh restart
```
10. 使用如下命令进入“/etc/ssh”目录:
```
cd /etc/ssh
```
11. 使用如下命令创建一个新的文件“sshd_config_sub”:
```
sudo touch sshd_config_sub
```
12. 使用如下命令编辑新文件“sshd_config_sub”:
```
sudo nano sshd_config_sub
```
13. 在文件中添加以下内容:
```
Subsystem sftp internal-sftp
```
14. 保存并关闭文件。
15. 使用如下命令编辑“/etc/pam.d/sshd”文件:
```
sudo nano /etc/pam.d/sshd
```
16. 在文件中找到以下行:
```
session optional pam_motd.so motd=/run/motd.dynamic
```
17. 在该行之后添加以下内容:
```
session optional pam_umask.so umask=0022
```
这将设置umask值为0022,表示在SFTP用户创建目录和文件时,权限设置为“drwxr-xr-x”或“-rw-r--r--”。
18. 保存并关闭文件。
19. 使用如下命令重启SSH服务:
```
sudo service ssh restart
```
现在,SFTP用户可以使用SFTP客户端连接到服务器,并上传文件到“/sftp_data”目录。由于该用户被限制在“/sftp_data”目录下,因此无法访问系统的其他部分。同时,由于使用了umask值,SFTP用户创建的目录和文件的默认权限为“drwxr-xr-x”或“-rw-r--r--”。
修改sftp用户创建目录默认权限
要修改SFTP用户创建目录的默认权限,可以按照以下步骤进行操作:
1. 登录SFTP服务器,并使用管理员账户创建一个新用户,例如“sftpuser”。
2. 使用如下命令创建一个新的组,例如“sftpusers”:
```
sudo groupadd sftpusers
```
3. 将“sftpuser”用户添加到“sftpusers”组中:
```
sudo usermod -aG sftpusers sftpuser
```
4. 使用如下命令创建一个目录,用于存储SFTP用户上传的文件:
```
sudo mkdir /sftp_data
```
5. 将目录的权限设置为777:
```
sudo chmod 777 /sftp_data
```
6. 使用如下命令修改目录的所有者和所属组:
```
sudo chown root:sftpusers /sftp_data
```
7. 使用如下命令编辑SSH配置文件:
```
sudo nano /etc/ssh/sshd_config
```
8. 在文件末尾添加以下内容:
```
Match group sftpusers
ChrootDirectory /sftp_data
ForceCommand internal-sftp
X11Forwarding no
AllowTcpForwarding no
```
9. 保存并关闭文件。然后使用如下命令重启SSH服务:
```
sudo service ssh restart
```
10. 使用如下命令进入“/etc/ssh”目录:
```
cd /etc/ssh
```
11. 使用如下命令创建一个新的文件“sshd_config_sub”:
```
sudo touch sshd_config_sub
```
12. 使用如下命令编辑新文件“sshd_config_sub”:
```
sudo nano sshd_config_sub
```
13. 在文件中添加以下内容:
```
Subsystem sftp internal-sftp -u 002
```
这将设置SFTP用户创建目录的默认权限为“drwxrwxr-x”。
14. 保存并关闭文件。
15. 使用如下命令编辑SSH配置文件:
```
sudo nano /etc/ssh/sshd_config
```
16. 在文件末尾添加以下内容:
```
Include /etc/ssh/sshd_config_sub
```
17. 保存并关闭文件。然后使用如下命令重启SSH服务:
```
sudo service ssh restart
```
现在,SFTP用户可以使用SFTP客户端连接到服务器,并上传文件到“/sftp_data”目录。由于该用户被限制在“/sftp_data”目录下,因此无法访问系统的其他部分。同时,由于使用了“-u 002”选项,SFTP用户创建的目录的默认权限为“drwxrwxr-x”。
阅读全文