web-dev-qa-db-ja.com

rootユーザーでもsshfs権限が拒否されました

sshfsを使用して、リモートフォルダーを別のサーバーからローカルサーバーにマウントします。リモートフォルダーのマウントは、次のコマンドを使用して問題なく機能します。

sshfs -o allow_other someServerFromSSHConfig:/home/data/somefolder/ /some/local/folder

問題は、(ルート権限に関係なく)chownを使用してファイルの所有者を変更できないことです。

chown: changing ownership of ‘/somefolder/file.img’: Permission denied

フォルダーにアクセスするユーザーは、Fuseグループのメンバーです。 sshfsに追加のマウントオプションを追加して、所有者をuserx:groupxとして設定しても、userxおよびchown -R userx:groupx [...]を使用して権限を変更することはできません

マウントされたフォルダー内のファイルにユーザー権限を設定できると思いますが、そうではありません。

6
Flatron

コメントで言ったように、data @ remote_serverとして接続します。つまり、chownはまったくできません。 sshfsは単なる大まかな抽象化であり、sftp data@remote_server内で実行できるアクションに対してのみ許可されます。これもすべての抽象化に漏れがあります。

Root_remote_serverのみがremote_serverでchownを実行できます。 local_serverのユーザーは関係ありません。

sftp root@remote_serverを実行するには、通常、リモートのPermitRoot yesPermitRoot without-passwordまたは/etc/ssh/sshd_configを実行する必要があります。これは危険です。

PS。 PermitRoot noオプションがあるため、デフォルトでは、sshdはrootログインをまったく許可しません。したがって、通常はsshfs root @ remote_Hostを実行できません。ルート経由でchownの動作をテストする場合は、PermitRoot without-passwordを設定することをお勧めします。これは、公開鍵が/root/.ssh/authorized_keysに追加されたときにrootがログインできることを意味します。この設定では、rootはrootパスワードを提供するだけではログインできないため、多少安全です。

PS2。もう少しセキュリティが必要な場合は、このファイル共有に対してのみsshdの別のインスタンスを設定できます。 ForceCommand internal-sftpchrootを使用すると、ルートのセキュリティが大幅に向上しますが、新しいTCPポートと新しいファイアウォールの例外を使用する必要があります。

5
kubanczyk

Sshfsがマウントされたフォルダーに特定のファイルの所有権を設定する場合は、uid=USER_ID_N,gid=USER_GID_Nおよびidmap=userオプションを使用してこれを行う必要があります。

  • uid、gid-ファイルの報告された所有権を指定された値に設定します。 uidはユーザーの数値ユーザーID、gidはユーザーの数値グループIDです。
  • idmap-接続しているユーザーのUIDを変換するには、ユーザー値を指定してidmapオプションを使用します。 # sshfs -o idmap=user sessy@mycomputer:/home/sessy /mnt/sessy -C -p 9876彼は、リモートユーザー「sessy」のUIDを、このプロセスを実行するローカルユーザー(上記の例では「root」)にマップし、GIDは変更されません。

知っておくべきことの1つは、UID(ユーザーID、システム上のユーザーの一意の番号)が2つのホストで必ずしも同じではないことです。 ls -lを実行すると、各ファイルに関連付けられているユーザー名が3列目に出力されます。ただし、ファイルシステムにはUIDのみが保存され、lsはUIDを検索して、それに関連付けられているユーザー名を見つけます。 Unixでは、ユーザー名ではなく、UIDが重要です。したがって、ローカルホストで1000、リモートホストで1003の場合、sshfsマウントされたディレクトリには、ファイルの異なるユーザー名が表示されます。ただし、これは問題ではありません。リモートマシンのsshサーバーが実際にファイルの読み取りと書き込みを行うサーバーだからです。そのため、ls -lに異なるUIDとして表示されますが、変更はすべてリモートホストのsshサーバーを通じて行われ、リモートマシンの正しいUIDが使用されます。ファイルのUIDを調べるプログラムを使用しようとすると、問題が発生する可能性があります(例:lsは間違ったユーザー名を出力します)。

idmap = userオプションは、リモートユーザーが所有するファイルがローカルユーザーが所有することを保証します。 idmap = userを使用しない場合、コンピューターとリモートコンピューターは各ユーザー名に関連付けられた数値ユーザーIDについて異なる考えを持っているため、マウントされたディレクトリ内のファイルは他の誰かが所有しているように見える可能性があります。 idmap = userは、他のユーザーのUIDを変換しません。

引用元: https://help.ubuntu.com/community/SSHFS

2
Diamond