我能够在 AWS EC2 实例上使用以下脚本成功设置 SFTP 用户组和 SFTP 用户。虽然我能够限制组中的 SFTP 用户sftp_users
访问彼此的目录及其内容,但我现在需要能够创建一个admin
SFTP 用户,该用户能够访问和浏览所有 SFTP 文件夹的所有内容并移动内容。这可能吗?正如我所说,我的要求是创建仅能访问其各自文件夹的单个 SFTP 用户,并创建一个可以通过 SFTP 访问所有用户 sftp 文件夹的管理员/超级用户。如果管理员用户可以访问所有文件系统以及 SFTP 用户文件夹,那就没问题了。我尝试利用我有限的 Linux 技能在线研究这个问题,但一无所获。
echo "`date` Creating SFTP directory...."
mkdir -p /data/sftp
echo "`date` updating sshd_config"
sed -i 's/PasswordAuthentication no/PasswordAuthentication yes/' /etc/ssh/sshd_config
echo 'Match Group sftp_users' >> /etc/ssh/sshd_config
echo 'ChrootDirectory /data/sftp' >> /etc/ssh/sshd_config
echo 'ForceCommand internal-sftp' >> /etc/ssh/sshd_config
echo "`date` Set permissions to 701 for all folders on the efs mount"
chmod -R 701 /data
echo "`date` Set owner to root:root for all folders on the efs mount"
chown -R root:root /data
echo "`date` adding sft_users group"
groupadd sftp_users
echo "`date` restarting sshd"
systemctl restart sshd
###### Below is my user creation script that I eventually use to create individual SFTP users ######
echo "`date` creating /usr/local/bin/create_sftp_user.sh"
echo -e '#!/bin/bash\n\nUSER_NAME=$1\nuseradd -g sftp_users -d /$USER_NAME -s /sbin/nologin $USER_NAME\n' > /usr/local/sbin/create_sftp_user.sh
echo -e 'passwd $USER_NAME\nmkdir -p /data/sftp/$USER_NAME\n' >> /usr/local/sbin/create_sftp_user.sh
echo -e 'chown $USER_NAME:sftp_users /data/sftp/$USER_NAME\n' >> /usr/local/sbin/create_sftp_user.sh
echo -e 'chmod 700 /data/sftp/$USER_NAME\n' >> /usr/local/sbin/create_sftp_user.sh
chmod +x /usr/local/sbin/create_sftp_user.sh
答案1
您应该能够使用文件访问控制列表 (FACL) 来实现这一点。例如,您可以创建一个只有管理员用户是其成员的组“sftpadmin”,然后强制 /data/sftp 中的所有文件由组“sftpadmin”拥有(并可写入)。
Unix 和 Linux StackExchange 上介绍了如何使用 FACL: https://unix.stackexchange.com/questions/165865/forcing-owner-on-created-files-and-folders/165986#165986