サポート担当者に一時的なSFTPアクセスを許可したいのですが。 SFTPユーザーを作成するにはどうすればよいですか?そして、ジョブが完了したら、どうすれば削除できますか?
また、それらのホームディレクトリを指定するにはどうすればよいですか?ホームディレクトリ内の特定のサブディレクトリにアクセスできないようにできますか?
CentOS 6.3とfzSftpを使用します
FTPサーバーが設定されておらず、ログインするユーザーを信頼している場合は、サーバーを使いすぎないように、代わりにSFTPのアカウントをシステムに付与する傾向があります。
CentOS wikiは、タイトルが付けられたシンプルなハウツーを維持しています: Simple SFTP setup これにより、これはかなり簡単です。
文字通りアカウントを作成し、ファイアウォールでSSHトラフィックが許可されていることを確認し、SSHサービスが実行されていることを確認すれば、ほとんど問題はありません。
sshd
がまだ実行されていない場合:
$ /etc/init.d/sshd start
ユーザーを追加するには:
$ Sudo useradd userX
$ Sudo passwd userX
... set the password ...
アカウントが完了したら、次のようにします。
$ Sudo userdel -r userX
一方、このユーザーを指定されたディレクトリに制限する場合は、SSHに含まれているSFTPサーバー(openssh)を使用して、これを簡単に有効にすることができます。それはもう少し仕事ですが、多すぎません。手順については、このチュートリアルのタイトルでここで説明しています: LinuxでChroot SFTPをセットアップする方法(SFTPではなくSFTPのみを許可) 。
これらの変更を/etc/ssh/sshd_config
ファイル。
Subsystem sftp internal-sftp
## You want to put only certain users (i.e users who belongs to sftpusers group) in the chroot jail environment. Add the following lines at the end of /etc/ssh/sshd_config
Match Group sftpusers
ChrootDirectory /sftp/%u
ForceCommand internal-sftp
次に、このユーザーがロックされるchrootされたディレクトリツリーを作成する必要があります。
$ Sudo mkdir -p /sftp/userX/{incoming,outgoing}
$ Sudo chown guestuser:sftpusers /sftp/guestuser/{incoming,outgoing}
権限は次のようになります。
$ ls -ld /sftp/guestuser/{incoming,outgoing}
drwxr-xr-x 2 guestuser sftpusers 4096 Dec 28 23:49 /sftp/guestuser/incoming
drwxr-xr-x 2 guestuser sftpusers 4096 Dec 28 23:49 /sftp/guestuser/outgoing
このようなトップレベルのディレクトリ:
$ ls -ld /sftp /sftp/guestuser
drwxr-xr-x 3 root root 4096 Dec 28 23:49 /sftp
drwxr-xr-x 3 root root 4096 Dec 28 23:49 /sftp/guestuser
sshd
サーバーを再起動することを忘れないでください:
$ Sudo service sshd restart
次に、userXアカウントを作成します。
$ Sudo useradd -g sftpusers -d /incoming -s /sbin/nologin userX
$ Sudo passwd userX
... set password ...
アカウントが正しく作成されたことを確認できます。
$ grep userX /etc/passwd
userX:x:500:500::/incoming:/sbin/nologin
アカウントが完了したら、上記と同じ方法で削除します。
$ Sudo userdel -r userX
...上で行った設定ファイルの変更を削除してから、sshd
を再起動してもう一度アクティブにする必要があります。