怎么做一个链接网站,专门做医疗器械的网站,外贸信托是哪个贷款平台,北京哪家公司做网站0. 背景
Linux机器上已有路径/data/tomcat/apache-tomcat-8.5.96/webapps/webroot,需要在该路径之下配置一个目录对外暴露给业务人员使用。业务人员使用sftp协议上传文件。
下面是相关配置#xff1a; SFTP 用户名#xff1a;iios SFTP主目录#xff1a;/data/tomcat/apa…0. 背景
Linux机器上已有路径/data/tomcat/apache-tomcat-8.5.96/webapps/webroot,需要在该路径之下配置一个目录对外暴露给业务人员使用。业务人员使用sftp协议上传文件。
下面是相关配置 SFTP 用户名iios SFTP主目录/data/tomcat/apache-tomcat-8.5.96/webapps/webroot/sftp iios用户的sftp目录(用户根目录)/data/tomcat/apache-tomcat-8.5.96/webapps/webroot/sftp/iios iios用户sftp上传目录/data/tomcat/apache-tomcat-8.5.96/webapps/webroot/sftp/iios/upload 注意:下面的命令皆在root用户下操作完成 1. 创建sftp相关目录 生成 sftp用户
创建目录
mkdir -p /data/tomcat/apache-tomcat-8.5.96/webapps/webroot/sftp/iios/upload Q:为什么创建了 /sftp/iios/upload 三级目录呢 A:当sftp的方式用户登录到用户根目录/sftp/iios/)后根目录是无法写入的。所以还需要在用户根目录下创建upload目录。详细解释在文章末尾 创建角色 创建用户组groupadd sftp useradd -g sftp -M -s /sbin/nologin iios -g 指定用户组-M 不要创建该用户的家目录-s指定该用户登录后使用的shell 有些文章/sbin/nologin 与 /bin/false 区别 配置该用户密码passwd iios
2. 修改sftp 配置文件 vi /etc/ssh/sshd_config # Subsystem sftp /usr/libexec/openssh/sftp-server #注释掉此行并添加下列多行
Subsystem sftp internal-sftp
Match User iios
ChrootDirectory /data/tomcat/apache-tomcat-8.5.96/webapps/webroot/sftp/ #chroot目录,按需自定义
X11Forwarding no
AllowTcpForwarding no
ForceCommand internal-sftp注意ChrootDirectory 目录不能直接配置到用户sftp上传目录需要配置到上一级即用户根目录 重启ssh服务service sshd reload or systemctl restart sshd
3. 配置sftp目录权限 注意ChrootDirectory 的权限设定有两个非常重要的规则 从该目录开始上钻到系统根目录为止的目录的所有者有且仅是root从该目录开始上钻到系统根目录为止的目录都不能具有群组写入权限 如果你的目录层级较多记得逐级检查 按上述规则设置SFTP主目录与用户根目录的目录权限
chown root:root /data/tomcat/apache-tomcat-8.5.96/webapps/webroot/sftp/chown root:root /data/tomcat/apache-tomcat-8.5.96/webapps/webroot/sftp/iioschmod 755 /data/tomcat/apache-tomcat-8.5.96/webapps/webroot/sftp/chmod 755 /data/tomcat/apache-tomcat-8.5.96/webapps/webroot/sftp/iios
将iios用户sftp上传目录的目录权限设置为 iios 这样iios才可以上传文件
chown iios:sftp data/tomcat/apache-tomcat-8.5.96/webapps/webroot/sftp/iios/chmod 777 /data/tomcat/apache-tomcat-8.5.96/webapps/webroot/sftp/iios/
4. 测试sftp
终端中测试sftp 是否能登录 sftp iioslocalhost …之后使用sftp工具上传文件
5. QA Q1:为什么创建了 /sftp/iios/upload 三级目录 A1 :1. sshd_config配置文件的ChrootDirectory 配置的路径属主必须是root且只有属主拥有写权限即ChrootDirectory …/sftp/iios)最大权限也只有755 2. 即在iios的用户根目录中iios用户没有写入权限 3. 为了保证iios有写入权限只能在用户根目录再创建一个子目录/upload)由于该目录不受规则约束所以可以自由设置权限例如777 Q2 : 为什么会有ChrootDirectory 的规则(属主和写入权限)?文档出处在哪里? A2: 终端输入 man sshd_config, Description 下翻到 ChrootDirectory 条目:原文摘录如下 ChrootDirectory Specifies the pathname of a directory to chroot(2) to after authentication. At session startup sshd(8) checks that all components of the pathname are root-owned directories which are not writable by any other user or group. After the chroot, sshd(8) changes the working directory to the user’s home directory. Arguments to ChrootDirectory accept the tokens described in the TOKENS section. 上文中: sshd会将ChrootDirectory 配置的路径的所有目录检查是否是 root所有且其他用户或其他组没有写入权限sshd会将ChrootDirectory 配置的路径之后作为用户的主目录