SFTP はユーザーに全権限を付与します。

SFTP はユーザーに全権限を付与します。

SFTPユーザーにすべての権限を付与する方法は?私の言葉は、すべてのフォルダにアクセスし、必要に応じて削除してアップロードすることです。 (私はUbuntu 20.04を使用しています)

ベストアンサー1

ちなみにそうではありませんSFTPユーザー、一部のユーザーはコンソール、SSH、またはFTPを介してシステムにアクセスできます。認証されると、これらのユーザーはシェルやsshのsftpサブシステムなどの特定のアプリケーションを実行できますが、それらが実行するプロセスはシステムアクセス制御によって制限されます。

アクセス制御制限が適用されない1つのタイプのユーザーがあります。まさにユニバーサルrootユーザーです。これは通常、管理タスクの実行時に偽装したいユーザーです。たとえば、sudoこのユーザーを使用することもできますが、転送することもできますssh

このユーザーは全能であるため、安全な方法で認証を実行するには注意が必要です。 SSH経由で接続する場合、セキュリティレベルの低いパスワード認証はデフォルトで許可されていません。代わりにキー認証を使用できます。

()をsftp使用するには、公開SSHキーをファイルに新しい行として追加する必要があります。また、このキーを使用してSSH認証をSFTPに制限することもできます。rootsftp root@user:/path~root/.ssh/authorized_keys

restrict,command="internal-sftp" your-public-key-here

(該当する公開鍵を使用して、そのシステムで実行できる操作を制限するわけではありません。システムのファイルを変更できる場合は、システムに何かを実行させることができます。)

SFTPサブシステムを使用するときにルートのように制限なく認証したい場合は、Linux機能を引き続き使用できます。

たとえば、次のようにします。

sudo dpkg-divert --local --rename /usr/lib/openssh/sftp-server

原稿sftpをに転送します/usr/lib/openssh/sftp-server.distrib

sudo install -m 0110 -g yourusername /usr/lib/openssh/sftp-server.{distrib,unrestricted}

コピーをパススルー専用にしますyourusername

sudo setcap 'cap_dac_override+ep cap_chown+ep cap_fowner+ep cap_fsetid+ep' /usr/lib/openssh/sftp-server.unrestricted

ファイルシステムへのアクセスに関する制限を削除するには、この実行可能ファイルの機能を設定します。

/usr/lib/openssh/sftp-server次にスクリプトで生成します。たとえば、次のようになります。

#! /bin/bash -
if [ "$LOGNAME" = yourusername ]; then
  cmd=$0.unrestricted
else
  cmd=$0.distrib
fi
exec -a "$0" -- "$cmd" "$@"

(実行可能にするために使用することを忘れないでくださいsudo chmod a+x /usr/lib/openssh/sftp-server)。

これにより、sftpサービス(通常ssh経由)を使用するときに制限はありません。

しかし、身元を維持することに注意してください。たとえば、新しいファイルをアップロードすると、デフォルトでそのファイルはあなたの所有になります。一般ユーザーにシステムファイルを所有させるのは悪い習慣です。

おすすめ記事