背景:
某系统需要通过sftp上传文件到服务器,服务器操作系统CentOS 7。
1)服务器经过安全加固,服务运行于指定user下。sftp上传的文件,该user具备写权限。
2)服务器的openssh统一进行安全加固、策略管理,所以不能使用原有openssh server。必须再运行一个daemon。
3)该daemon进行安全限制,仅允许指定用户访问,设置允许访问的地址段。
一、配置多实例运行
How to configure multiple instances of sshd in RHEL 7 or 8? - Red Hat Customer Portal
- 复制配置文件
sshd_config
,命名为sshd-2_config
cp /etc/ssh/sshd{,-2}_config
- 复制服务启动文件
cp /usr/lib/systemd/system/sshd.service /etc/systemd/system/sshd-2.service
编辑sshd-2.service
,修改 Description ,添加 -f /etc/ssh/sshd-2_config 指定启动配置文件。修改后的配置,如下:
[Unit]
Description=2nd OpenSSH server daemon
Documentation=man:sshd(8) man:sshd_config(5)
After=network.target sshd-keygen.service
Wants=sshd-keygen.service
[Service]
Type=notify
EnvironmentFile=/etc/sysconfig/sshd
ExecStart=/usr/sbin/sshd -D -f /etc/ssh/sshd-2_config $OPTIONS
ExecReload=/bin/kill -HUP $MAINPID
KillMode=process
Restart=on-failure
RestartSec=42s
[Install]
WantedBy=multi-user.target
- 重载systemd
systemctl daemon-reload
- 编辑第二个sshd daemon的配置文件
sshd-2_config
参考:man sshd_config
Port 2222
PermitRootLogin no
AllowUsers sftpuser
Match User sftpuser
PermitTTY no
- 启动服务
systemctl enable sshd-2.service --now
二、设置文件夹权限
- 创建用户
sftpuser
,指定home目录
useradd sftpuser -d /lvmdata/sftpdir -u 5001
chown -R sftpuser:sftpuser sftpdir/
- 设置目录权限,允许服务user拥有写权限。
setfacl -m u:admin:rwx sftpdir/
- 测试sftpuser上传文件权限
[root@VM-17-13-centos lvmdata]# getfacl -a sftpdir/
# file: sftpdir/
# owner: sftpuser
# group: sftpuser
user::rwx
user:admin:rwx
group::r-x
mask::rwx
other::r-x
- 测试admin用户是否具有写权限
[admin@VM-17-13-centos lvmdata]$ cd sftpdir/
[admin@VM-17-13-centos sftpdir]$ ll
total 8
-rw-r--r-- 1 sftpuser sftpuser 5258 Dec 24 17:32 deadlock.txt
[admin@VM-17-13-centos sftpdir]$ getfacl -a deadlock.txt
# file: deadlock.txt
# owner: sftpuser
# group: sftpuser
user::rw-
group::r--
other::r--
[admin@VM-17-13-centos sftpdir]$ rm deadlock.txt
rm: remove write-protected regular file ‘deadlock.txt’? y
[admin@VM-17-13-centos sftpdir]$ ls
[admin@VM-17-13-centos sftpdir]$
结论:admin 用户具备了该目录的完全执行权限
另一个失败的配置:
admin用户不能删除文件
[root@VM-17-13-centos lvmdata]# setfacl -dRm u:admin:rw sftpdir/
[root@VM-17-13-centos lvmdata]# getfacl -a sftpdir/
# file: sftpdir/
# owner: sftpuser
# group: sftpuser
user::rwx
group::r-x
other::r-x
[root@VM-17-13-centos lvmdata]# su - admin
Last login: Fri Dec 24 17:25:15 CST 2021 from 10.41.99.232 on pts/2
[admin@VM-17-13-centos ~]$ cd /lvmdata/sftpdir/
[admin@VM-17-13-centos sftpdir]$ getfacl -a deadlock.txt
# file: deadlock.txt
# owner: sftpuser
# group: sftpuser
user::rw-
user:admin:rw-
group::r-x #effective:r--
mask::rw-
other::r--
[admin@VM-17-13-centos sftpdir]$ rm deadlock.txt
rm: cannot remove ‘deadlock.txt’: Permission denied
网友评论