デフォルトでは、ossfs は root ユーザーとして実行されます。特定のシステムユーザー (例:www) にマウントされたディレクトリを所有させるには、その非 root ユーザーとしてバケットをマウントします。このトピックでは、Linux ベースの Elastic Compute Service (ECS) インスタンスでの全手順を説明します。
前提条件
開始する前に、以下が準備できていることを確認してください。
Linux を実行している ECS インスタンス
OSS バケット
ECS インスタンスに ossfs がインストールされている。詳細については、「インストール」をご参照ください。
/etc/passwd-ossfs認証情報ファイルが、<bucket-name>:<access-key-id>:<access-key-secret>のフォーマットで有効な AccessKey 認証情報を使用して作成されていること初期設定のための root または sudo アクセス権限
操作手順
この手順では、非 root ユーザーの例として www を使用します。手順全体を通して、www を実際のターゲットユーザー名に置き換えてください。
ステップ 1:非 root ユーザーの作成
ユーザーが既に存在する場合は、このステップをスキップしてください。
useradd wwwステップ 2:ターゲットユーザーの UID と GID の取得
id コマンドを実行して、UID と GID を取得します。
id www出力は次のようになります。
uid=1001(www) gid=1001(www) groups=1001(www)uid と gid の値を記録しておきます。これらの値はマウントコマンドで必要になります。
ステップ 3:認証情報ファイルの権限設定
権限を 640 に設定し、オーナーをターゲットユーザーに変更します。
chmod 640 /etc/passwd-ossfs
chown -R www:root /etc/passwd-ossfsステップ 4:ossfs バイナリパスの確認
次のコマンドを実行して、インストールパスを確認します。
which ossfsデフォルトのパスは /usr/local/bin/ossfs です。返されたパスが異なる場合は、実際のパスを使用してください。
ステップ 5:マウントディレクトリの作成
ターゲットユーザーに切り替え、マウントポイント用のディレクトリを作成します。
su - www
mkdir ~/test1この例では、ディレクトリ名として test1 を使用しています。任意の名前と置き換えてください。ステップ 6:バケットのマウント
www ユーザーとして次のコマンドを実行します。
/usr/local/bin/ossfs <bucket-name> ~/test1 \
-ourl=<endpoint> \
-ouid=<uid> \
-ogid=<gid> \
-o passwd_file=/etc/passwd-ossfs \
-odefault_permission=750各パラメーターの説明は次のとおりです。
| パラメーター | 説明 | 例 |
|---|---|---|
<bucket-name> | マウントする OSS バケットの名前 | my-bucket |
<endpoint> | バケットが配置されているリージョンのエンドポイント | http://oss-ap-southeast-1.aliyuncs.com |
<uid> | ステップ 2 で取得したターゲットユーザーの UID | 1001 |
<gid> | ステップ 2 で取得したターゲットユーザーの GID | 1001 |
passwd_file | 認証情報ファイルの絶対パス | /etc/passwd-ossfs |
default_permission | マウントされたディレクトリのデフォルトの権限モード | 750 |
ステップ 7:マウントの確認
マウントディレクトリをリスト表示して、バケットがマウントされ、所有権が正しいことを確認します。
ls -l ~/test1マウントが成功すると、バケットのコンテンツが表示され、オーナーが www ユーザーであることが示されます。
バケットのアンマウント
次のいずれかの方法でバケットをアンマウントします。
root ユーザーとして:
umount /home/www/test1非 root ユーザーとして:
fusermount -u /home/www/test1
/home/www/test1 をマウントディレクトリの実際の絶対パスに置き換えてください。