php scandir sftp,CentOS 下使用SFTP實現網站自動生成FTP賬號,實現Chroot功能

背景 手上有一個這樣的系統:后臺可以直接新建項目(網站),只需輸入項目名稱、訪問域名(二級)以及其他一些額外信息,就可自動生成一個模板網站。大致原理是:提交這些信息的時候,后臺會給項目新建一個目錄,并把一些必須的文件拷貝過去,然后會有一個二級域名映射文件實現二級域名訪問。當然,一級域名可實現訪問,前提是要完成備案。 之前對于單個項目都是通過一個統一sftp賬號管理的,隨著項目的增多,發現要找到相應目錄會比較困難,所以現在希望在新建項目的時候能夠自動生成對應的sftp賬號,實現一對一管理。

過程 vsftpd是首選,我也嘗試過這種實現。由于內部服務器架構的問題,IP地址是個限制,無法實現vsftpd的訪問,詢問過相關人員給出的答案也是如此,所以作罷。 經過一番了解,發現sftp是剩下的唯一一條路,接著熟悉、實踐,最終解決上級需求。

由于不需要安裝其他第三方軟件,只需要CentOS系統賬戶以及一些目錄權限的設置,整個實現過程不是太復雜,但權限的問題絕不是那么容易就可以搞定的,有一些 規則不能違背,否則失敗。

假設目錄結構是這樣的: /var/www/site1 /var/www/site2

相應的系統賬號分別是 site1 和 site2 ,使用passwd設置相應密碼,site1 和 site2 的家目錄分別是/var/www/site1和 /var/www/site2

此處有兩個限制:

從site1和site2開始設置的目錄權限及其所有的上級文件夾權限,屬主和屬組必須是root;

從site1和site2開始設置的目錄權限及其所有的上級文件夾權限,只有屬主能擁有寫權限,也就是說權限最大設置只能是755。

如果我們把網站文件就放在site1和site2下面的話,是沒有權限求改的,這由sftp的內在實現決定,我們只能遵守。所以,解決方案是,我們在site1和site2下面再分別新建一個 web 目錄,權限是 775,屬主分別是 site1 和 site2,屬組 仍然還是 root 。為實現apache的解析正常,apache服務的運行組需要設置成 root 。

權限設置完成后,修改 sshd_config 設置:

vim /etc/ssh/sshd_config

#注釋原來的Subsystem設置

Subsystem sftp /usr/libexec/openssh/sftp-server

#啟用internal-sftp

Subsystem sftp internal-sftp

#限制www用戶的根目錄

Match User apache

ChrootDirectory /var/www

ForceCommand internal-sftp

#限制blog和pay用戶的根目錄

Match Group root

ChrootDirectory %h

ForceCommand internal-sftp

除此之外,web 目錄下生成的其他目錄的權限也必須是 775 。可通過修改 umask 為 0002 來實現。

最后,一個完整的sftp 方案誕生。

ps: 升級OpenSSH的版本。只有4.8p1及以上版本才支持Chroot。 CentOS 5.4的源中的最新版本是4.3,因此需要升級OpenSSH。 可通過ssh -V命令查看是否需要升級,升級方法自行搜索。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/537875.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/537875.shtml
英文地址,請注明出處:http://en.pswp.cn/news/537875.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

IOS內購詳解

介紹 最近開發的一款APP上架被駁回了,理由是: 上架的APP是培訓類,里面金牌視頻課程需要購買,Android端使用支付寶,微信支付。 蘋果規定 數字化內容、App功能以及服務等,需要使用內購 真實世界中的服務(…

匯編中的函數調用與遞歸

棧幀的結構 倘若我們要想搞清楚過程的實現,就必須先知道棧幀的結構是如何構成的。棧幀其實可以認為是程序棧的一段,而程序棧又是存儲器的一段,因此棧幀說到底還是存儲器的一段。那么既然是一段,肯定有兩個端點,這個不需…

php 相親 段子,精彩的男女幽默段子

精彩的男女幽默段子。撒嬌老婆洗完澡對老公撒嬌說:老公,抱我到床上去吧。老公看了看老婆,冷冷的回答道:我還是把床搬過來吧!所以,撒嬌還是要看體型!單身老公說:老婆,你不…

Redmine數據庫備份及搬家

Bitnami Redmine的備份分2種方式: 1.導出數據庫 2.整個目錄搬家 不管是哪種都想停掉服務,redmine相關的服務有以下5個: redmineApache   redmineMySQL   redmineSubversion   redmineThin1   redmineThin2 可以打開windows服務控制面…

且看BCH開啟的“信用本位”時代

??? 且看BCH開啟的“信用本位”時代 比特幣向來被稱為“金本位”的互聯網實驗,由于中本聰先生的天才發明,POW機制給予了比特幣與黃金同樣的生產模式。所以,時至今日,BCE依然自稱為“數字黃金”。 只可惜,“一葉障目…

oracle設置臨時表空間,Oracle臨時表空間查看、添加臨時表空間數據文件、修改默認臨時表空間 方法!...

--查表空間使用率情況(含臨時表空間)SELECT d.tablespace_name "Name", d.status "Status",TO_CHAR (NVL (a.BYTES / 1024 / 1024, 0), 99,999,990.90) "Size (M)",TO_CHAR (NVL (a.BYTES - NVL (f.BYTES, 0), 0) / 1024 / 1024,99999999.99) US…

Redmine項目管理工具安裝

Redmine免費開源的項目管理工具 下載 一鍵安裝工具 https://bitnami.com/stack/redmine/installer 安裝 Redmine一鍵安裝工具集成了php服務,mysql服務。盡管安裝就好。 安裝完成后,在開始菜單,找到-----Bitnami Redmine Stack--------Bi…

Oracle創建假脫機文件,oracle – 在sqlplus中假脫機csv文件時的標頭格式

我需要使用sqlplus從Oracle中的表中調整csv.以下是所需的格式:"HOST_SITE_TX_ID","SITE_ID","SITETX_TX_ID","SITETX_HELP_ID""664436565","16","2195301","0""664700792&qu…

方便微信公眾號等手機網頁調試插件eruda和vConsole

原文地址&#xff1a;https://blog.csdn.net/qq_39234840/article/details/80951710 ---------------------------------------------------------- 調試插件一&#xff1a;eruda&#xff08;推薦&#xff0c;因為比vConsole功能多&#xff09; <script src"//cdn.js…

HDU 3530Subsequence(單調隊列)

題意 題目鏈接 給出$n$個數&#xff0c;找出最長的區間&#xff0c;使得區間中最大數$-$最小數 $> m$ 且$< k$ Sol 考慮維護兩個單調隊列。 一個維護$1 - i$的最大值&#xff0c;一個維護$1 - i$的最小值。 至于兩個限制條件。 $<k$可以通過調整隊首來滿足 $>a$可以…

oracle權限培訓,Java培訓-ORACLE數據庫學習【2】用戶權限

查詢用戶擁有的權限&#xff1a;1.查看所有用戶&#xff1a;select *from dba_users;select *from all_users;select *from user_users; 2.查看用戶或角色系統權限(直接賦值給用戶或角色的系統權限)&#xff1a;select *from dba_sys_privs;select *from user_sys_privs; 3.查看…

linux 中文件夾的文件按照時間倒序或者升序排列

1&#xff0c;按照時間升序 命令:ls -lrt 詳細解釋: -l use a long listing format 以長列表方式顯示&#xff08;詳細信息方式&#xff09; -t sort by modification time 按修改時間排序&#xff08;最新的在最前面&#xff09; -r reverse order while sorti…

PHP中關于時間(戳)、時區、本地時間、UTC時間等的梳理

PHP中關于時間&#xff08;戳&#xff09;、時區、本地時間、UTC時間等的梳理 在PHP開發中&#xff0c;我們經常會在時間問題上被搞糊涂&#xff0c;比如我們希望顯示一個北京時間&#xff0c;但是當我們使用date函數進行輸出時&#xff0c;卻發現少了8個小時。幾乎所有的php猿…

WebServiceStudio.exe測試webservice接口工具

WebServiceStudio.exe測試webservice接口工具 下載鏈接 https://pan.baidu.com/s/1gf8ajS3 打開工具WebServiceStudio&#xff0c;如下填寫地址&#xff0c;點擊【Get】按鈕 會顯示出需要傳參的地方&#xff0c;在value中填寫xml參數 輸入完value值后&#xff0c;點擊【Invok…

oracle最大實例數,【ORA-16196】一個實例在其生命周期里最多只能裝載和打開一個數據庫...

如果使用“alter database open;”命令打開一個曾經被“alter database close;”命令關閉的數據庫時&#xff0c;您將會收到如下的報錯信息&#xff1a;"ORA-16196: database has been previously opened and closed"這個報錯的原因是什么呢&#xff1f;原因是&#…

Navicat工具導出Mysql數據表結構到Excel文件中

原文鏈接&#xff1a;https://blog.csdn.net/zt15732625878/article/details/77978266 ------------------------------------------------------------------------ 前言 項目中數據庫設計已經完成&#xff0c;現在到了代碼實現的階段&#xff0c;數據庫中沒有數據&#xff…

利用MAVEN的profile 實現打包環境的切換

樂哉碼農產生問題的背景 由于在項目開發的時候&#xff0c;我們一般都是使用的本地庫&#xff0c;數據庫連接寫的是本地的&#xff0c;如果我們將項目打成war的時候&#xff0c;里面的配置連接寫的是我們本地的&#xff0c;當我們直接把war拷貝到服務器上面進行部署的時候&…

服務器oracle優化,oracle服務器配置及優化

1.在ORACLE中實現分布式快速存取和充實內存是很重要的。要不惜任何代價避免頁面調度和交換﹐每次都必須把系統全局區(SGA)放到內存。將SGA放到內存中﹐在INIT.ORA中設置參數 PRE_PAGE_SGAPRE_PAGE_SGAYES2.回卷段的竟爭會降低系統的性能。SELECT GETS,WAITS from V$ROLLSTAT;…

Android 常用的數據加密方式

前言 Android 很多場合需要使用到數據加密&#xff0c;比如&#xff1a;本地登錄密碼加密&#xff0c;網絡傳輸數據加密&#xff0c;等。在android 中一般的加密方式有如下&#xff1a; 亦或加密AES加密RSA非對稱加密當然還有其他的方式&#xff0c;這里暫且介紹以上三種加密算…

oracle可以注入嗎,ORACLE 注入

1判斷是什么數據庫and exist(select * from dual)and exists(select * from user_tables)原理&#xff1a;dual表和user_tables表是oracle中的系統表返回正常&#xff0c;那么就可以肯定這是oracle。2查字段數order by 10-- //錯誤,列數小于10order by 3-- //正常,列數等于…