Linuxでssh不可sftpだけアクセス可能なユーザーを作りアクセスディレクトリも制限する

linux

久しぶりに Linuxのお話です。

サーバーが存在し、ファイルのやり取りだけの制限したユーザーを作る手順メモです。SSHログインは禁止し、SFTPのみ許可。ディレクトリも指定以外はアクセス出来ないようにします。FTPではありません。SFTPです。

CentOS6です

まずはrootでLinuxへログインし、SFTP用のグループとユーザーを作ります。

# groupadd {GroupName}
# useradd  -g{GroupName} {UserName}

ユーザーのログイン後ディレクトリを「/」ルートにします

# usermod -d /  {UserName}

SFTPでアクセス許可するディレクトリを作ります。
mkdirの次の2行は非常に重要です。必ずディレクトリのオーナーをrootにして、パーミッションを755にします。

# mkdir /sftp/hogehoge
# chown root:root /sftp/
# chmod 755 /sftp/

次に{UserName}がSFTPログインした際にchrootするディレクトリを作ります。ここはオーナーをSFTPログインするユーザーにします。

# chown {GroupName}:{UserName} /sftp/hogehoge
# chmod 755 /sftp/hogehoge

SSHDの設定ファイルを変更します。

# vi /etc/ssh/sshd_config
以下をコメント化し、internal-sftp に変更します
#Subsystem sftp /usr/lib/openssh/sftp-server
Subsystem sftp internal-sftp
ファイルの末尾に以下を加えます
Match group {GroupName}
  ChrootDirectory /stfp/
  X11Forwarding no
  AllowTcpForwarding no
  ForceCommand internal-sftp

sshdを再起動します。

# service sshd restart

これで {UserName} でログインして、/sftp/hogehoge 以下で一連のファイル操作が出来ればOKです。

コメント

タイトルとURLをコピーしました