公司Sftp服务器设置了chroot,因为chroot对目录权限有限制,想了一个别的办法绕了过去。这几天,又有客户说,文件权限始终为644,可是要求为664。

  开始以为是系统原因,改了系统/etc/bashrc,可是依然如旧,想到sftp本身有可能有umask,百度一下,资料太少,google不能用,后来找了几份文档,通过实验终天成功了,现把过程总结如下:


一,开启ssh的PAM功能,


运行命令看看 ldd/usr/sbin/sshd | grep libpam.so支持PAM吗?


编辑/etc/ssh/sshd_config


UsePAM yes


Match User fis

ChrootDirectory  /chroot

ForceCommandinternal-sftp


 二,/etc/pam.d/sshd,文件大部份内容可以从 system-auth抄过来(具体说明参照PAM),注意加上umask那一行。

#%PAM-1.0

# This file isauto-generated.

# User changes willbe destroyed the next time authconfig is run.

auth        required      pam_env.so

auth        sufficient    pam_unix.so nullok try_first_pass

auth        requisite     pam_succeed_if.so uid >= 500 quiet

auth        required      pam_deny.so

 

account     required      pam_unix.so

account     sufficient    pam_succeed_if.so uid < 500 quiet

account     required      pam_permit.so

 

password    requisite     pam_cracklib.so try_first_pass retry=3

password    sufficient    pam_unix.so md5 shadow nulloktry_first_pass use_authtok

password    required      pam_deny.so

 

session     optional pam_umask.so umask=0002

session     optional      pam_keyinit.so revoke

session     required      pam_limits.so

session     [success=1 default=ignore]pam_succeed_if.so service in crond quiet use_uid

session     required      pam_unix.so


重启sshd服务就可以了