一開始在設定FTP Server時發生了不論權限如何設定
都無法上傳檔案到設定的資料夾內
總是出現錯誤訊息
553 Could not create file
或者
550 SITE CHMOD command failed.
經過多番查找資料,原來在CentOS內預設是有SELinux這個機制並且預設還是開啟的
鳥哥的網站這篇也有介紹到這個功能
http://linux.vbird.org/linux_basic/0440processcontrol.php#selinux
以及Wiki上的介紹
http://en.wikipedia.org/wiki/Security-Enhanced_Linux
SELinux全名是 Security Enhanced Linux是一個針對檔案權限限制更嚴謹的模組......
詳細介紹就此省略了
紀錄一下
關掉 SELinux
vi /etc/sysconfig/selinux
將 SELINUX=enforcing 改成 SELINUX=disabled
存檔
重新開機
完成!!
2015年3月25日 星期三
[Azure]Azure VM設定Public IP (PIP)
最近在研究MS Azure上的VM
利用Azure裡面market提供的CentOS with LAMP的映像檔建立了一個vm在上面
因為此映像檔建立後就自動將LAMP給安裝好了
但是要上下傳資料的FTP卻沒有安裝
這個部分需要自己手動將vsftpd給安裝上去
當FTP Server安裝設定完成後發現被動模式pasv的部份無法透過Azure VM預設給的IP從外部連線進去
錯誤紀錄是連線都正常但是最後會卡住造成連線失敗
經過上MSDN官網查了相關文件說明後發現這篇
https://msdn.microsoft.com/zh-tw/library/azure/dn690118.aspx
這個PIP全名是Instance-level Public IP Address (PIP)
用途是
"執行個體層級公用 IP (PIP) 是您可以直接指派給 VM 的 IP 位址,而不是指派給您 VM 所在之雲端服務的 IP 位址"
然後還有這張架構圖
原來是這個
這篇文件裡面還說明了如何在VM上面建立一個PIP
不過目前PIP的設定還沒在網頁的操作介面上有看到此設定
文件也指出需要透過Azure PowerShell下指令的方式去處理
==============
Azure PowerShell工具可以透過以下連結下載,同時支援多種OS
http://azure.microsoft.com/zh-tw/downloads/
的命令列工具
==============
建立的方式有幾個情況
1.在新建VM的時候就加入了PIP
2.在現有的VM上加入PIP
->
*關於參數-ServiceName後面要接什麼名稱,可以先下這個指令,在照列出來的資訊輸入
利用Azure裡面market提供的CentOS with LAMP的映像檔建立了一個vm在上面
因為此映像檔建立後就自動將LAMP給安裝好了
但是要上下傳資料的FTP卻沒有安裝
這個部分需要自己手動將vsftpd給安裝上去
當FTP Server安裝設定完成後發現被動模式pasv的部份無法透過Azure VM預設給的IP從外部連線進去
錯誤紀錄是連線都正常但是最後會卡住造成連線失敗
經過上MSDN官網查了相關文件說明後發現這篇
https://msdn.microsoft.com/zh-tw/library/azure/dn690118.aspx
這個PIP全名是Instance-level Public IP Address (PIP)
用途是
"執行個體層級公用 IP (PIP) 是您可以直接指派給 VM 的 IP 位址,而不是指派給您 VM 所在之雲端服務的 IP 位址"
然後還有這張架構圖
原來是這個
這篇文件裡面還說明了如何在VM上面建立一個PIP
不過目前PIP的設定還沒在網頁的操作介面上有看到此設定
文件也指出需要透過Azure PowerShell下指令的方式去處理
==============
Azure PowerShell工具可以透過以下連結下載,同時支援多種OS
http://azure.microsoft.com/zh-tw/downloads/
的命令列工具
==============
建立的方式有幾個情況
1.在新建VM的時候就加入了PIP
New-AzureVMConfig -Name "FTPInstance" -InstanceSize Small -ImageName $images[50].ImageName | Add-AzureProvisioningConfig -Windows -AdminUsername narayan -Password abcd123 | Set-AzurePublicIP -PublicIPName "ftpip" | New-AzureVM -ServiceName "FTPinAzure" -Location "North Central US"
2.在現有的VM上加入PIP
->
Get-AzureVM -ServiceName FTPInAzure -Name FTPInstance | Set-AzurePublicIP -PublicIPName ftpip | Update-AzureVM
*關於參數-ServiceName後面要接什麼名稱,可以先下這個指令,在照列出來的資訊輸入
Get-AzureVM
建立完成後要查看VM的PIP資訊可以透過以下指令Get-AzureRole -ServiceName FTPInAzure -Slot Production -InstanceDetails
如果要移除VM的PIP,透過以下指令![]()
設定完成後再回Azure的操作畫面去增加pasv需要用到的port就可以正常連線了Get-AzureVM -ServiceName FTPInAzure -Name FTPInstance | Remove-AzurePublicIP | Update-AzureVM
[Linux]CentOS vsftp 增加安全性設定
使用root登入是有一定程度的安全性問題,因為FTP傳輸時預設並沒有加密
上網查到有以下幾個方法能增加FTP存取時的安全性
1.限制FTP使用者
如果要新增adminuser這個帳號而且將目錄固定在/var/www/html/adminuser/user_html這個目錄中,但無法使用SSH登錄系統
指令
adduser -d /var/www/html/adminuser/user_html -g ftp -s /sbin/nologin adminuser
passwd adminuser
輸入登入時的密碼
如果要使只有adminuser可以切換目錄
要修改vsftpd.conf並加上以下設定
指令
vi /etc/vsftpd/vsftpd.conf
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
然後
vi /etc/vsftpd/chroot_list
把adminuser這個帳號加入到此文件內存檔就完成了
更進一步的限制:限制連線來源IP
設定只允許 192.168.0.0/24 的主機能登入 FTP Server
請修改 /etc/hosts.allow
vi /etc/hosts.allow
在裡面加入
vsftpd: 192.168.0.x
以及修改 /etc/hosts.deny
vi /etc/hosts.deny
在裡面加入
vsftpd: ALL
上網查到有以下幾個方法能增加FTP存取時的安全性
1.限制FTP使用者
如果要新增adminuser這個帳號而且將目錄固定在/var/www/html/adminuser/user_html這個目錄中,但無法使用SSH登錄系統
指令
adduser -d /var/www/html/adminuser/user_html -g ftp -s /sbin/nologin adminuser
passwd adminuser
輸入登入時的密碼
如果要使只有adminuser可以切換目錄
要修改vsftpd.conf並加上以下設定
指令
vi /etc/vsftpd/vsftpd.conf
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
然後
vi /etc/vsftpd/chroot_list
把adminuser這個帳號加入到此文件內存檔就完成了
更進一步的限制:限制連線來源IP
設定只允許 192.168.0.0/24 的主機能登入 FTP Server
請修改 /etc/hosts.allow
vi /etc/hosts.allow
在裡面加入
vsftpd: 192.168.0.x
以及修改 /etc/hosts.deny
vi /etc/hosts.deny
在裡面加入
vsftpd: ALL
[Linux]CentOS vsftp登入時發生錯誤 [500 OOPS:cannot change directory]
剛設定好的FTP Server在登入時可能會出現這樣的錯誤
500 OOPS:cannot change directory
完成
500 OOPS:cannot change directory
這個問題原因找了好久也檢查過/home目錄下確實是有[AccountName]目錄的
後來發現原來是SELinux 的問題,又加上有開防火牆
解決的方法有兩個
1.關閉 SELinux
vi /etc/selinux/config
在裡面把
SELINUX=enforcing
改成
SELINUX=disabled
重新開機即可
reboot
****但是不建議使用這種方式****
2.查看SELinux設定中有關於ftp的權限設定
sestatus -b | grep ftp
會出現以下訊息
allow_ftpd_anon_write off
allow_ftpd_full_access off
allow_ftpd_use_cifs off
allow_ftpd_use_nfs off
ftp_home_dir off
ftpd_connect_db off
ftpd_use_fusefs off
ftpd_use_passive_mode off
httpd_enable_ftp_server off
tftp_anon_write off
tftp_use_cifs off
tftp_use_nfs off
發現ftp_home_dir預設是off的,所以把ftp_home_dir打開
指令
setsebool -P ftp_home_dir on
如果要給user有完整的存取權限另外要再把allow_ftpd_full_acces給打開
setsebool -P allow_ftpd_full_access on
重新啟動FTP Server
service vsftpd restart
[Linux]CentOS vsftpd的安裝與設定
CentOS安裝完成後FTP server的功能基本上是沒有的
但是要將檔案送到主機上,FTP倒是一種經常用的途徑之一
因此使用FTP server當做檔案接收的服務,有需要用時開啟用完則關
因為指令太多了在此紀錄一下
首先先切換到root權限(這樣指令可以少打sudo :p)
可透過指令直接新增
找到root 前面加上#號註解(清單內的帳號都是一些可能會被拿來亂用的)
vi /etc/vsftpd/ftpusers
# Users that are not allowed to login via ftpbin
之後再移除user_list裡面的帳號
重新啟動vsftpd
但是要將檔案送到主機上,FTP倒是一種經常用的途徑之一
因此使用FTP server當做檔案接收的服務,有需要用時開啟用完則關
因為指令太多了在此紀錄一下
首先先切換到root權限(這樣指令可以少打sudo :p)
安裝 vsftpd:
yum -y install vsftpd
touch /etc/vsftpd/chroot_list
chkconfig vsftpd on
設定防火牆開通Port 21 :
防火牆iptables位置在 /etc/sysconfig/iptables可透過指令直接新增
iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 21 -j ACCEPT
service iptables save
編輯 "/etc/vsftpd/vsftpd.conf"
vi /etc/vsftpd/vsftpd.conf
設定
anonymous_enable=YES
改成
anonymous_enable=NO
限制用戶只能在自己的用戶目錄"/home/[Account]"則在裡面加入:
限制用戶只能在家目錄 (/etc/vsftpd/chroot_list 的用戶可不受限制)
chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
將 ftp 的檔案列表能看到跟 Server 上同樣的時間,在檔案加入:
# 使用本地時區
use_localtime=YES
重新啟動 vsftpd:
service vsftpd restart
以上設定就初步架好FTP Server了,但如果使用root登入FTP 出現會回傳530 Permission denied.
原因是安全性的關係vsftp預設會將系統一些特殊的帳號設定為封鎖
訊息大概如下
ftp 192.168.0.118
Connected to 192.168.1.100 (192.168.1.100).
220 Welcome to [computer name] FTP Server.
Name (192.168.1.100:root): root
530 Permission denied.
Login failed.
ftp>如果要使用root登入FTP,要修改以下檔案
vi /etc/vsftpd/ftpusers
找到root 前面加上#號註解(清單內的帳號都是一些可能會被拿來亂用的)
vi /etc/vsftpd/ftpusers
# Users that are not allowed to login via ftpbin
#root
daemon
adm
lp
sync
shutdown
halt
mail
news
uucp
operator
games
nobody
之後再移除user_list裡面的帳號
vi /etc/vsftpd/user_list
找到root前面加上#號註解
# vsftpd userlist# If userlist_deny=NO, only allow users in this file
# If userlist_deny=YES (default), never allow users in this file, and
# do not even prompt for a password.
# Note that the default vsftpd pam config also checks /etc/vsftpd/ftpusers
# for users that are denied.bin
#root
daemon
adm
lp
sync
shutdown
halt
mail
news
uucp
operator
games
nobody/etc/init.d/vsftpd restart或service vsftpd restart2015年3月24日 星期二
[Linux指令]Linux刪除資料夾下所有資料夾和檔案
rm 是刪除資料夾指令
但是如果要刪除的資料夾內還有其他的東西,則直接執行會發生錯誤
這時候就要搭配其他的參數,才能一起刪除
從網路上找到的rm指令的參數
-i prompt before every removal -I prompt once before removing more than three files, or when removing recursively. Less intrusive than -i, while still giving protection against most mistakes -r, -R, --recursive remove directories and their contents recursively
所以要完成刪除整個資料夾(包含裡面的檔案)指令應該是
rm -rI 資料夾名稱
但是如果要刪除的資料夾內還有其他的東西,則直接執行會發生錯誤
這時候就要搭配其他的參數,才能一起刪除
從網路上找到的rm指令的參數
-i prompt before every removal -I prompt once before removing more than three files, or when removing recursively. Less intrusive than -i, while still giving protection against most mistakes -r, -R, --recursive remove directories and their contents recursively
所以要完成刪除整個資料夾(包含裡面的檔案)指令應該是
rm -rI 資料夾名稱
2015年3月22日 星期日
[JavaScript]檢查瀏覽器版本
以前在判斷瀏覽器版本上會用到userAgent來判斷內容文字為何已作為瀏覽器的版本判斷
但是到了IE11版本後開始,卻會經常使之前的判斷程式失效
原因就是IE11開始對於userAgent開始做了一些偽裝?修改
使用以下的javascript來測試瀏覽器
<script type="text/javascript"> document.write(navigator.userAgent); </script>
IE11回傳的值為(測試環境為x64的OS)
Mozilla/5.0 (Windows NT 6.3; WOW64; Trident/7.0; .NET4.0E; .NET4.0C; .NET CLR 3.5.30729; .NET CLR 2.0.50727; .NET CLR 3.0.30729; InfoPath.3; rv:11.0) like Gecko
判斷IE的版本是32 bit或是64 bit:
各個版本回傳的UserAgent:
在x64的OS下:
32位元的IE:有WOW64;
64位元的IE:有x64;
在32bits的OS下:
只會有32bits的IE,不會有WOW64;或x64;
所以UserAgent中帶有x64就一定是x64的IE,沒有x64就是32bits的IE
有WOW64就一定是x64的OS
沒有WOW64和x64就一定是32bits的OS
另外此問題在MSDN的官方部落格上有篇這樣的資料在講述此問題
http://blogs.msdn.com/b/ie/archive/2014/07/31/the-mobile-web-should-just-work-for-everyone.aspx
訂閱:
文章 (Atom)



