內容選單標籤

2017年5月14日 星期日

C語言程式


-----------------------------選擇排序
#include<stdio.h>
int main()
{
int Ary[]={3,7,1,6,8};
int min,n=5;                 /*最小值、元素個數*/

for (int i =0;i<n-1;i++)     /*比較第幾回合*/
{
min=i;                   /*第1回合設定第1個元素為最小*/
for (int j=i+1;j<n;j++)  /*第1回合從第2個元素才開始比*/
{
if (Ary[j]<Ary[min])
{
min=j;
}
}

int tmp=Ary[i];
Ary[i]=Ary[min];
Ary[min]=tmp;
}

for(int i=0;i<n;i++)
{
printf("%d ",Ary[i]);
}

}


-----------------------------氣泡排序 小->大

#include<stdio.h>
int main()
{
int a[5]={9,8,6,4,3};
int n=5;
for (int i=0;i<=n-1;i++)          /*5個元素比4個回合*/
{
for (int j=0;j<n-i-1;j++)  
/*第1回j=0~4 因以[j+1]表示 所以j=0~3  第2回j=0~3 第3回j=0~2 第4回j=0~1*/
{
if (a[j]>a[j+1])
{
int max=a[j];
a[j]=a[j+1];
a[j+1]=max;
}
}
}

for (int i=0;i<n;i++)
{
printf("%d ",a[i]);
}
return 0;
}



-----------------------------Factorial

#include<stdio.h>
int fact(int n)
{
int result;
if (n==1)
{
result=1;
}
else
{
result=n*fact(n-1);
}

return result;
}

int main()
{
int x;
scanf("%d",&x);
printf("%d!= %d",x,fact(x));
}




-----------------------------Fibonacci Number

#include<stdio.h>
int Fib(int n)
{
int result;
if (n==0)
{
result=0;
}
else
if(n==1)
{
result=1;
}
else
if(n>=2)
{
return Fib(n-1)+Fib(n-2);
}

return result;
}

int main()
{
int x;
scanf("%d",&x);
printf("%第%d項= %d",x,Fib(x));
}




-----------------------------Great Command Divisor

#include<stdio.h>
int GCD(int a,int b)
{
int c=a%b;
if (c==0)
{
return b;
}
else
{
return GCD(b,c);
}


}

int main()
{
int x,y;
scanf("%d %d",&x,&y);
printf("GCD(%d,%d)= %d",x,y,GCD(x,y));
}




-----------------------------Hanoi Tower

#include <stdio.h>
int cnt=0;
void hanoi(int n, char A, char B, char C)
{
if (n==1)
{
/*³Ì©³ n¡A±qA~C*/
printf("%d ¡G ±N²Ä %d ­Ó¶ê½L¥Ñ %c  ²¾¨ì %c \n",++cnt,n,A,C);

}
else
{
/*²Ä n-1¼h¡A¥ý¥Ñ A~B */
hanoi(n-1,A,C,B);
printf("%d ¡G ±N²Ä %d ­Ó¶ê½L¥Ñ %c  ²¾¨ì %c \n",++cnt,n,A,C);
/*¦A¥Ñ B~C*/
hanoi(n-1,B,A,C);
}
}



int main()
{
int n;
scanf("%d",&n);
hanoi(n,'A','B','C');
printf("²¾°Ê %d ¼h¡A¦@»Ý²¾°Ê %d ¦¸",n,cnt);
}

-----------------------------

-----------------------------

-----------------------------

-----------------------------


-----------------------------



-----------------------------

2017年5月5日 星期五

ch7 使用者帳號管理

# groupadd kkGroup
# cat /etc/group
...
kkGroup:x:1000:

useradd   [選項]   帳號名稱
選項:
-c    註解
-g   主要群組名稱或GID
-G   附加群組名稱或GID
-d    指定家目錄
-e    建立的帳號有效日期
-u    指定帳號的UID編號


# useradd -g kkGroup kk1
# id kk1
uid=1000(kk1) gid=1000(kkGroup) groups=1000(kkGroup)


# cat /etc/passwd           //使用者帳號資料
...
kk1:x:1000:1000::/home/kk1:/bin/bash
帳號名稱:密碼:UID:GID:註解:家目錄:登入時使用的shell
//若要停止帳號登入,可將密碼資料 x 改成 !


# cat /etc/shadow           //使用者密碼
...
kk1:!!:17291:0:99999:7:::


# usermod -G root kk1

# id kk1
uid=1000(kk1) gid=1000(kkGroup) groups=1000(kkGroup),0(root)
使用者編號uid(使用者名稱)   群組編號   群組名稱   附加群組資訊


# userdel -r kk1           //刪除帳號及其家目錄所有檔案
# id kk1
id: kk1: no such user
# ls /home

# groupdel kkGroup    //刪除沒有使用者指派的群組



變更檔案權限---         chmod

變更檔案擁有者---     chown

變更檔案所屬群組--- chgrp





    



2017年5月4日 星期四

ch17 DNS

BIND Berkeley Internet Name Domain
FQDN Fully Qualified Domain Name

資源記錄:

網域名稱   [TTL]   [類別]   記錄的類型   值

網域名稱:也可以是IP位址
TTL:記錄存活的時間值
類別:以TCP/IP網路,則一定是 IN

記錄的類型:
SOA:       權限開始
NS:          DNS伺服器
MX:         郵件交換器
A:            位址
PTR:       指標
CNAME:標準名稱

值:記錄的值




# yum install -y bind bind-chroot bind-utils

# rpm -qa | grep bind
bind-libs-9.9.4-38.el7_3.3.x86_64
bind-chroot-9.9.4-38.el7_3.3.x86_64
bind-libs-lite-9.9.4-38.el7_3.3.x86_64
bind-license-9.9.4-38.el7_3.3.noarch
bind-9.9.4-38.el7_3.3.x86_64
bind-utils-9.9.4-38.el7_3.3.x86_64


---------------------------------------------------------------------------
bind:DNS伺服器主要套件,提供基礎的DNS功能

重要目錄與檔案說明:
/etc/named.conf                  //bind主設定檔
/etc/named.rfc1912.zones   //管轄網域設定檔
/usr/sbin/named                  //系統服務執行檔,名稱為named

# ls /var/named                   //所有管轄網域的資源紀錄預設放在此目錄
chroot  data  dynamic  named.ca  named.empty  named.localhost  named.loopback  slaves



bind-chroot:加強bind套件的安全性,將bind工作目錄移至獨立的目錄下
        禁錮機制:

# ls -l /var/named/chroot
總計 0
drwxr-x---. 2 root  named 41  5月  3 15:11 dev
drwxr-x---. 4 root  named 28  5月  3 15:11 etc
drwxr-x---. 3 root  named 18  5月  3 15:11 run
drwxrwx---. 3 named named 18  5月  3 15:11 usr
drwxr-x---. 5 root  named 48  5月  3 15:11 var



bind-utils:DNS相關工具套件,提供dig等測試工具


-----------------------------------------------------------------------

# firewall-cmd --permanent --add-service=dns
success
# firewall-cmd --reload
success


# systemctl start named
# systemctl enable named
Created symlink from /etc/systemd/system/multi-user.target.wants/named.service to /usr/lib/systemd/system/named.service.







dig   @[名稱伺服器位址]   名稱   [查詢類型]

查詢類型:
a:查詢IP位址,預設,可省
mx:查郵件伺服器
ns:查名稱伺服器
cname:查別名
ptr:由IP位址反查名稱
hinfo:DNS伺服器系統資訊


//預設DNS伺服器
# cat /etc/resolv.conf
# Generated by NetworkManager
search centos
nameserver 163.16.1.23



# dig tw.yahoo.com
...
;; QUESTION SECTION:                       //我們向DNS提出的問題
;tw.yahoo.com.                  IN      A

;; ANSWER SECTION:                         //DNS查詢後得到的答案
tw.yahoo.com.           52      IN      CNAME   media-router-fp1.prod.media.yahoo.com.
...

;; AUTHORITY SECTION:                  //該名稱的管轄單位
wg1.b.yahoo.com.        105017  IN      NS      yf1.yahoo.com.
wg1.b.yahoo.com.        105017  IN      NS      yf3.a1.b.yahoo.net.
wg1.b.yahoo.com.        105017  IN      NS      yf2.yahoo.com.
wg1.b.yahoo.com.        105017  IN      NS      yf4.a1.b.yahoo.net.

;; ADDITIONAL SECTION:                //額外資訊
yf1.yahoo.com.          18617   IN      A       68.142.254.15
yf2.yahoo.com.          18617   IN      A       68.180.130.15

;; Query time: 4 msec
;; SERVER: 163.16.1.23#53(163.16.1.23)      //由哪提供資料
;; WHEN: 五  5月 05 11:28:35 CST 2017
;; MSG SIZE  rcvd: 285


# dig @168.95.1.1 tw.yahoo.com
...
;; Query time: 2 msec
;; SERVER: 168.95.1.1#53(168.95.1.1)        //指定hinet的DNS查詢
;; WHEN: 五  5月 05 11:46:18 CST 2017
;; MSG SIZE  rcvd: 167



# dig @localhost www.google.com
...
;; ANSWER SECTION:
www.google.com.         300     IN      A       64.233.187.103
...


# dig @127.0.0.1 www.google.com
...
;; ANSWER SECTION:
www.google.com.         149     IN      A       64.233.187.105
...


# dig @163.16.63.191 www.google.com
; <<>> DiG 9.9.4-RedHat-9.9.4-38.el7_3.3 <<>> @163.16.63.191 www.google.com
; (1 server found)
;; global options: +cmd
;; connection timed out; no servers could be reached


# vi /etc/named.conf
...
options {
//      listen-on port 53 { 127.0.0.1; };
        listen-on port 53 { any; };              //可以公開服務的DNS
...
 allow-query     { 163.16.63.0/24; };
...



# systemctl restart named

# dig @163.16.63.191 www.google.com
...
;; ANSWER SECTION:
www.google.com.         300     IN      A       64.233.187.104
...




-----------管理一個網域

# vi /etc/named.rfc1912.zones
...
zone "kk.rwm" IN {
        type master;
        file "named.kk";
        allow-update { none; };
};




# cp /var/named/named.empty /var/named/named.kk
# vi /var/named/named.kk
$TTL 1D
@       IN SOA  @ rname.invalid. (
                                        0       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
        NS      @
        A       163.16.63.191
www     A       163.16.63.191


# chown root:named /var/named/named.kk
# ls -l /var/named/named.kk
-rw-r-----. 1 root named 166  5月  5 13:59 /var/named/named.kk


# systemctl restart named



# dig @127.0.0.1 www.kk.rwm
...
;; QUESTION SECTION:
;www.kk.rwm.                    IN      A

;; ANSWER SECTION:
www.kk.rwm.             86400   IN      A       163.16.63.191
...


# dig @163.16.63.191 www.kk.rwm
...
;; QUESTION SECTION:
;www.kk.rwm.                    IN      A

;; ANSWER SECTION:
www.kk.rwm.             86400   IN      A       163.16.63.191
...



---------------------------------windows10測試
ipv4網卡,慣用伺服器:163.16.63.191

C:\Users\User>nslookup
DNS request timed out.
    timeout was 2 seconds.
預設伺服器:  UnKnown
Address:  163.16.63.191
>

> www.kk.rwm
伺服器:  UnKnown
Address:  163.16.63.191

名稱:    www.kk.rwm
Address:  163.16.63.191
>

> www.google.com
伺服器:  UnKnown
Address:  163.16.63.191

未經授權的回答:
名稱:    www.google.com
Addresses:  2404:6800:4008:c05::93
          172.217.17.196
>

> exit