跳到主要內容

發表文章

使用者只能 SFTP 登入自己的家目錄

使用者只能 SFTP 登入自己的家目錄 老師的電腦動畫課堂的期末作品,是開放讓學生透過 FTP 上傳自己的作品及網頁至實驗室的伺服器,由於 FTP 是明碼的封包傳輸於最近升級系統後,便考慮改用 SFTP(SSH File Transfer Protocol)來提供上傳的服務。 提供 SFTP 上傳的同時,希望使用者和以前一樣只能使用 SFTP 無法使用 SSH 登入伺服器。SFTP 為 SSH 的檔案傳輸服務,預設建立帳號的時候使用者同時可以使用這兩種服務。透過 SFTP only + Chroot 設定我們能限制使用者僅能 SFTP 並且無法離開自己的家目錄去到處閒晃。 安裝 OpenSSH 如果安裝的是 Ubuntu Server 應該在安裝過程會安裝 openssh-server 套件,沒有的話可以利用下面的指令安裝。 $ sudo apt-get install openssh-server 新增一個給 SFTP 使用的群組 sftpaccess $ sudo groupadd sftpaccess 修改 OpenSSH 設定檔 編輯 /etc/ssh/sshd_config 設定檔,在約 77 行的地方找到 Subsystem sftp /usr/lib/openssh/sftp-server 註解此行並修改為 Subsystem sftp internal-sftp 。 $ sudo vim /etc/ssh/sshd_config #Subsystem sftp /usr/lib/openssh/sftp-server Subsystem sftp internal-sftp 在檔案的尾端加上下面的片段 Match group sftpaccess ChrootDirectory /home/%u X11Forwarding no AllowTcpForwarding no ForceCommand internal-sftp 建立新的使用者並加入 sftpaccess 群組 在設定檔中,我們設置了 sftpaccess 這個群組套用要做 ChrootDirectory 的設定,所以我們將要限制的使用者,加入這個群組中。 $ sudo useradd ...

雙系統升級 Windows 10 後造成 ubuntu 開機進入 grub rescue

雙系統升級 Windows 10 後造成 ubuntu 開機進入 grub rescue 7/29 是免費升級 Windows 10 的最後期限,雖然現在幾乎都使用 ubuntu 做為平時工作或一般使用的環境,鮮少使用 Windows 了,但是現在使用雙系統的方式,仍保有原本購買筆電附送的 Windows 8.1 。微軟這免費的升級的活動還是很吸引人,經過將近一年時間的改善,現在的 Windows 10 好像也沒有什麼災情,決定在這個截止日前升級。 升級完 Windows 10 重新開機後,系統就直接進入 grub rescue 模式,估計是原來磁區的位置號碼改變所致。只要找回之前開機的磁區修改正確就好了。 查詢原本的開機磁區 以 ls 指令查詢磁區情形 grub rescue > ls (hd 0 ,gpt1) (hd 0 ,gpt2) (hd 0 ,gpt3) (hd 0 ,gpt4) (hd 0 ,gpt5) (hd 0 ,gpt6) 逐步以 ls 看能不能查詢目錄情形,找出開機磁區 grub rescue> ls (hd0,gpt1)/ grub rescue> ls (hd0,gpt1)/boot grub rescue> ls (hd0,gpt2)/ grub rescue> ls (hd0,gpt2)/boot ... 以此類推。記錄下查詢到的磁區位置(我的是 (hd0,gpt6) ),後面會使用上。 離開 rescue 進入 normal 模式 在 rescue 提示符號( grub rescue> )輸入 set 查詢現在的 prefix 和 root 設定值。 grub rescue> set prefix=(hd0,gpt5)/boot/grub root=hd0,gpt5 使用 set 指令將 prefix 和 root 更換成正確的磁區號碼,我的是將 (hd0,gpt5) 更改為 (hd0,gpt6)。 grub rescue> set prefix=(hd0,gpt6)/boot/grub grub rescue> set root=(hd0,gpt6) 再次檢查 prefix 和 roo...

StackEdit 自定 CSS 匯出 HTML Template

StackEdit 自定 CSS 匯出 HTML Template StackEdit 是一個所見即所得的線上 Markdown 編輯器,在先前的文章已有許多的介紹。身為程式設計在寫筆記的時候更是需要像這樣的工具,讓我們更能聚焦在內容上並且能運用 highlight.js 來標註程式碼。 檔案分享的方法 Google 雲端硬碟、Dropbox 我們更可以將筆記透過 StackEdit 直接發佈至 Google Blogger 上,或是儲存在自己的 Google 雲端硬碟、Dropbox 等等的位置。 Gist、StackEdit Viewer 如果需要將資料分享給其他沒有安裝 Markdown Viewer 的人,除了使用上述的方法,我們也可以將檔案發佈至 Gist ,或是將我們的 Markdown 檔案放至網路,透過 StackEdit 的 Viewer 將網址引入直接使用瀏覽器觀看。Ex: Here 。 https://stackedit.io/viewer#!url= [ 放置 Markdown 檔案的 URL 位址 ] PDF StackEdit 的 PDF 功能是需要透過雲端的轉換(透過 Pondoc + LaTex 實踐),對於這個部分的功能是贊助者項目,如果覺得 StackEdit 好用,很建議大家贊助讓他們可以更長久的經營。另外一個方式,是利用 StackEdit Viewer + Chrome Browser 來實踐。 開啓 Chrome Browser 開啓 StackEdit Viewer:Menu –> StackEdit Viewer 在 Viewer 模式下開啓列印 選擇 「Save as PDF」 HTML 另外一種跨平臺支援的方式是使用 HTML,只要是有瀏覽器都可以觀看,而且透過 CSS 可以改變成我們自己想要變化的風格。也是今天主要想和大家分享的方法。 使用自定的 CSS 匯出 HTML 檔案 StackEdit 匯出 HTML 的方式所匯出的檔案是很陽春白白靜靜的檔案,無論字型還是區塊安排都會有一點點的悲劇。還好,它還提供了一個以自定 Template 來匯出 HTML 的方式,讓我們有機會透過自定的 CSS 檔來...

uBuntu /boot 空間 100% 滿載問題

uBuntu /boot 空間 100% 滿載問題 在先前的文章「 uBuntu 更新時 /boot 空間不足 」中,有針對如果 boot 空間不足的時候該如何以 apt-get purge 的方式移除舊的 kernel-package。現在可以使用 apt-get autoremove old-kernel-package 的方式移除,如果不指定 kernel-package 的版本,則會移除現在所有的舊版本。 sudo apt-get autoremove linux-image- 3.13 . 0 - 51 -generic linux-image- 3.13 . 0 - 51 -generic 這個方式也會一併的移除相依套件,相當的安全又乾淨(愈來愈無腦操作了 =,.=)。先前 purge 方式是在 /boot 還有空間的時候移除舊版,最近碰上的問題則是 /boot 空間已經 100% 滿載,新的 kernel 又只有裝一半(相依套件未完成安裝),導致任何的 apt-get 方式都無法使用,系統提示要以 apt-get -f install 方式強制解決新 kernel 的相依問題,而 /boot 又沒有任何空間,進入 Deadlock 狀況… 對於這種狀況的解法, 我們先清理出一些 /boot 的空間 # 切換至 /boot 目錄下 $ cd /boot # 確認目前運行的 kernel 版本 $ uname -r # 備份舊的 kernel 版本 $ sudo tar -cvf ~/boot.tar * 3.13 . 0 - 36 -generic * 3.13 . 0 - 37 -generic # 刪除已經備份的內容 $ sudo rm -f * 3.13 . 0 - 36 -generic * 3.13 . 0 - 37 -generic Note 完成後面的相依性安裝需要一些空間,請試需要移出足夠的空間。 解決套件相依性問題 $ sudo apt-get -f install 使用 autoremove 方法清除舊版本 $ sudo apt-get autoremove 重新開機就會套用新的 kernel 版本。 參...

PHP 命名風格

PHP 的命名風格(Coding Style) PHP 的學習與使用有蠻常的時間,近期的 PHP 更新使得這個語言融入其他語言的優點,在程式的特性上有些大躍進。近期閱讀 「現代PHP( Modren PHP )」 這本書,有種看完會更新整個使用 PHP 思維的感覺。書中有篇章在說明 PHP-FIG 的 PSR 建議標準,相同的使用規範能夠讓程式開發人員的程式互通性更好,合作性更佳,不再是悶着頭寫程式的時代,讓我們更容易的使用別人的輪子造車子。 其中 PSR-1 對於程式碼的風格有一些基礎的規範,回顧之前不同時期寫的程式,會發現自己在不同的學習階段,會依據當時查詢的風格規範而更改,每次都有一點小小的不同,這次決定記錄下來讓自己參考也與其他人交流。 變數命名 PSR-1 建議標準中,有針對類別、常數等建議命名原則,對於變數的名稱在 PSR-1 的內容中有提到沒有特別制定建議項目,之前觀察不同前輩的建議和查詢幾個有名的框架(Zend、Symfony、Laravel),寫下自己對變數名稱的命名。 駝峰式命名法(camelCase),小寫字母開頭,後面每個單字的第一個字母大寫。 要使用描述性的命名方式。 迴圈變數通常使用: $i , $j , $k , …等等。 存放 session 的變數前面以 sess 開頭。 存放 cookie 的變數前面以 coke 開頭。 臨時性的變數前面以 tmp 開頭。 $query 和 $result 這兩個變數只能用在 SQL 的查詢語法變數與查詢結果變數。 項目名稱(option)全部使用小寫及使用底線 _ (underscore)分隔。 $defaultOptions = array ( 'some_default' => 'values' , 'another_default' => 'more values' , ); 常數命名 常數名稱完全採用大寫英文字母。【PSR-1】 必要時使用底線 _ (underscore)來區分單字。【PSR-1】 如果內容有可能會改變,應改採用變數而非常數。 類別命名 必須使用 大寫開頭 的駝峰式命名(camel...

Python 的 MySQLdb 套件安裝

先前 ubuntu 的套件庫沒有包含 Python 的 MySQLdb 套件,必須手動至 MySQLdb 官網下載位址 下載來解壓縮安裝,如果還不確定是不是已經安裝,可以先進 python import 試試看。如果出現 ImportError: No module named MySQLdb 的訊息就表示還沒有安裝這個模組。 Python 2.7 . 6 (default, Mar 22 2014 , 22 : 59 : 56 ) [GCC 4.8 . 2 ] on linux2 Type "help" , "copyright" , "credits" or "license" for more information. >>> import MySQLdb Traceback (most recent call last): File "<stdin>" , line 1 , in <module> ImportError: No module named MySQLdb >>> exit () 手動安裝的方式:先下載目前的版本,解壓縮後安裝,步驟如後。 $ sudo tar -zxvf MySQL-python- 1.2 . 4 b4.tar.gz $ cd MySQL-python- 1.2 . 4 b4 $ python setup.py build $ python setup.py install 若要使用 pip 安裝,在 這篇 文章中有敘述安裝的步驟和方法,這邊記錄一下步驟。 $ sudo easy_install pip $ sudo pip install pip --upgrade $ sudo apt-get build-dep python-mysqldb $ sudo pip install MySQL-python 現在使用的系統是 ubuntu 14.04.2 64bit,發現套件庫裡已經有包含 MySQLdb 了,只要直接用 apt-get 安裝即可。現在套件庫裡的版本是 1.2.3。 $ su...

迎接新生兒 CJScope ZQ-230 + Ubuntu GNOME 14.04.2

新生兒 CJScope ZQ-230 筆記型電腦發展一直很迅速,至這兩年才慢慢的被平板取代掉一部分的市場,如果只是上上網或玩玩小遊戲倒是很夠用了,想做圖或是寫程式的話,還是使用筆記型電腦比較好一些,個人覺得平板暫時還是無法完全取代筆記型電腦。 上一臺筆電為了追求輕薄選擇了 inhon 的 carbon book,全機使用碳纖外殼整體重量才 880 公克,實在是非常適合攜帶的電腦。可是卻有一個對我來說非常大的致命傷,RAM 只有 4GB 大小而且還是與內顯共用,全機一體成形記憶體燒在主機板上,完全沒有能夠加裝的空間,開啓 Chrome 瀏覽器不久就會面臨記憶體吃光光的窘境… 為了更能夠以筆電來工作,尋覓一陣子各廠牌的筆電,總是會有一兩樣規格的不符合需求。記憶體足夠的螢幕解析度太差 沒有 FullHD ,輕薄的筆電又是記憶體不足,什麼都不錯的又太過於厚重。各大廠在產品定位區隔上都掐的剛剛好!老天爺啊~怎麼就是十全十美的筆電呢?! 上天果然是有聽到宅男的呼喚,學弟在某一天突然帶來一臺沒看過的廠牌 CJScope ,上網搜尋了一下這個品牌原來是客製化筆電的品牌(亮點:客製化),當週就立馬到他們的旗艦店去現場試機和討論,當天就拜倒在組裝的魅力下敗了一臺 ZQ-230。雖然沒有談成扣除掉 Windows 作業系統,自己挑了喜歡的硬體組合還是感到很滿足的啊! 選擇 Ubuntu GNOME 14.04.2 LTS 由於已經將日常的工作都轉到 Linux 平臺上,所以把 Windows 安裝在一般的硬碟,將 SSD 留做安裝 Linux 的空間以加快執行的速度。工作的桌機安裝的是 Ubuntu 14.04(Unity 桌面系統),家裡的桌機安裝的是 Linux Mint Cinnamon 17.1,HTPC 使用的是 Linux Mint MATE 17.1。一直想嘗試不一樣的桌面系統,所以在不同設備上安裝不一樣的桌面版本來嘗試。Linux 原本的設計就不是為了 Laptop,所以在電力消耗上是容易讓人頭疼,因為這一片文章 Ubuntu GNOME 14.04 “Trusty Tahr” LTS Review: Very very good! 後來決定選擇 Ubuntu GNOME 14.04.2 來試試。 硬碟分割 原本蠻擔心固態硬碟...