A. java實現sftp功能,linux上可以,solaris異常
狀態集合I的a弧轉換,表示為move(I,a)定義為狀態集合J,其中J是所有那些可從I的某一狀態經過一條a弧而到達的狀態的全體。
定義Ia = ε-closure(move(I,a))
B. java 應用程序在linux 上怎麼部署 運行
java 應用程序在linux部署方法:
1,將項目達成war包(用eclipse,項目右鍵--Export--選擇war file)
2,將tomcat(用winSCP當然也可以用secureCRT,用securCRT需要建立sftp(即上傳文件的目錄),用put tomcat命令)考到ilunx對應的目錄下
3,然後將項目的war包放到tomcat的webapps目錄下
4,啟動tomcat(命令:./startup.sh(linux下啟動tomcat是.sh文件而非.bat文件))
遇到問題如下:
運行./startup.sh 是報錯
-bash: ./startup.sh: Permission denied
原因:沒有運行.sh的許可權
解決:chmod 777 *.sh
755 代表用戶對該文件擁有讀,寫,執行的許可權,同組其他人員擁有執行和讀的許可權,沒有寫的許可權,其他用戶的許可權和同組人員許可權一樣。
777代表,user,group ,others ,都有讀寫和可執行許可權。
獲得許可權後再運行./startup.sh命令時報錯:
This file is needed to run this program
原因:該文件需要一個運行環境(即配置jdk環境變數)
解決:JAVA_HOME=/usr/java/jdk1.6.0_25/(當然這個目錄根據自己的jdk安裝目錄)
然後在運行./startup.sh 提示:
Using CATALINA_BASE: /usr/local/sarft/apache/apache-tomcat-6.0.29
Using CATALINA_HOME: /usr/local/sarft/apache/apache-tomcat-6.0.29
Using CATALINA_TMPDIR: /usr/local/sarft/apache/apache-tomcat-6.0.29/temp
Using JRE_HOME: /usr/java/jdk1.6.0_25/
Using CLASSPATH: /usr/local/sarft/apache/apache-tomcat-6.0.29/bin/bootstrap.jar
如果提示以上信息表明 tomcat啟動成功,可以正常run了。
C. 如何使用java的ChannelSftp刪除一個文件夾下的所有文件
public class CopyFile {
public static void main(String[] args) throws IOException {
FileInputStream readFis=new FileInputStream("d:/1.txt");
FileChannel readFc=readFis.getChannel();
ByteBuffer bb=ByteBuffer.allocate(1024);
readFc.read(bb);
FileOutputStream writeFis=new FileOutputStream("d:/2.txt");
FileChannel writeFs=writeFis.getChannel();
writeFs.write((ByteBuffer) bb.flip());
}
}
D. 如何把javawebapi 部署到linux
第一步:先將編譯好的項目打包成zip格式的壓縮包 ,假設命名為(test.zip)
第二步:通過sftp工具(如:WinSCP)將test.zip上傳到指定的文件夾(假設路勁為/project/test.zip)
第三步:配置tomcat虛擬路徑 (修改tomcat---conf----service.xml文件,在Host節點下添加<Context path="" docBase="" />)
這個不會配置的網路,比如這里可以這樣配置 <Context path="" docBase ="/project/test"/> 這樣通過域名就可以直接訪問項目了
第四步:使用xshell4等工具連接到伺服器,這個就不說了
第五步:進入/project目錄,命令如下:
cd ../(進入根目錄)---->cd /project(進入project目錄)
第六步:查看當前文件夾下所有文件(ls)
第七步:停掉tomcat的test服務
ps -ef|grep tomcat (查看已啟動的服務)----------->可以看到已啟動的所有項目,找到test項目的埠號
關閉服務 kill -9 ****
第八步:備份
將test文件夾備份:rename test testbak_時間戳 test(將test文件或文件夾重命名為 testbak_時間戳)
第九步:解壓縮上傳的test.zip
由於當前已在/project目錄下,所以直接解壓unzip test.zip
第十步:啟動tomcat
進入tomcat下的bin目錄:cd ../------->cd /service/tomcat/bin
ls 查看所有文件-------------->sh startup.sh(啟動tomcat)
E. JAVA_JSCH如何遠程操作SFTP伺服器上的文件
使用SSH協議進行FTP傳輸的協議叫SFTP
換言之你的SSH協議一定啟用了,那麼使用基本linux命令在遠端執行即可。
我個人而言,JSCH一般是這樣用的:SFTP用於單純的文件上傳,之後直接使用基礎ssh協議執行遠端linux命令(比如說,移動文件或是重啟伺服器等等)
至於API的具體使用方式,稍微搜索一下很容易找到,比如這個:
http://blog.csdn.net/allen_zhao_2012/article/details/7941631
F. 求,在linux 中,搭建ftp伺服器的方法, 謝謝,
FTP不安全,萬不得已情況下,才可使用。
vsftp安全性相對較好
可採用sftp代替FTP
Linux另外常用的FTP:
proftp
vsftp
pureftp
下面以VSFTP為例:
安裝方式一:源碼包安裝
useradd -s /bin/false -d /var/ftp ftpvirtual
cd ......
make
make install
cp vsftpd.conf /etc
/usr/local/sbin/vsftpd & #啟動
安裝方式二:rpm安裝,推薦
rpm -ivh vsftpd-2.0.1-5.i386.rpm
或者 yum install vsftpd
/etc/init.d/vsftpd start
兩種方式安裝完成後,配置方法都一樣,下面開始講配置。
首先講主配置文件常見配置
vi /etc/vsftpd/vsftpd.conf
anonymous_enable=NO #禁止匿名登錄
local_enable=NO #禁止本地用戶登錄
write_enable=YES #對本地用戶的寫許可權
local_umask=022 #本地用戶文件生成掩碼
dirmessage_enable=YES #顯示隱藏文件
xferlog_enable=YES #啟用上傳和下載日誌
connect_from_port_20=YES #伺服器將啟用FTP數據埠的連接請求
xferlog_std_format=YES #伺服器將使用標準的ftpd xferlog日誌格式
pam_service_name=vsftpd #設置PAM認證服務的配置文件名稱
userlist_enable=YES #設置文件中指定的用戶是否可以訪問vsftpd伺服器
listen=YES #FTP伺服器將處於獨立啟動模式
tcp_wrappers=YES #使用tcp_wrappers作為主機訪問控制方式
chroot_local_user=YES #將FTP本地用戶禁錮在宿主目錄中
chroot_list_enable=YES #將用戶禁錮在宿主目錄中
listen_address=192.168.0.2 #偵聽地址
pasv_enable=YES #是否允使用被動模式,默認是允許的。
pasv_min_port=10000 #指定使用被動模式時打開埠的最小值
pasv_max_port=10004 #指定使用被動模式時打開埠的最大值。
max_clients=100 #設置FTP伺服器所允許的最大客戶端連接數,值為0時表示不限制
max_per_ip=5 #同一IP地址允許的最大客戶端連接數,值為0時表示不限制,即線程
local_max_rate=500000 #設置本地用戶的最大傳輸速率,單位為bytes/sec,值為0時表示不限制
anon_max_rate=200000 #設置匿名用戶的最大傳輸速率,單位為bytes/sec,值為0表示不限制
use_localtime=YES #在vsftp之中的時間默認值是顯式GMT時間,因此我們會發現上面的時間與我們時寄存取的時間差八小時。改了這一項就好了。
listen_port=10021 改埠
one_process_model=NO yes可增加性能,增加負載,便降低安全,建議NO
nopriv_user=nobody 默認以nobody運行vsftp
對外服務,建議使用stand alone方式啟動,性能好。
僅內部人員,建議用super daemon啟動,修改如下:
listen=NO
……略
vsftp默認使用GMT時間,建議修改如下:
use_localtime=YES
/etc/vsftpd.ftpusers #保存不允許進行FTP登錄的本地用戶帳號,提高系統的安全性
/etc/vsftpd.user_list
#禁止vsftpd.user_list中的用戶
userlist_enable=YES
userlist_deny=YES
#僅允許vsftpd.user_list中的用戶
userlist_enable=YES
userlist_deny=NO
日誌:
vsftpd_log_file=/var/log/vsftpd.log
下面開始講vsftp四種「用戶認證」的方式
一、匿名用戶 ftp anonymous
/var/ftp 默認主目錄
在/etc/vsftpd/vsftpd.conf中:
anonymous_enable=YES
anon_upload_enable=YES
anon_other_write_enable=YES #可刪除
chmod -R 777 /var/ftp/pub/
修改/var/ftp/pub的SELinux許可權
執行以下命令,修改/var/ftp/pub這目錄的類型:
chcon -R -t ftpd_anon_rw_t /var/ftp/pub/
anon_root=/var/www/html/ftp #改匿名用戶的宿主目錄
二、本地用戶
默認支持,使用各自的宿主目錄。不安全
local_root=/opt #新增這一項,改成其他路徑
三、虛擬用戶 PAM文件方式 推薦
建立虛擬用戶口令庫文件
# cat logins.txt
mike
pwabcd
john
pw1234
生成vsftpd的認證文件
db_load -T -t hash -f logins /etc/vsftpd/vsftpd_login.db
chmod 600 /etc/vsftpd/vsftpd_login.db
新創建虛擬用戶所需的PAM配置文件
cat /etc/pam.d/vsftpd.vu
auth required /lib/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login
account required /lib/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login
新創建虛擬用戶的系統用戶所要訪問的目錄並設置相應許可權
# useradd -s /bin/false -d /home/ftpsite ftpvirtual
# chmod 700 /home/ftpsite
#設置vsftpd.conf配置文件,支持虛擬用戶
guest_enable=YES
guest_username=ftpvirtual
pam_service_name=vsftpd.vu
user_config_dir=/etc/vsftpd/vsftpd_user_conf #添加用戶配置文件目錄設置
/etc/vsftpd/vsftpd_user_conf/mike (同名),這里沒有的設置默認按vsftpd.conf的設置執行
anon_world_readable_only=NO #可以瀏覽FTP目錄和下載文件
anon_upload_enable=YES #用戶可以上傳文件,等同於 write_enable=yes 允許上傳
anon_mkdir_write_enable=YES #具有建立和刪除目錄的權利
anon_other_write_enable=YES #具有文件改名和刪除文件的許可權
local_root=/data/userspace #設置虛擬用戶登錄後的主目錄
anon_max_rate=1024000 #以Bytes/s為單位,這里限8Mbit,范圍大概在80%到120%之間
四、虛擬用戶 mysql認證方式 推薦
1. mysql安裝見mysql筆記
2.1 openssl-0.9.8e 源程序預編譯時在日誌中可能出現md5.h "Present But Cannot Be Compiled的錯誤,卸載下面某些包可能解決問題。
cyrus-sals-sql cyrus-sasl-ntlm cyrus-sasl-gssapi cyrus-sasl-devel openldap-devel
然後移除系統可能自帶的:
mv /usr/bin/openssl /usr/bin/openssl.OFF
mv /usr/include/openssl /usr/include/openssl.OFF
ln -s /usr/local/ssl/bin/openssl /usr/bin/openssl
ln -s /usr/local/ssl/include/openssl /usr/include/openssl
配置庫文件搜索路徑
#echo "/usr/local/ssl/lib" >> /etc/ld.so.conf
#ldconfig -v
2.2 或者安裝openssl-0.9.8e的rpm包
3. pam_mysql-0.7RC1.tar.gz
#./configure --with-mysql=/usr/local/mysql --with-openssl=/usr/local/ssl
如果mysql是rpm安裝的,則不帶--with-mysql參數,如果openssl是rpm安裝的,參數為--with-openssl
make;make install
注意pam_mysql.so路徑,可能在/usr/lib/security/pam_mysql.so或/lib/security/pam_mysql.so
vi /etc/pam.d/vsftp.mysql #新建,僅兩行
auth required /lib/security/pam_mysql.so user=vsftpd passwd=123456 host=localhost db=vsftp table=users usercolumn=name passwdcolumn=passwd crypt=2
account required /lib/security/pam_mysql.so user=vsftpd passwd=123456 host=localhost db=vsftp table=users usercolumn=name passwdcolumn=passwd crypt=2
4.0 准備資料庫、表和數據
mysql> create database vsftp;
mysql> grant select on vsftp.* to vsftpd@localhost identified by '123456';
mysql> grant select on vsftp.* to [email protected] identified by '123456';
mysql> use vsftp;
mysql> create table users (
-> id int AUTO_INCREMENT NOT NULL,
-> name char(20) binary NOT NULL,
-> passwd char(48) binary NOT NULL,
-> primary key(id)
-> );
mysql> insert into users(name,passwd) values('hlc',password('hlc'));
mysql> insert into users(name,passwd) values('holly',password('holly'));
5.0 修改主配置文件
vi /etc/vsftpd/vsftpd.conf
guest_enable=YES
guest_username=vsftp
listen=YES
pam_service_name=vsftpd.mysql
以上完成了vsftp的配置,下面是補充:
dirmessage_enable=YES #設置歡迎語 在每個目錄下建立.message,寫入歡迎語即可。
db_load支持包(前面三個即可):
db4
db4-devel
db4-utils
db4-java
db4-tcl
Linux建議關閉selinux或征對FTP不做任何安全
setsebool -P -ftpd_disable_trans on
setsebool -P -allow_ftpd_full_access on
servie vsftpd restart
或者需要重啟伺服器
底下列出FTP訪問中所出現數字代碼的含意。
110 重新啟動標記應答。
120 服務在多久時間內ready。
125 數據鏈路埠開啟,准備傳送。
150 文件狀態正常,開啟數據埠。
200 命令執行成功。
202 命令執行失敗。
211 系統狀態或是系統求助響應。
212 目錄的狀態。
213 文件的狀態。
214 求助的訊息。
215 名稱系統類型。
220 新的聯機服務ready。
221 服務的控制埠關閉,可以注銷。
225 數據鏈接開啟,但無傳輸動作。
226 關閉數據埠,請求的文件操作成功。
227 進入passive mode。
230 用戶登錄。
250 請求的文件操作完成。
257 顯示目前的路徑名稱。
331 用戶名稱正確,需要密碼。
332 登入時需要帳戶信息。
350 請求的操作需要進一部的命令。
421 無法提供服務,關閉控制連結。
425 無法開啟數據鏈路。
426 關閉聯機,終止傳輸。
450 請求的操作未執行。
451 命令終止:有本地的錯誤。
452 未執行命令:磁碟空間不足。
500 格式錯誤,無法識別命令。
501 參數語法錯誤。
502 命令執行失敗。
503 命令順序錯誤。
504 命令所接的參數不正確。
530 未登入。
532 儲存文件需要賬戶登入。
550 未執行請求的操作。
551 請求的命令終止,類型未知。
552 請求的文件終止,儲存位溢出。
553 未執行請求的的命令,名稱不正確。