2017年5月31日 星期三

公告推撥系統~紀錄 (轉C#,使用VScode+ASP.NET Code 2.0)

安裝 VS Code

下載安裝 Install .NET Core 2.0 Preview 1
https://www.microsoft.com/net/core/preview#windowscmd

我們初始化一個示例Hello World 的 Web 應用程序!

\htdocs>md hwapp
\htdocs>cd hwapp
\htdocs\hwapp>dotnet new mvc
The template "ASP.NET Core Web App" created successfully.

第一個命令將恢復在項目文件中指定的包,第二個命令將運行實際的樣本:
\htdocs\hwapp>dotnet restore
  Restoring packages for C:\htdocs\sas\sas.csproj...
  Generating MSBuild file C:\htdocs\sas\obj\sas.csproj.nuget.g.props.
  Generating MSBuild file C:\htdocs\sas\obj\sas.csproj.nuget.g.targets.
  Writing lock file to disk. Path: C:\htdocs\sas\obj\project.assets.json
  Restore completed in 9.05 sec for C:\htdocs\sas\sas.csproj.

  NuGet Config files used:
      C:\Users\wengw\AppData\Roaming\NuGet\NuGet.Config
      C:\Program Files (x86)\NuGet\Config\Microsoft.VisualStudio.Offline.config

  Feeds used:
      https://api.nuget.org/v3/index.json
      C:\Program Files (x86)\Microsoft SDKs\NuGetPackages\

\htdocs\hwapp>dotnet run
Hosting environment: Production
Content root path: C:\htdocs\sas
Now listening on: http://localhost:5000
Application started. Press Ctrl+C to shut down.

查詢 ASP.NET Core 版本
>dotnet --version
1.0.4 或
2.0.0-preview1-005977

global.json     (切換版本)
{
   "sdk": {
         "version": "2.0.0-........"
       //"version": "1.0.4"
    }
}



調整 VS code+Angular 4~紀錄

調整 VS code 能正常執行終端機

  1. 先開啟命令提示字元(Windows 終端機)
  2. 在上面外框上,按滑鼠右鍵,選內容,選項處勾選[使用舊版主控台]
  3. VScode => 檔案 => 喜好設定 => 設定 => 設定選項的值為terminal.integrated.shell.windows: "cmd.exe",
  4. 按 Ctrl + ` 就可以叫出終端機了,還可以下 ng 指令喔。
  • 需安裝 npm install -g @angular/cli@latest

建立新專案
  1. 開啟終端機
  2. 於網頁目錄下指令 c:\htdocs>ng new [專案名稱]
  3. 就會建立一個 [專案目錄],並且安裝相關的 angular 4 模組
  4. 於 [專案目錄] 底下,下指令 >ng -v 會顯示已安裝的 angular 4 模組版本
  • 接下來於 VScode 按 Ctrl + O 就可以開啟目錄選擇視窗,選擇專案的目錄,就可以切換工作的目錄了。
安裝 Angular 4

  1. 安裝 nvm-winodws ( node.js windows 版的版本管理器)
  2. 使用 nvm 安裝 node.js (>nvm list available,>nvm install 6.10.3),LTS穩定的版本號碼
  3.  啟用版本管理 (>nvm on)
  4.  查詢版本號碼 (>nvm -v,>node -v,>npm -v,>tsc -v)
  5.  更新 npm 3.10.10 到 5.0.0 (>npm -g install npm)
  6.  驗證 npm cache 是否正確 (>npm cache verify)
  7.  安裝 Angular 4 
  • npm install -g @angular/cli@latest
  • ng new sas (建立 angular 4 的專案)
  • 在專案目錄底下執行下面更新:
  • ng -v (@angular/cli: 1.0.6)
  • npm install @angular/common@latest @angular/compiler@latest @angular/compiler-cli@latest @angular/core@latest @angular/forms@latest @angular/http@latest @angular/platform-browser@latest @angular/platform-browser-dynamic@latest @angular/platform-server@latest @angular/router@latest @angular/animations@latest typescript@latest --save
  • (上面指令會多了 @angular/animations: 4.1.3,@angular/platform-server: 4.1.3)
  • npm -g install typescript


========================================================================
小技巧
終端機:
  • rmdir sas /s                                       //刪除 sas 目錄,含底下的所有子目錄與檔案



2017年5月25日 星期四

node.js 用 npm 指令 更新支援 Angular 4


先進去工作目錄,例如:c:\htdoc\sas
把 angular 4 檔案放進來,在 c:\htdoc\sas 下面執行指令:

c:\htdoc\sas>npm install

On Linux/Mac:
c:\htdoc\sas>
npm install @angular/{common,compiler,compiler-cli,core,forms,http,platform-browser,platform-browser-dynamic,platform-server,router,animations}@latest typescript@latest --save

On Windows:
c:\htdoc\sas>
npm install @angular/common@latest @angular/compiler@latest @angular/compiler-cli@latest @angular/core@latest @angular/forms@latest @angular/http@latest @angular/platform-browser@latest @angular/platform-browser-dynamic@latest @angular/platform-server@latest @angular/router@latest @angular/animations@latest typescript@latest --save

會出現 typescript 無法更新到 2.3.3 ,改用下列指令就可以。

Installing typescript

For the latest stable version:(最後穩定的版本)

c:\htdoc\sas>npm install -g tslint typescript

2017年5月24日 星期三

用 Angular CLI 節省開發時間(目前支援Angular 4有問題,建議先不安裝)

Angular CLI是隨著Angular2發展時一併產生的一個指令列工具,一樣基於「習慣取代配置」的優良傳統,我們可以用Angular CLI快速產生開發Angular2程式時所需要的檔案範本,另外也包含了軟體開發生命週期會用到的bundle, lint, unit test, end to end test等功能,也全都包在Angular CLI裡面了,因此透過Angular CLI工具,我們可以大幅節省許多準備檔案的時間!由於之後的Angular2速成班教學中我們也會大量使用Angular CLI來產生相關需要的檔案,因此今天就先來簡單介紹一下Angular CLI這個強大的產生器功能。

安裝Angular CLI並產生Angular2專案

npm install -g angular-cli

接下來就可以使用 ng 這個指令來執行這種開發Angular2專案需要的動作啦。

首先我們先用 ng --help 來看看所有可用的指令:

可以看到洋洋灑灑一大堆的指令說明,也可以用 ng --help [command]看比較"精簡"一點的說明。例如我想知道generate這個指令的用法,就輸入 ng --help generate,就可以單純看某個指令的用法囉。

接下來我們就稍微說明一些常用的Angular CLI指令吧!

ng new

安裝好Angular CLI以後當然是立刻使用 ng new [專案名稱] 來產生一個Angular2專案啦。

這個指令會依我們輸入的專案名稱產生一個專案目錄,同時幫我們把所有預設需要的相關套件都紀錄在package.json,然後將所有需要的套件都下載下來;除此之外也會幫我們產生一個Angular2專案最基本需要的程式碼、還有簡單的測試案例、測試環境設定、編輯器環境設定(如果編輯器支援的話)、預設的與法規範設定檔(tslint.json)等等;想想看這些步驟如果要自己一個一個處理要花多少時間,還要擔心人腦智慧出錯的可能性,但透過ng new,只需要下指令並稍等一下就可以啦!

關於ng new產生的專案目錄,在下一篇文章我們會做一個比較詳細的介紹。

ng generate(ng g)

ng generate可以說是整個Angular CLI裡面最常用到的指令,它的功能就是用來產生Angular2的元件(component)、服務(service)等等的程式雛形,由於generate指令非常常用,但generate字母又不少,因此我們也可很簡單的使用 ng g來執行產生動作,目前ng g可產生以下類型的程式



例如需要產生一個Angular2的元件,可以使用 ng g component,來產生一個component所需要的檔案,另外我們也可以在把剛剛的指令簡化成ng g c。只需要短短幾個字,就可以產生許多的程式碼囉!

根據官方的Angular CLI原始碼,我們也可以看到不同程式碼雛形的指令簡化

不過很可惜,由於Angular2的route在RC階段一直有改變,雖然正式版已經release了,但目前Angular CLI還不支援route的產生,因此使用ng g r來產生route的話,會出現以下錯誤訊息,期待某天可以正常產生囉!



使用ng generate產生的物件會依照預設值放在特定目錄下,若需要指定目錄也可以透過相對路徑的表示方式來改變目錄,例如ng g c todo-items預設檔案會產生在/src/app/todo-list下面,我們可以改用ng g c todo-list\todo-items來將檔案改為產生在/src/app/todo-item/todo-list下面。不過需要稍微注意兩點

1. 若要建立在額外目錄下,該目錄必須存在才可建立,若目錄不存在請先把目錄建立起來

2. 產生component時會在/src/app/app.module.ts檔內進行注入動作,但目前會發生import時路徑的斜線反了的問題導致錯誤,因此必須手動修改app.module.ts的內容,麻煩的是每次ng g c產生component時同樣的問題又會繼續發生,希望之後的版本會修正囉。(寫這篇文章時Angular CLI版本為1.0.0-beta.15)

ng destroy(ng d)

ng destroy是用來移除ng generate所產生的檔案的,不過只是進行把檔案刪除的動作而已,對於用到產生的物件,還是必須手動在程式碼中清除。

例如我們使用ng g c todo-item建立一個todi-item的component,但後悔了,就可以使用 ng d component todo-item (目前不支援 ng d c這種寫法)來移除檔案。

ng build

當Angular2的程式開發完成,需要部屬到別台機器上時,我們可以使用ng build來打包所有的程式碼,這個步驟會將所有TypeScript的檔案轉譯成JavaScript,同時也會使用Tree Shaking的技術只留下開發時有使用到的相依物件,並將所有程式分類打包,最後產出到專案下的dist目錄,我們就可以將這個目錄部屬到測試或正式環境上執行。另外若是要上線的系統了,還可以使用ng build --prod再將產出的JavaScript做最小化壓縮的動作,以節省下載程式碼的等待時間。如果我們希望在程式有修改時就自動進行build的動作,也可以使用ng build -w來偵測變更並自動執行build。

Angular CLI使用webpack作為打包程式的工具,有趣的是使用ng new建立的專案找不到webpack.js之類的檔案,這也算是習慣取代配置的好處之一,對於打包程式這件事情我們不用花太多心思,Angular CLI都已經內建好了,只要我們程式撰寫配合通用的習慣,剩下的直接使用別人寫好的範本來跑就好啦!如果想看看Angular CLI預設的webpack程式,可以參考專案目錄下node_modules\angular-cli\tasks下面的檔案。除此之外Angular2官方的webpack介紹也說得非常仔細,建議有時間可以去看看。

ng serve

在程式開發階段,我們經常需要打開瀏覽器來觀看程式執行的結果,使用ng serve可以自動幫你把程式打包,並開啟一個live reload的http server,如此一來當我們程式有修改時,就會自動幫你重新build一次,同時如果有用瀏覽器打開目前的程式時,也會通知自動重整,就不用一直按F5重新整理啦!

ng lint

使用Angular CLI建立的專案會預設加入一個tslint.json檔案,用來設定TypeScript撰寫風格的相關限制,我們可以自行在tslint.json裡面修改來調整符合團隊開發的規範,若要檢查專案中的程式碼是否符合規範,可以使用 ng lint 來檢查,看看那些檔案中有不符合規則的程式存在。



ng test & ng e2e

ng test和ng e2e兩個指令都是用來執行測試程式的,不同的是ng test是屬於unit test的部分,會執行src/app下面所有的測試程式碼,使用的測試套件為karma與jasmine。

而ng e2e則是用來執行end to end測試,會執行/e2e下面的測試程式,使用的測試套件為karma與protractor。

如果已經有寫過JavaScript的人對於這些測試程式應該不會太陌生,未來有機會寫到Angular2的測試時,在多介紹一些。

單元回顧

本篇文章介紹了Angular CLI的一些常用指令,日後在使用Angular CLI時應該能更加清楚指令的用途與原理,透過Angular CLI可以幫助我們在開發的時候節省很多配置時間。

官方的文件還有一些小技巧,有興趣的朋友可以去參考看看囉。







Windows 10 上佈署 Angular4 開發環境

安裝 nvm-windows

執行安裝 nvm-setup.exe

NVM for Windows是一個命令行工具。只需輸入nvm控制台即可獲得幫助。基本命令是:
  • nvm arch [32|64]:顯示節點是運行在32位還是64位模式。指定32或64來覆蓋默認體系結構。
  • nvm install <version> [arch]:該版本可以是node.js版本或最新版本的“最新版本”。(可選)指定是否安裝32位或64位版本(默認為系統arch)。設置[arch]為“全部”以安裝32和64位版本。
  • nvm list [available]:列出node.js安裝。輸入available末尾以顯示可供下載的版本列表。
  • nvm on:啟用node.js版本管理。
  • nvm off:禁用node.js版本管理(不卸載任何東西)。
  • nvm proxy [url]:設置用於下載的代理。留[url]空白,以查看當前的代理。設置[url]為“無”刪除代理。
  • nvm uninstall <version>:卸載特定版本。
  • nvm use <version> [arch]:切換到使用指定的版本。可選地指定32 / 64bit架構。nvm use <arch>將繼續使用所選版本,但根據提供的值切換到32/64位模式<arch>。
  • nvm root <path>:設置nvm應存儲node.js不同版本的目錄。如果<path>未設置,將顯示當前根。
  • nvm version:顯示目前運行的NVM版本的Windows。
  • nvm node_mirror <node_mirror_url>:設置節點鏡像。中國人可以使用https://npm.taobao.org/mirrors/node/
  • nvm npm_mirror <npm_mirror_url>:設置npm鏡。中國人可以使用https://npm.taobao.org/mirrors/npm/

C:\Users\wengw>nvm arch
System Default: 64-bit.
Currently Configured: -bit.


C:\Users\wengw>nvm list available

|   CURRENT    |     LTS      |  OLD STABLE  | OLD UNSTABLE |
|--------------|--------------|--------------|--------------|
|    7.10.0    |    6.10.3    |   0.12.18    |   0.11.16    |
|    7.9.0     |    6.10.2    |   0.12.17    |   0.11.15    |
|    7.8.0     |    6.10.1    |   0.12.16    |   0.11.14    |
|    7.7.4     |    6.10.0    |   0.12.15    |   0.11.13    |
|    7.7.3     |    6.9.5     |   0.12.14    |   0.11.12    |
|    7.7.2     |    6.9.4     |   0.12.13    |   0.11.11    |
|    7.7.1     |    6.9.3     |   0.12.12    |   0.11.10    |
|    7.7.0     |    6.9.2     |   0.12.11    |    0.11.9    |
|    7.6.0     |    6.9.1     |   0.12.10    |    0.11.8    |
|    7.5.0     |    6.9.0     |    0.12.9    |    0.11.7    |
|    7.4.0     |    4.8.3     |    0.12.8    |    0.11.6    |
|    7.3.0     |    4.8.2     |    0.12.7    |    0.11.5    |
|    7.2.1     |    4.8.1     |    0.12.6    |    0.11.4    |
|    7.2.0     |    4.8.0     |    0.12.5    |    0.11.3    |
|    7.1.0     |    4.7.3     |    0.12.4    |    0.11.2    |
|    7.0.0     |    4.7.2     |    0.12.3    |    0.11.1    |
|    5.12.0    |    4.7.1     |    0.12.2    |    0.11.0    |
|    5.11.1    |    4.7.0     |    0.12.1    |    0.9.12    |
|    5.11.0    |    4.6.2     |    0.12.0    |    0.9.11    |
|    5.10.1    |    4.6.1     |   0.10.48    |    0.9.10    |

This is a partial list. For a complete list, visit https://nodejs.org/download/release




C:\Users\wengw>nvm root
Current Root: C:\Users\wengw\AppData\Roaming\nvm

C:\Users\wengw>nvm version
1.1.4

進入目錄
C:\Users\wengw\AppData\Roaming\nvm
在 install.cmd 上按右鍵,以系統管理員執行

C:\Users\wengw>nvm
出現 Running version 1.1.4. 表示 nvm 安裝成功

指令快速使用說明
nvm list:查看已安裝的版本
nvm list available:查看提供哪些 Node 版本
nvm install 版本號 (不能有含v):安裝指定的 Node 版本
nvm use 版本號:指定使用 Node 版本

C:\Users\wengw>nvm install 6.10.3
Downloading node.js version 6.10.3 (64-bit)...
Complete
Creating C:\Users\wengw\AppData\Roaming\nvm\temp

Downloading npm version 3.10.10... Complete
Installing npm v3.10.10...

Installation complete. If you want to use this version, type

nvm use 6.10.3

C:\Users\wengw>nvm on
nvm enabled
Now using node v6.10.3 (64-bit)

===========================================================
確認 node.js 版本
C:\Users\wengw>node -v
v6.10.3

下載QuickStart種子

cd c:\htdocs\quickstart
npm install
npm start

建立一個命令檔
npmstart_sas.cmd

內容:
cd c:\htdocs\sas
npm start


CentOS 7 安裝 Docker 容器

資訊來源:https://www.openfoundry.org/tw/enterprise-application/9349-centos7

Docker套件的安裝與使用
CentOS 7.0採用了以Linux Containers技術為基礎的輕量級Docker虛擬化應用。它與許多新手IT所熟悉的虛擬機器(Virtual Machine)是不一樣的。一般的虛擬機器都有各自的虛擬化電腦硬體,來安裝與使用各自獨立的客端作業系統(Guest OS),這種作法相當耗用實體的硬體資源,但其優點是容易部署各式各樣的作業系統,包括了像是Windows、Mac、Linux、FreeBSD等等。

至於Docker容器(Container)運作的概念,則是共用一個主體的作業系統核心,然後分隔出各自獨立的運行空間,就好像一位房東將一棟房子重新裝潢後,分隔出多間的小套房來出租一樣,雖然都是在同一棟房子之中,但各自的空間卻可以自行擺設所需要的東西。採用這種容器虛擬化技術的優點,就在於可節省掉許多硬體資源,但缺點就是這一些分支出去的容器,只能夠使用相同的作業系統核心,簡單來說就是您無法在CentOS 7.0的Docker虛擬化環境中,建立與使用Windows、Mac等不屬於Linux核心的容器。

關於在CentOS 7.0下安裝Docker服務的方法,只要像如圖下達sudo yum install docker即可。目前最新的版本為1.3.2。


▲圖 安裝docker套件

完成docker套件的安裝之後,請下達systemctl start docker命令來啟動它即可。至於如果希望每一次CentOS系統啟動時自動執行,請如圖50所示下達systemctl enable docker命令。

啟用docker服務

對於目前執行中的docker完整版本資訊檢視,請如圖51所示下達docker version即可,其內容包括了用戶端版本、用戶端API版本、伺服端版本、伺服端API版本等資訊

查看docker版本資訊

確認docker服務正在執行之中,便可以開始來下載與安裝所需要的容器映像檔,以取得最新版本的CentOS映象檔來說,只要下達sudo docker pull centos即可,如果是Ubuntu Linux的映象檔,請如圖52所示下達sudo docker pull ubuntu命令。如果Fedoa Linux映象檔,則可以下達sudo docker pull fedora。

安裝映像檔

關於映象檔的下載安裝,您可以先行線上的搜尋結果後,再來決定所要安裝的映象檔名稱。以Ubuntu Linux系列的映象檔來說,您就可以下達docker search ubuntu,便可以像如圖53所示一樣,找到所有以Ubuntu系列為主的Linux映象檔。其中凡是有標示為Official與Trusted字眼的映象檔,皆是您最佳的選擇。

搜尋Ubuntu系列映像檔

如果您想要知道目前已下載安裝的映象檔有哪一些,只要下達docker images命令即可,範例中便可以看到目前有關Ubuntu的映象檔共有五個,而Fedora則有兩個。進一步您可以下達docker info命令,來得知目前Docker中容器的數量、映象檔數量、集區的區塊配置大小、資料檔位置、中繼資料檔位置、資料已使用的空間大小、資料可用的總空間大小、中繼資料已使用的空間大小、中繼資料可用的總空間大小、程式庫版本資訊、Linux核心的版本資訊以及目前的CentOS版本資訊等等。

查看目前映像檔資訊

接下來您可以嘗試在某一指定的容器中執行命令,例如您可以下達docker run Ubuntu:latest ls –l命令,便可以像如圖55所示一樣,檢視到目前Ubuntu容器中的目錄清單。另一個例子是執行docker run centos:latest cat /etc/centos-release,便可以察看到目前這個CentOS容器的系統版本資訊。

執行docker命令

當您想要知道在目前的Docker服務之中執行過了哪一些命令,只要像如圖56所示一樣下達docker ps –a命令,即可查詢到曾經在哪一個容器之中執行過什麼命令參數。

查看docker執行過的命令

我們除了能夠將Docker指定的命令參數,執行在某一個容器的終端機命令列之中,也可以選擇先進入到該容器之後,再對於該容器中的Linux系統進行管理。如圖57所示筆者以docker run -i –t ubuntu:latest /bin/bash來進入到此容器的終端機提示列下,然後下達lsb_release –a命令參數來查看目前所在容器的系統版本資訊。另外在此還可以看到每一個container都有一個唯一的ID,來顯示在root@字元提示之後。若是想要離開目前的容器,只要下達exit命令或是按下Ctrl+D按鍵即可。

進入容器終端機

既然我們可以使用Docker的命令來進入到任一個容器的作業系統之中,那麼肯定也可以執行許多該系統所提供的命令工具,或是在該系統之中安裝各類軟體套件。如此一來不就可以讓不同的伺服器服務分散運作在不同的容器之中。如圖58所示便是筆者下達一個最常用的ifconfig命令,來查看目前這個容器系統的預設IP位址配置。

查看容器網路配置

接下來就讓我們來嘗試在這個Ubuntu Linux的容器之中,下載安裝一個Apache2的網站服務套件吧。請如圖59所示下達apt-get install apache2即可。

在容器中安裝Apache2套件

成功完成Apache2套件的安裝之後,便可以先下達service apache2 status來查看此網站服務的執行狀態,如果尚未啟動就請下達service apache2 start來執行它即可。

啟動容器的網站服務

成功安裝與啟動Ubuntu Linux的Apache網站服務之後,我們便可以回到CentOS主機的桌面中,開啟瀏覽器來嘗試連線此容器的網站服務。如圖61所示便是Apache2 Ubuntu網站服務預設的首頁。

連線容器的Apache網站

關於CentOS 7.0於虛擬化平台的部署,您除了可以選擇將它安裝在以KVM、VirtualBox、Xen、XenServer以及VMware為主的相關虛擬機器之外,同樣也可以將它安裝在Windows Server 2012 R2、Windows 8.1企業版(專業版)或是免費的Hyper-v 2012 R2的Hyper-v虛擬機器之中。如圖所示便是一個CentOS 7.0虛擬機器,正運行於Hyper-v 3.0 R2平台的範例,由於它已支援Hyper-v的動態記憶體配置技術,因此可讓整體資源的使用率最大化。

 將CentOS部署在Hyper-v

CentOS 7 常用指令

加入帳號到群組

在 Linux 要加入帳號到現有群組,可以用 useradd 及 usermod 指令實現。useradd 在建立帳號時修改預設值,可以將帳號加到現有群組;而 usermod 就可以用作修改帳號設定,其中一樣是加入帳號加到現有群組。Linux 的群組分別有 Primary group (主要群組)及 Secondary group (額外群組)。

useradd 新增帳號時加入到現有群組,只要在 useradd 加上 -G [group-name] 就可以,例如我建立一個帳號為 phpini, 並加入 devgroup 群組,指令是這樣:

如果 getgroup 不存在,先用 groupadd 建立:

# groupadd gitgroup
然後可以用 useradd 建立帳號:
# useradd -G gitgroup wengxxxxx

如果想將帳號 wengxxxxx 的 Primary group 改為 gitgroup, 只要將 -G 改成 -g
# useradd -g gitgroup wengxxxxx

usermod 的用法跟 useradd 差不多,主要分別是 usermod 是變更帳號現有的設定,將現有帳號加入現有群組。例如將 wengxxxxx 加入 getgroup 群組,指令是這樣:

# usermod -a -G gitgroup wengxxxxx

以下是變更 wengxxxxx 帳號的 Primary group 到 gitproup
# usermod -G gitgroup wengxxxxx

========================================================================
完成docker套件的安裝之後
請下達 # systemctl start docker 命令來啟動它即可。
至於如果希望每一次CentOS系統啟動時自動執行,
請下達# systemctl enable docker 命令。

========================================================================
下面資料來源:http://linux.vbird.org/linux_basic/0210filepermission.php

如何改變檔案屬性與權限

我們現在知道檔案權限對於一個系統的安全重要性了,也知道檔案的權限對於使用者與群組的相關性, 那麼如何修改一個檔案的屬性與權限呢?又!有多少檔案的權限我們可以修改呢? 其實一個檔案的屬性與權限有很多!我們先介紹幾個常用於群組、擁有者、各種身份的權限之修改的指令,如下所示:
  • chgrp :改變檔案所屬群組
  • chown :改變檔案擁有者
  • chmod :改變檔案的權限, SUID, SGID, SBIT等等的特性
#dir -l

drwx------.  6 git         git              143  5月 24 08:52 git

# chgrp -R gitgroup ./git

#dir -l

drwx------.  6 git         gitgroup     143  5月 24 08:52 git

# chmod -R 770 ./git
# dir -l
drwxrwx---.  6 git       gitgroup     143  5月 24 08:52 git


=======================================================================
  • 改變權限, chmod
檔案權限的改變使用的是chmod這個指令,但是,權限的設定方法有兩種, 分別可以使用數字或者是符號來進行權限的變更。我們就來談一談:
  • 數字類型改變檔案權限

    Linux檔案的基本權限就有九個,分別是owner/group/others三種身份各有自己的read/write/execute權限, 先複習一下剛剛上面提到的資料:檔案的權限字元為:『-rwxrwxrwx』, 這九個權限是三個三個一組的!其中,我們可以使用數字來代表各個權限,各權限的分數對照表如下:
    r:4
    w:2
    x:1
    每種身份(owner/group/others)各自的三個權限(r/w/x)分數是需要累加的,例如當權限為: [-rwxrwx---] 分數則是:
    owner = rwx = 4+2+1 = 7
    group = rwx = 4+2+1 = 7
    others= --- = 0+0+0 = 0
    所以等一下我們設定權限的變更時,該檔案的權限數字就是770啦!變更權限的指令chmod的語法是這樣的:
    [root@study ~]# chmod [-R] xyz 檔案或目錄
    選項與參數:
    xyz : 就是剛剛提到的數字類型的權限屬性,為 rwx 屬性數值的相加。
    -R : 進行遞迴(recursive)的持續變更,亦即連同次目錄下的所有檔案都會變更
    
    舉例來說,如果要將.bashrc這個檔案所有的權限都設定啟用,那麼就下達:
    [root@study ~]# ls -al .bashrc
    -rw-r--r--. 1 root root 176 Dec 29  2013 .bashrc
    [root@study ~]# chmod 777 .bashrc
    [root@study ~]# ls -al .bashrc
    -rwxrwxrwx. 1 root root 176 Dec 29  2013 .bashrc
    
    那如果要將權限變成『 -rwxr-xr-- 』呢?那麼權限的分數就成為 [4+2+1][4+0+1][4+0+0]=754 囉!所以你需要下達『 chmod 754 filename』。 另外,在實際的系統運作中最常發生的一個問題就是,常常我們以vim編輯一個shell的文字批次檔後,他的權限通常是 -rw-rw-r-- 也就是664, 如果要將該檔案變成可執行檔,並且不要讓其他人修改此一檔案的話, 那麼就需要-rwxr-xr-x這樣的權限,此時就得要下達:『 chmod 755 test.sh 』的指令囉!

    另外,如果有些檔案你不希望被其他人看到,那麼應該將檔案的權限設定為例如:『-rwxr-----』,那就下達『 chmod 740 filename 』吧!

    例題:
    將剛剛你的.bashrc這個檔案的權限修改回-rw-r--r--的情況吧!
    答:
    -rw-r--r--的分數是644,所以指令為:
    chmod 644 .bashrc
  • 符號類型改變檔案權限

    還有一個改變權限的方法呦!從之前的介紹中我們可以發現,基本上就九個權限分別是(1)user (2)group (3)others三種身份啦!那麼我們就可以藉由u, g, o來代表三種身份的權限!此外, a 則代表 all 亦即全部的身份!那麼讀寫的權限就可以寫成r, w, x囉!也就是可以使用底下的方式來看:

    chmodu
    g
    o
    a
    +(加入)
    -(除去)
    =(設定)
    r
    w
    x
    檔案或目錄

    來實作一下吧!假如我們要『設定』一個檔案的權限成為『-rwxr-xr-x』時,基本上就是:

    • user (u):具有可讀、可寫、可執行的權限;
    • group 與 others (g/o):具有可讀與執行的權限。

    所以就是:
    [root@study ~]# chmod  u=rwx,go=rx  .bashrc
    # 注意喔!那個 u=rwx,go=rx 是連在一起的,中間並沒有任何空白字元!
    [root@study ~]# ls -al .bashrc
    -rwxr-xr-x. 1 root root 176 Dec 29  2013 .bashrc
    
    那麼假如是『 -rwxr-xr-- 』這樣的權限呢?可以使用『 chmod u=rwx,g=rx,o=r filename 』來設定。此外,如果我不知道原先的檔案屬性,而我只想要增加.bashrc這個檔案的每個人均可寫入的權限, 那麼我就可以使用:
    [root@study ~]# ls -al .bashrc
    -rwxr-xr-x. 1 root root 176 Dec 29  2013 .bashrc
    [root@study ~]# chmod  a+w  .bashrc
    [root@study ~]# ls -al .bashrc
    -rwxrwxrwx. 1 root root 176 Dec 29  2013 .bashrc
    
    而如果是要將權限去掉而不更動其他已存在的權限呢?例如要拿掉全部人的可執行權限,則:
    [root@study ~]# chmod  a-x  .bashrc
    [root@study ~]# ls -al .bashrc
    -rw-rw-rw-. 1 root root 176 Dec 29  2013 .bashrc
    [root@study ~]# chmod 644 .bashrc  # 測試完畢得要改回來喔!
    
    知道 +, -, = 的不同點了嗎?對啦! + 與 – 的狀態下,只要是沒有指定到的項目,則該權限『不會被變動』, 例如上面的例子中,由於僅以 – 拿掉 x 則其他兩個保持當時的值不變!多多實作一下,你就會知道如何改變權限囉! 這在某些情況底下很好用的~舉例來說,你想要教一個朋友如何讓一個程式可以擁有執行的權限, 但你又不知道該檔案原本的權限為何,此時,利用『chmod a+x filename』 ,就可以讓該程式擁有執行的權限了。是否很方便?

========================================================================
nano
pwd 取得目前目錄名稱(有可能是連結)
pwd –P 取得正確的目錄名稱
cd
yum
rm
mkdir
cp
tail
vi
vim
systemctl (start/restart/stop)
firewall-cmd
firewall-cmd --permanent --zone=public --add-port=389/tcp
firewall-cmd --reload
wget
unzip
chown

rpm -qa |grep 'openldap*'
find / | grep slapd.conf

cas server 一直圈圈或取得狀態異常

重點: cas server 不能開 VPN,會造成取的來源 dns 異常,會一直轉圈圈或等很久。