如何確認 FTP 掛載的 s3 資料夾
在一台 linux 的主機上有 FTP 的服務,背後其實是傳到 AWS 的 S3 上面,這篇會記錄如何去找到這個背後的 S3 key 和 bucket 心路歷程。
首先要確認 FTP 服務是哪一套,可以在自己電腦透過指令的方式來得知
1 | ftp 192.168.100.99 |
1 | Connected to 192.168.100.99. |
從上面資訊中看到 Welcome to Pure-FTPd [privsep] [TLS]
這行文字,可以得知是 Pure-FTPd
這套
接著連到 linux 主機透過指令來查詢有開放什麼樣的資料夾給使用者
1 | cat /etc/pure-ftpd/pureftpd.passwd |
看到的內容格式會是
1 | username:$hashed_password:UID:GID::/targetfolder./:permissions |
這邊代表的是 jimmy
這個使用者,可以看到 /nfs/ftp
這個資料夾底下的內容,沒特別設定權限
找到目錄以後,要確認這目錄是不是掛載進來的,可以使用 findmnt
指令來查詢
1 | findmnt /nfs/ftp |
如果目錄是掛載的,可以看到以下的資訊;如果不是掛載則不會有任何輸出
1 | TARGET SOURCE FSTYPE OPTIONS |
從上面的資訊可以看出來,ftp 這個資料夾是用 s3fs-fuse 這個套件做掛載,和 s3 同步
接著問題來了,s3 是哪個 bucket 以及所使用的 access key,我們往下繼續探究
在主機內我使用以下兩個指令可以查到對應的 bucket
- ps aux
1 | ps aux | grep s3fs |
可以看到底下的資訊,其中的 bucket1
就是目標
1 | root 992 0 0 0 0 ? Ssl Feb03 20:07 s3fs bucket1 /nfs/ftp -o rw,allow_other,dev,suid |
- fstab
1 | cat /etc/fstab | grep s3fs |
這個更簡單的可以看出目標
1 | s3fs#bucket1 /nfs/ftp fuse allow_other 0 0 |
最後就是 access key,最常見的是放在 /.passwd-s3fs
,或是有指定檔案則會在前面兩個指令的結果中呈現
到這邊就已經拿到所有一開始所需要的資料,可以往後做其他事情啦!