Ads 468x60px

แสดงบทความที่มีป้ายกำกับ solaris แสดงบทความทั้งหมด
แสดงบทความที่มีป้ายกำกับ solaris แสดงบทความทั้งหมด

วันศุกร์ที่ 11 พฤศจิกายน พ.ศ. 2554

เปิด FTP Server ใน Solaris 10

เปิด FTP Server ใน Solaris 10

วิธีการเปิด FTP Server ใน Solaris 10 นั้นค่อยข้างง่ายครับ
เนื่องจากโดยปกติการติดตั้ง Solaris 10 นั้นจะติดตั้ดตั้งตัว FTP Server มาให้พร้อมอยู่แล้ว

1.ลองใช้คำสั่งในการตรวจสอบ ดูก่อนว่าในเครื่องเรามี FTP Server อยู่หรือไม่
# inetadm -l network/ftp    ซึ่งคำสั่งนี้ใช้ในการตรวจสอบ status ของ service ครับ

2.จากนั้นใช้คำสั่ง svcadm เพื่อจัดการ service
ซึ่งมีรูปแบบตามนี้ครับ svcadm [operation] serivce_name
เช่น # svcadm enable network/ftp    //คำสั่งในการเปิด service
# svcadm restart network/ftp    //คำสั่งในการ restart service

3.ส่วนการจัดการเกี่ยวกับในส่วนของ user ที่จะ login เข้ามานั้นจะใช้ user ชุดเดียวกับ OS ครับ (รวมทั้ง Home Dir ด้วย ดูที่ /etc/passwd)

แต่เราสามารถกำหนดกฏ หรือการ Block ได้ดังนี้ครับ
3.1 การ block user นั้นสามารถเลือก block ได้โดยใส่ user name ของ user ที่เราต้องการ block ลงในไฟล์ /etc/ftpd/ftpusers
3.2 กฏต่างของ FTP Server จะอยู่ในไฟล์ /etc/ftpd/ftpaccess

Ssh in Solaris

Ssh in Solaris 

This post is about service ssh in solaris 9 or 10

Solaris 9
Disable service ssh ?

bash>  /etc/init.d/sshd stop
bash> /etc/rc3.d/S89sshd stop
 
Enable service ssh ?

bash> /etc/init.d/sshd start
bash> /etc/rc3.d/S89sshd start
 
Refresh service ssh ?

bash> kill -HUP `cat /var/run/sshd.pid`
 
Solaris 10
First you can check service ssh with command

bash> svcs | grep ssh
online         Jan_21   svc:/network/ssh:default
 
If status ssh offline, you can make online with command:

bash> svcadm enable -t network/ssh:default
bash> /lib/svc/method/sshd start
 
Disable service ssh ?

bash> svcadm disable -t network/ssh:default
 
Restart service ssh ?

bash> svcadm restart network/ssh:default
bash> /lib/svc/method/sshd restart
 
Refresh service ssh ?

bash> svcadm refresh network/ssh:default
 
For a root enable connect to host via ssh service

bash> vi /etc/ssh/sshd_config
[....]
# Valid options are yes, without-password, no.
PermitRootLogin no
[....]
 
Replace no with yes, after that save the edited configuration.
Don't forget for the restart service ssh, after edit configuration.

วันจันทร์ที่ 10 ตุลาคม พ.ศ. 2554

ปัญหาการใช้ SSH Public Key Authentication บน Solaris

ปัญหาการใช้ SSH Public Key Authentication บน Solaris
พยายามคอนฟิก Public Key Authentication เพื่อ login เข้าสู่เครื่องที่ติดตั้ง Solaris อยู่นาน ก็ไม่สามารถทำได้ แต่ในที่สุดก็สามารถหาปัญหาได้ เลยมาแชร์ประสบการณ์เผื่อจะเป็นประโยชน์

ทดสอบปัญหา

เริ่มต้นเพิ่ม user บนเครื่องที่ติดตั้ง Solaris 10 สมมติว่าชื่อ user1
[root@solaris ~]# useradd user1
[root@solaris ~]# id user1
uid=502(user1) gid=1(other) groups=1(other)
แก้ไข home ของ user1 ให้อยู่ใน /export/home/ และสร้างไดเร็คทอรี
[root@solaris ~]# cat /etc/passwd
...
user1:x:502:1::/export/home/user1:/bin/sh
[root@solaris ~]# cd /export/home
[root@solaris home]# mkdir user1
[root@solaris home]# chown user1 user1/
[root@solaris home]# su - user1
[user1@solaris ~]$ pwd
/export/home/user1
ต้องการให้ admin1 จากเครื่องที่ติดตั้ง linux สามารถ ssh ด้วย public key authentication เป็น user1 บนเครื่อง Solaris ได้
สร้าง public, private key ของ admin1
[admin1@linux ~]$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/admin1/.ssh/id_rsa):
Created directory '/home/admin1/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/admin1/.ssh/id_rsa.
Your public key has been saved in /home/admin1/.ssh/id_rsa.pub.
[admin1@linux ~]$ cat .ssh/id_rsa.pub
ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAtMbbgeFnn6vEo3IAVh... admin1@linux
copy ไฟล์ id_rsa.pub ของ admin1 ไปใส่ไว้ในไฟล์ authorized_keys ของ user1 บนเครื่อง Solaris
[user1@solaris ~]$ cat .ssh/authorized_keys
ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAtMbbgeFnn6vEo3IAVh... admin1@linux
ทดสอบ ssh จากเครื่อง linux
[admin1@linux ~]$ ssh -l user1 solaris
The authenticity of host 'solaris (192.168.1.2)' can't be established.
RSA key fingerprint is ...
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'solaris' (RSA) to the list of known hosts.
Password:
ขึ้นให้ใส่ password ไม่สามารถ login ด้วย public key authentication ได้

วิธีการแก้ไขปัญหา

หลังจากพยายามอยู่นาน ก็พบว่า ssh จะตรวจสอบสถานะ password ของผู้ใช้ด้วย ซึ่งถ้าดูในไฟล์ /etc/shadow จะเห็นว่า user1 จะถูก lock อยู่
[root@solaris ~]# cat /etc/shadow
...
user1:*LK*:::::::
ฟิลด์ที่สองในไฟล์ /etc/shadow คือ encrypted password คำอธิบายจาก man ของ shadow คือ
# man shadow
...
     password        An encrypted password for the user generated
                     by crypt(3C), a lock string to indicate that
                     the login is not accessible, or  no  string,
                     which  shows  that  there is no password for
                     the login.
                     The lock string is defined as  *LK*  in  the
                     first four characters of the password field.
...
การแก้ไขคือ ลบตัวอักษร LK ออก เช่นให้เหลือแต่เครื่องหมาย *
[root@solaris ~]# cat /etc/shadow
...
user1:*:::::::
ทดสอบ ssh จากเครื่อง linux อีกครั้ง ก็จะได้ตามที่ต้องการ
[admin1@linux ~]$ ssh -l user1 solaris
[user1@solaris ~]$

ติดตั้ง Sun Freeware บน Solaris

ติดตั้ง Sun Freeware บน Solaris
เว็บไซต์ Sunfreeware.com เป็นแหล่งรวม free software ที่ถูก compile ให้อยู่ในรูปแบบ package (.pkg)  ทำให้สะดวกต่อการติดตั้งบน Solaris  ไฟล์ที่มีให้ดาวน์โหลดมีตั้งแต่ Solaris 2.5 จนถึงเวอร์ชั่นล่าสุด Solaris 10 ทั้งสำหรับรันบนเครื่อง SPARC และ Intel (x86)
การดาวน์โหลดไฟล์เพื่อนำมาติดตั้งมีขั้นตอนดังนี้
  • เลือกเวอร์ชั่นของ Solaris เป็น SPARC หรือ Intel x86 (Pick Processor/OS)
  • เลือก Package ที่จะติดตั้ง
  • อ่านรายละเอียดของ Package นั้น เช่น ต้องติดตั้งโปรแกรมอะไรก่อน (Dependencies)
  • คลิ้กดาวน์โหลดไฟล์ที่ต้องใช้
บทความนี้ขอนำเสนอตัวอย่างการติดตั้ง apache-2.2.11 โดยจะทดลองบน Solaris  10(x86)

เลือกเวอร์ชั่นของ Solaris

คลิ้กเลือก x86/Solaris 10
Sunfreeware Pick Processor/OS

เลือก Package

คลิ้กเลือก apache-2.2.11
Sunfreeware - Select Package

อ่านรายละเอียด Package

รายละเอียดของ apache-2.2.11-sol10-x86-local.gz มีดังนี้
apache-2.2.11-sol10-x86-local.gz Apache 2 – the popular web server – installs in /usr/local/apache2. Dependencies: expat, libiconv, openldap, sasl, zlib, openssl-0.9.8k, and either the libgcc-3.4.6 or gcc-3.4.6. Documentation can be found in /usr/local/apache2/doc/apache2. The configuration files in /usr/local/apache2/conf must be edited to fit your site’s needs, including ssl support.
Sunfreeware - Package Details
จากรายละเอียด
  • การติดตั้ง apache จะถูกติดตั้งไว้ใน /usr/local/apache2
  • ต้องดาวน์โหลดไฟล์อื่นๆ ด้วย (Dependencies) ในที่นี้มี expat, libiconv, openldap, sasl, zlib, openssl-0.9.8k สามารถคลิ้กลิ้งค์ที่ชื่อไฟล์ได้เลย โดยแต่ละไฟล์อาจมี Dependencies ที่ต้องลงอีก สามารถอ่านรายละเอียดของแต่ละไฟล์ เช่น libiconv ต้องใช้  db-4.2.52.NC
  • สำหรับ libgcc_s.so.1 สามารถเลือกไฟล์ติดตั้ง ได้สองแบบคือ libgcc-3.4.6 คือ gcc-3.4.6 แบบแรกไฟล์ libgcc-3.4.6 จะขนาดเล็กกว่าแต่มีเฉพาะ library ที่จำเป็นต้องใช้ ไม่มี compiler เพื่อใช้คอมไพล์โปรแกรมเหมือน gcc-3.4.6 ได้
คลิ้กลิงค์ที่ไฟล์ต่างๆ เพื่อดาวน์โหลดไฟล์ทั้งหมดที่ต้องใช้

ติดตั้ง package

สำหรับการติดตั้ง apache-2.2.11 ถ้าคลิ้กลิ้งค์ไปเรื่อยๆ ตาม Dependencies ไฟล์ที่ต้องใช้มีดังนี้ (24 May 2009)
# ls -l
total 47568
-rw-r--r--   1 user1    other    7873798 May 24 21:20 apache-2.2.11-sol10-x86-local.gz
-rw-r--r--   1 user1    other    3942221 May 24 21:20 db-4.2.52.NC-sol10-intel-local.gz
-rw-r--r--   1 user1    other     299057 May 24 21:20 expat-2.0.1-sol10-x86-local.gz
-rw-r--r--   1 user1    other     526342 May 24 21:20 libgcc-3.4.6-sol10-x86-local.gz
-rw-r--r--   1 user1    other    1451349 May 24 21:20 libiconv-1.11-sol10-x86-local.gz
-rw-r--r--   1 user1    other    6436151 May 24 21:20 openldap-2.4.11-sol10-x86-local.gz
-rw-r--r--   1 user1    other    3174076 May 24 21:20 openssl-0.9.8k-sol10-x86-local.gz
-rw-r--r--   1 user1    other     540742 May 24 21:20 sasl-2.1.21-sol10-x86-local.gz
รัน gzip เพื่อ unzip ไฟล์
# gzip -dv *.gz
apache-2.2.11-sol10-x86-local.gz:        75.3% -- replaced with apache-2.2.11-sol10-x86-local
db-4.2.52.NC-sol10-intel-local.gz:       84.1% -- replaced with db-4.2.52.NC-sol10-intel-local
expat-2.0.1-sol10-x86-local.gz:  65.7% -- replaced with expat-2.0.1-sol10-x86-local
libgcc-3.4.6-sol10-x86-local.gz:         71.7% -- replaced with libgcc-3.4.6-sol10-x86-local
libiconv-1.11-sol10-x86-local.gz:        36.8% -- replaced with libiconv-1.11-sol10-x86-local
openldap-2.4.11-sol10-x86-local.gz:      72.1% -- replaced with openldap-2.4.11-sol10-x86-local
openssl-0.9.8k-sol10-x86-local.gz:       71.3% -- replaced with openssl-0.9.8k-sol10-x86-local
sasl-2.1.21-sol10-x86-local.gz:  71.4% -- replaced with sasl-2.1.21-sol10-x86-local
รัน pkgadd เพื่อติดตั้ง package ต่างๆ
หมายเหตุ ไม่จำเป็นต้องรัน pkgadd เพื่อติดตั้งไฟล์ตาม Dependencies
# pkgadd -d apache-2.2.11-sol10-x86-local
The following packages are available:
  1  SMCap2211     apache
                   (x86) 2.2.11
Select package(s) you wish to process (or 'all' to process
all packages). (default: all) [?,??,q]: all
Processing package instance <SMCap2211> from </usr/local/src/apache-2.2.11-sol10-x86-local>
apache(x86) 2.2.11
The Apache Group
Using </usr/local> as the package base directory.
## Processing package information.
## Processing system information.
## Verifying disk space requirements.
## Checking for conflicts with packages already installed.
## Checking for setuid/setgid programs.
Installing apache as <SMCap2211>
## Installing part 1 of 1.
/usr/local/apache2/bin/ab
/usr/local/apache2/bin/apachectl
/usr/local/apache2/bin/apr-1-config
/usr/local/apache2/bin/apu-1-config
/usr/local/apache2/bin/apxs
/usr/local/apache2/bin/checkgid
/usr/local/apache2/bin/dbmmanage
/usr/local/apache2/bin/envvars
/usr/local/apache2/bin/envvars-std
/usr/local/apache2/bin/htcacheclean
/usr/local/apache2/bin/htdbm
/usr/local/apache2/bin/htdigest
/usr/local/apache2/bin/htpasswd
/usr/local/apache2/bin/httpd
...
...
...
/usr/local/doc/apache/docs/manual/vhosts/name-based.html.ja.utf8
/usr/local/doc/apache/docs/manual/vhosts/name-based.html.ko.euc-kr
/usr/local/doc/apache/docs/manual/vhosts/name-based.html.tr.utf8
/usr/local/doc/apache/httpd.spec
[ verifying class <none> ]
Installation of <SMCap2211> was successful.
# pkgadd -d expat-2.0.1-sol10-x86-local
The following packages are available:
  1  SMCexpat     expat
                  (x86) 2.0.1
Select package(s) you wish to process (or 'all' to process
all packages). (default: all) [?,??,q]: all
Processing package instance <SMCexpat> from </usr/local/src/expat-2.0.1-sol10-x86-local>
expat(x86) 2.0.1
James Clark et al
Using </usr/local> as the package base directory.
## Processing package information.
## Processing system information.
   1 package pathname is already properly installed.
## Verifying disk space requirements.
## Checking for conflicts with packages already installed.
The following files are already installed on the system and are being
used by another package:
* /usr/local/bin <attribute change only>
* - conflict with a file which does not belong to any package.
Do you want to install these conflicting files [y,n,?,q] y
## Checking for setuid/setgid programs.
Installing expat as <SMCexpat>
## Installing part 1 of 1.
/usr/local/bin/xmlwf
/usr/local/doc/expat/COPYING
/usr/local/doc/expat/Changes
/usr/local/doc/expat/MANIFEST
/usr/local/doc/expat/README
...
...
...
/usr/local/lib/libexpat.so.0 <symbolic link>
/usr/local/lib/libexpat.so.0.4.0
/usr/local/lib/libexpat.so.1 <symbolic link>
/usr/local/lib/libexpat.so.1.5.2
/usr/local/man/man1/xmlwf.1
[ verifying class <none> ]
Installation of <SMCexpat> was successful.
# pkgadd -d libiconv-1.11-sol10-x86-local
The following packages are available:
  1  SMCliconv     libiconv
                   (x86) 1.11
Select package(s) you wish to process (or 'all' to process
all packages). (default: all) [?,??,q]: all
Processing package instance <SMCliconv> from </usr/local/src/libiconv-1.11-sol10-x86-local>
libiconv(x86) 1.11
Bruno Haible
Using </usr/local> as the package base directory.
## Processing package information.
## Processing system information.
   6 package pathnames are already properly installed.
## Verifying disk space requirements.
## Checking for conflicts with packages already installed.
The following files are already installed on the system and are being
used by another package:
* /usr/local/share <attribute change only>
* /usr/local/share/doc <attribute change only>
* - conflict with a file which does not belong to any package.
Do you want to install these conflicting files [y,n,?,q] y
## Checking for setuid/setgid programs.
Installing libiconv as <SMCliconv>
## Installing part 1 of 1.
/usr/local/bin/iconv
/usr/local/doc/libiconv/ABOUT-NLS
/usr/local/doc/libiconv/AUTHORS
/usr/local/doc/libiconv/COPYING.LIB
/usr/local/doc/libiconv/ChangeLog
...
...
/usr/local/share/doc/iconv.1.html
/usr/local/share/doc/iconv.3.html
/usr/local/share/doc/iconv_close.3.html
/usr/local/share/doc/iconv_open.3.html
/usr/local/share/doc/iconvctl.3.html
[ verifying class <none> ]
Installation of <SMCliconv> was successful.
# pkgadd -d openssl-0.9.8k-sol10-x86-local
The following packages are available:
  1  SMCossl     openssl
                 (x86) 0.9.8k
Select package(s) you wish to process (or 'all' to process
all packages). (default: all) [?,??,q]: all
Processing package instance <SMCossl> from </usr/local/src/openssl-0.9.8k-sol10-x86-local>
openssl(x86) 0.9.8k
The OpenSSL Group
Using </usr/local> as the package base directory.
## Processing package information.
## Processing system information.
   1 package pathname is already properly installed.
## Verifying disk space requirements.
## Checking for conflicts with packages already installed.
## Checking for setuid/setgid programs.
Installing openssl as <SMCossl>
## Installing part 1 of 1.
/usr/local/doc/openssl/CHANGES
/usr/local/doc/openssl/CHANGES.SSLeay
/usr/local/doc/openssl/FAQ
/usr/local/doc/openssl/INSTALL
/usr/local/doc/openssl/INSTALL.DJGPP
...
...
...
/usr/local/ssl/misc/c_hash
/usr/local/ssl/misc/c_info
/usr/local/ssl/misc/c_issuer
/usr/local/ssl/misc/c_name
/usr/local/ssl/openssl.cnf
[ verifying class <none> ]
Installation of <SMCossl> was successful.
# pkgadd -d db-4.2.52.NC-sol10-intel-local
The following packages are available:
  1  SMCdb     db
               (intel) 4.2.52.NC
Select package(s) you wish to process (or 'all' to process
all packages). (default: all) [?,??,q]: all
Processing package instance <SMCdb> from </usr/local/src/db-4.2.52.NC-sol10-intel-local>
db(intel) 4.2.52.NC
Sleepycat Software
Using </usr/local> as the package base directory.
## Processing package information.
## Processing system information.
## Verifying disk space requirements.
## Checking for conflicts with packages already installed.
## Checking for setuid/setgid programs.
Installing db as <SMCdb>
## Installing part 1 of 1.
/usr/local/BerkeleyDB.4.2/bin/db_archive
/usr/local/BerkeleyDB.4.2/bin/db_checkpoint
/usr/local/BerkeleyDB.4.2/bin/db_deadlock
/usr/local/BerkeleyDB.4.2/bin/db_dump
/usr/local/BerkeleyDB.4.2/bin/db_load
...
...
...
/usr/local/BerkeleyDB.4.2/lib/libdb-4.2.la
/usr/local/BerkeleyDB.4.2/lib/libdb-4.2.so
/usr/local/BerkeleyDB.4.2/lib/libdb-4.so <symbolic link>
/usr/local/BerkeleyDB.4.2/lib/libdb.a
/usr/local/BerkeleyDB.4.2/lib/libdb.so <symbolic link>
[ verifying class <none> ]
Installation of <SMCdb> was successful.
# pkgadd -d libgcc-3.4.6-sol10-x86-local
The following packages are available:
  1  SMClgcc346     libgcc
                    (x86) 3.4.6
Select package(s) you wish to process (or 'all' to process
all packages). (default: all) [?,??,q]: all
Processing package instance <SMClgcc346> from </usr/local/src/libgcc-3.4.6-sol10-x86-local>
libgcc(x86) 3.4.6
FSF
Using </usr/local> as the package base directory.
## Processing package information.
## Processing system information.
   1 package pathname is already properly installed.
## Verifying disk space requirements.
## Checking for conflicts with packages already installed.
## Checking for setuid/setgid programs.
Installing libgcc as <SMClgcc346>
## Installing part 1 of 1.
/usr/local/lib/libg2c.so <symbolic link>
/usr/local/lib/libg2c.so.0 <symbolic link>
/usr/local/lib/libg2c.so.0.0.0
/usr/local/lib/libgcc_s.so <symbolic link>
/usr/local/lib/libgcc_s.so.1
/usr/local/lib/libstdc++.so.6 <symbolic link>
/usr/local/lib/libstdc++.so.6.0.3
[ verifying class <none> ]
Installation of <SMClgcc346> was successful.
# pkgadd -d openldap-2.4.11-sol10-x86-local
The following packages are available:
  1  SMColdap     openldap
                  (x86) 2.4.11
Select package(s) you wish to process (or 'all' to process
all packages). (default: all) [?,??,q]: all
Processing package instance <SMColdap> from </usr/local/src/openldap-2.4.11-sol10-x86-local>
openldap(x86) 2.4.11
The OpenLDAP Group
Using </usr/local> as the package base directory.
## Processing package information.
## Processing system information.
   7 package pathnames are already properly installed.
## Verifying disk space requirements.
## Checking for conflicts with packages already installed.
## Checking for setuid/setgid programs.
Installing openldap as <SMColdap>
## Installing part 1 of 1.
/usr/local/bin/ldapadd <symbolic link>
/usr/local/bin/ldapcompare
/usr/local/bin/ldapdelete
/usr/local/bin/ldapexop
/usr/local/bin/ldapmodify
...
...
...
/usr/local/var/openldap-data/__db.005
/usr/local/var/openldap-data/alock
/usr/local/var/openldap-data/dn2id.bdb
/usr/local/var/openldap-data/id2entry.bdb
/usr/local/var/openldap-data/log.0000000001
[ verifying class <none> ]
Installation of <SMColdap> was successful.
# pkgadd -d sasl-2.1.21-sol10-x86-local
The following packages are available:
  1  SMCsasl     sasl
                 (x86) 2.1.21
Select package(s) you wish to process (or 'all' to process
all packages). (default: all) [?,??,q]: all
Processing package instance <SMCsasl> from </usr/local/src/sasl-2.1.21-sol10-x86-local>
sasl(x86) 2.1.21
The SASL Team
Using </usr/local> as the package base directory.
## Processing package information.
## Processing system information.
   7 package pathnames are already properly installed.
## Verifying disk space requirements.
## Checking for conflicts with packages already installed.
## Checking for setuid/setgid programs.
Installing sasl as <SMCsasl>
## Installing part 1 of 1.
/usr/local/doc/sasl2/AUTHORS
/usr/local/doc/sasl2/COPYING
/usr/local/doc/sasl2/ChangeLog
/usr/local/doc/sasl2/INSTALL
/usr/local/doc/sasl2/NEWS
...
...
...
/usr/local/man/man8/sasldblistusers2.8
/usr/local/man/man8/saslpasswd2.8
/usr/local/sbin/saslauthd
/usr/local/sbin/sasldblistusers2
/usr/local/sbin/saslpasswd2
[ verifying class <none> ]
Installation of <SMCsasl> was successful.

ตรวจสอบ package ที่ติดตั้ง

รันคำสั่ง pkginfo เพื่อตรวจสอบ package ที่ติดตั้ง ดูเฉพาะที่มีชื่อ SMC
# pkginfo | grep SMC
application SMCap2211                        apache
application SMCdb                            db
application SMCexpat                         expat
application SMClgcc346                       libgcc
application SMCliconv                        libiconv
application SMColdap                         openldap
application SMCossl                          openssl
application SMCsasl                          sasl
system      SUNWmgts                         Trusted Extensions, SMC
application SUNWtsmc                         Trusted Extensions SMC Server

รันเว็บเซิร์ฟเวอร์ apache

ใช้คำสั่ง apachectl เพื่อรัน apache
# /usr/local/apache2/bin/apachectl start
# ps -ef | grep apache
  daemon  1016  1011   0 22:13:43 ?           0:00 /usr/local/apache2/bin/httpd -k start
  daemon  1013  1011   0 22:13:43 ?           0:00 /usr/local/apache2/bin/httpd -k start
  daemon  1012  1011   0 22:13:43 ?           0:00 /usr/local/apache2/bin/httpd -k start
  daemon  1015  1011   0 22:13:43 ?           0:00 /usr/local/apache2/bin/httpd -k start
  daemon  1014  1011   0 22:13:43 ?           0:00 /usr/local/apache2/bin/httpd -k start
    root  1011     1   0 22:13:42 ?           0:00 /usr/local/apache2/bin/httpd -k start

เพิ่มความปลอดภัยให้ Solaris 10 แบบง่าย

เพิ่มความปลอดภัยให้ Solaris 10 แบบง่าย
วันนี้ขอเขียนเกี่ยวกับ Solaris 10 ซะหน่อย ช่วงนี้ได้รับมอบหมายให้เพิ่มความปลอดภัย (secure) ให้กับเครื่อง Solaris  แต่มีข้อแม้ไม่อยากให้ลง JASS (Solaris Security Toolkit) ก็เลยลองทำดู และเรียบเรียงมาเป็นบทความให้ผู้สนใจทั่วไป
การเพิ่มความปลอดภัยในบทความนี้  คือการปิดเซอร์วิสที่ไม่ได้ใช้งานโดยไม่กระทบกับงานที่ลูกค้าใช้  ซึ่งนอกจากจะปิดช่องโหว่ที่อาจเกิดขึ้นแล้ว ยังได้ free memory เพิ่มคืนมาอีกด้วย

ปิด remote services ตอนติดตั้ง Solaris

วิธีการหนึ่งที่ช่วยปิดเซอร์วิสเก่าๆ สำหรับการ remote services ไม่ว่าจะเป็น telnet, rlogin, ftp  เหลือแค่ Secure Shell (SSH) สามารถทำได้ตั้งแต่ระหว่างการติดตั้ง Solaris ในหน้าจอที่เลือก “Enabling remote services” ให้เลือก [x] No สำหรับ “Remote services enabled
Solaris 10 Installation - Disable Remote Services

ปิดเซอร์วิส CDE-Login (X Window)

หากคุณไม่เคยเดินไปที่หน้าจอคอนโซลของเครื่อง login เข้า CDE หรือ W Window แล้ว  สามารถปิดเซอร์วิสนี้ไปได้เลย เหลือแค่เป็นคอนโซล แบบ text ธรรมดา ให้สามารถ login ได้
ใช้คำสั่ง svcs เพื่อตรวจสอบสถานะ cde-login
# svcs cde-login
 STATE          STIME    FMRI
 online         13:34:58 svc:/application/graphical-login/cde-login:default
ตัวอย่างหน้าจอ cde-login
Solaris 10 - CDE Login
ใช้คำสั่ง svcadm disable เพื่อปิดเซอร์วิส cde-login
# svcadm disable cde-login
ตรวจสอบสถานะ cde-login หลังจากปิดเซอร์วิสแล้ว
# svcs cde-login
 STATE          STIME    FMRI
 disabled       13:36:59 svc:/application/graphical-login/cde-login:default
ตัวอย่าง text console login หลังจากปิดเซอร์วิส cde-login
After Disable CDE Login

ปิดเซอร์วิส Sun Java Web Console

Sun Java Web Console เป็นเซอร์วิสของ Solaris เพื่อสร้างเป็นจุดรวมของโปรแกรมประเภท system management ผ่านทาง web-based โดยผู้ใช้สามารถเรียกผ่าน https ได้
Sun Java Web Console
หากเราใช้แต่ command line เพื่อแก้ไขคอนฟิกเครื่อง เราสามารถปิดเซอร์วิสนี้ได้
ใช้คำสั่ง svcs เพื่อตรวจสอบสถานะ webconsole
# svcs webconsole
 STATE          STIME    FMRI
 online         14:01:06 svc:/system/webconsole:console
ใช้คำสั่ง svcadm disable เพื่อปิดเซอร์วิส webconsole
# svcadm disable webconsole
ตรวจสอบสถานะ webconsole หลังจากปิดเซอร์วิสแล้ว
# svcs webconsole
 STATE          STIME    FMRI
 disabled       14:41:47 svc:/system/webconsole:console

คอนฟิก Solaris IP Filter

คอนฟิก Solaris IP Filter
บทความนี้กล่าวถึงวิธีการใช้คำสั่ง ipf เพื่อสร้าง rule ของ Solaris IP Filter แบบง่ายๆ เพื่อใช้กำหนด packet เข้าออกเครื่อง

Solaris IP Filter เป็นโปรแกรม Firewall ที่ควบคุม packet เข้า/ออก เครื่องที่ติดตั้ง Solaris ได้
ipf เป็นคำสั่งที่ใช้ในการแก้ไขกฎ (rule) ของ Solaris IP Filter
หมายเหตุ
  • ตัวอย่างในบทความนี้ทดสอบบนเครื่องที่ติดตั้ง Solaris 10 10/09 s10x_u8wos_08a X86
  • ทดสอบกับเครื่องที่สามารถคอนโซลหน้าจอได้เท่านั้น เพราะถ้าคอนฟิก rule ของ Firewall ผิดพลาด อาจทำให้คุณไม่สามารถ remote เช่น Secure Shell ได้

1. เปิด (Start) เซอร์วิส ipfilter

โดยดีฟอลต์จากการติดตั้ง เซอร์วิส IP Filter จะถูกปิดการใช้งาน
ใช้คำสั่ง svcs ตรวจสอบสถานะ
# svcs -av | grep ipfilter
disabled       -             15:25:36      - svc:/network/ipfilter:default
ใช้คำสั่ง svcadm เพื่อเปิดการเซอร์วิส
# svcadm enable ipfilter
# svcs -av | grep ipfilter
online         -             15:27:14      - svc:/network/ipfilter:default

2. เปิดคุณสมบัติ (Enable) IP Filter

ขั้นต่อมา ใช้คำสั่ง ipf -E เพื่อเปิดคุณสมบัติ IP Filter
# ipf -E

3. ทดลองการสร้าง rule แบบง่ายๆ

สร้างไฟล์ /etc/ipf/ipf.conf เพื่อกำหนด rule ที่ต้องการ
ตัวอย่างเช่น ต้องการสร้าง rule เพื่อกำหนดให้เฉพาะเครื่องที่มี IP 192.168.1.2 เท่านั้นที่สามารถ ping (ICMP) เข้ามาที่เครื่องทางพอร์ต e1000g0 ได้
# cat /etc/ipf/ipf.conf
block in on e1000g0 proto icmp from any to any
pass in on e1000g0 proto icmp from 192.168.1.2/32 to any
หลังจากสร้างไฟล์เรียบร้อย พิมพ์คำสั่ง ipf -f ตามด้วยไฟล์ ipf.conf เพื่อเริ่มการบังคับใช้ rule ที่สร้างขึ้น
# ipf -f /etc/ipf/ipf.conf
*** 4. ลบ (Flush) rule ออกไป ***
หากต้องการยกเลิก rule ที่สร้างขึ้น ใช้คำสั่ง ipf -F เพื่อ ลบ (flush) rule ที่มีออกไป
# ipf -F a

5. ปิดคุณสมบัติ (Disable) IP Filter

ใช้คำสั่ง ipf -D เพื่อปิดคุณสมบัติ IP Filter
# ipf -D

ตัวอย่าง rule

มีตัวอย่างการสร้างไฟล์ ipf.conf เพื่อกำหนด rule แบบต่างๆ /usr/share/ipfilter/examples/

คอนฟิก SNMP บน Solaris 10

คอนฟิก SNMP บน Solaris 10
SNMP เป็นเครื่องมือหนึ่งที่สามารถใช้ดูการทำงานของเครื่อง เก็บประวัติการใช้ resource ต่างๆ ของเครื่อง ไม่ว่าจะเป็น CPU, Memory, Disk, Network แล้วสามารถนำมาใช้สร้างเป็นกราฟ รายงาน เพื่อวางแผนการเพิ่ม hardware เมื่อจำเป็นได้
ในบทความนี้จะอธิบายวิธีการคอนฟิกและรัน SNMP Server บน Solaris 10 เพื่อให้สามารถใช้โปรแกรม SNMP เช่น MRTG, Cacti, NMS  มาเก็บค่าต่างๆ ได้

ระบบทดสอบ

บทความนี้ทดสอบบน Solaris 10 (x86) 10/09
# cat /etc/release
                       Solaris 10 10/09 s10x_u8wos_08a X86
           Copyright 2009 Sun Microsystems, Inc.  All Rights Reserved.
                        Use is subject to license terms.
                           Assembled 16 September 2009

รันเซอร์วิส sma

โปรแกรมชุด SNMP หรือ System Management Agent ใน Solaris 10 ได้มาจาก Net-SNMP ซึ่งเป็น freeware โดยจะถูกติดตั้งใน path ที่ชื่อ /usr/sfw/ ดังนี้น เวลารันคำสั่ง อาจต้องมีการระบุ PATH เพิ่มเติม
System Management Agent บน Solaris 10 ถูกควบคุมด้วยเซอร์วิสที่ชื่อ sma
ใช้คำสั่ง svcs เพื่อตรวจสอบว่ารันเซอร์วิส sma อยู่หรือไม่
# svcs -a | grep sma
disabled       13:50:30 svc:/application/management/sma:default
หมายเหตุ ต้องระบุออปชั่น ‘-a’ เพื่อดูชื่อเซอร์วิสทั้งหมด ทั้งที่ enable และ disable ไว้
ไฟล์คอนฟิกของ SNMP Server คือ /etc/sma/snmp/snmpd.conf
# cat /etc/sma/snmp/snmpd.conf
...
###########################################################################
#
# SECTION: Access Control Setup
#
#   This section defines who is allowed to talk to your running
#   snmp agent.
# rocommunity: a SNMPv1/SNMPv2c read-only access community name
#   arguments:  community [default|hostname|network/bits] [oid]
rocommunity  public
...
ดีฟอลต์ SNMP Community String แบบ read-only คือ “public” แนะนำให้เปลี่ยน เช่นเปลี่ยนเป็น “test_public_read”
# cat /etc/sma/snmp/snmpd.conf
...
rocommunity  test_public_read
...
ใช้คำสั่ง svcadm เพื่อรันเซอร์วิส sma
# svcadm enable svc:/application/management/sma:default
# svcs -a  | grep sma
online         14:18:37 svc:/application/management/sma:default
ใช้คำสั่ง ps เพื่อตรวจสอบ process ของ snmpd (SNMP Server)
# ps -ef | grep snmp
    root  1008     1   0 14:18:38 ?           0:00 /usr/sfw/sbin/snmpd
ทดลองใช้คำสั่ง snmpwalk เพื่อ walk ค่าต่างๆ ผ่านทาง SNMP
# /usr/sfw/bin/snmpwalk -v 1 -c test_public_read 127.0.0.1 system
SNMPv2-MIB::sysDescr.0 = STRING: SunOS sol10u8-zfs64a 5.10 Generic_141445-09 i86pc
SNMPv2-MIB::sysObjectID.0 = OID: NET-SNMP-MIB::netSnmpAgentOIDs.3
DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (12062) 0:02:00.62
SNMPv2-MIB::sysContact.0 = STRING: "System administrator"
SNMPv2-MIB::sysName.0 = STRING: sol10u8-zfs64a
SNMPv2-MIB::sysLocation.0 = STRING: "System administrators office"
SNMPv2-MIB::sysServices.0 = INTEGER: 72
SNMPv2-MIB::sysORLastChange.0 = Timeticks: (64) 0:00:00.64
SNMPv2-MIB::sysORID.1 = OID: IF-MIB::ifMIB
SNMPv2-MIB::sysORID.2 = OID: SNMPv2-MIB::snmpMIB
SNMPv2-MIB::sysORID.3 = OID: TCP-MIB::tcpMIB
...

เพิ่มดิสก์ใหม่บน Solaris 10

เพิ่มดิสก์ใหม่บน Solaris 10
เช่นเดียวกับระบบปฏิบัติการ OS อื่นๆ เมื่อมีการเพิ่มดิสก์ก้อนใหม่เข้าไปในเครื่องที่ติดตั้ง Solaris 10 ต้องมีกระบวนการ หรือต้องรันคำสั่งก่อนที่จะเริ่มใช้ดิสก์ก้อนใหม่ได้

ในบทความนี้ทดสอบการเพิ่มดิสก์ก้อนใหม่ 1 ก้อน บน Solaris 10 (x86)
ใช้คำสั่ง format เพื่อดูว่า Solaris มองเห็นดิสก์อะไรบ้าง
# format
Searching for disks...done
AVAILABLE DISK SELECTIONS:
       0. c1t0d0 <DEFAULT cyl 4866 alt 2 hd 255 sec 63>
          /pci@0,0/pci1000,30@10/sd@0,0
       1. c1t1d0 <DEFAULT cyl 4867 alt 2 hd 255 sec 63>
          /pci@0,0/pci1000,30@10/sd@1,0
Specify disk (enter its number):
ดิสก์ก้อนใหม่ที่เพิ่มเข้ามาคือดิสก์หมายเลข 1 “c1t1d0″
พิมพ์หมายเลขของดิสก์แล้วกด [Enter] เพื่อเข้าสู่โหมดจัดการของดิสก์ก้อนที่ระบุ
Specify disk (enter its number): 1
selecting c1t1d0
[disk formatted]
FORMAT MENU:
        disk       - select a disk
        type       - select (define) a disk type
        partition  - select (define) a partition table
        current    - describe the current disk
        format     - format and analyze the disk
        fdisk      - run the fdisk program
        repair     - repair a defective sector
        label      - write label to the disk
        analyze    - surface analysis
        defect     - defect list management
        backup     - search for backup labels
        verify     - read and display labels
        save       - save new disk/partition definitions
        inquiry    - show vendor, product and revision
        volname    - set 8-character volume name
        !<cmd>     - execute <cmd>, then return
        quit
พิมพ์คำสั่ง partition เพื่อเข้าสู่โหมดการแบ่ง partition
format> partition
WARNING - This disk may be in use by an application that has
          modified the fdisk table. Ensure that this disk is
          not currently in use before proceeding to use fdisk.
หากเจอข้อความ WARNING แบบด้านบน ให้พิมพ์คำสั่ง fdisk เพื่อแก้ไข
format> fdisk
No fdisk table exists. The default partition for the disk is:
  a 100% "SOLARIS System" partition
Type "y" to accept the default partition,  otherwise type "n" to edit the
 partition table.
y
format>
พิมพ์คำสั่ง partition อีกครั้ง
format> partition
PARTITION MENU:
        0      - change `0' partition
        1      - change `1' partition
        2      - change `2' partition
        3      - change `3' partition
        4      - change `4' partition
        5      - change `5' partition
        6      - change `6' partition
        7      - change `7' partition
        select - select a predefined table
        modify - modify a predefined partition table
        name   - name the current table
        print  - display the current table
        label  - write partition map and label to the disk
        !<cmd> - execute <cmd>, then return
        quit
partition>
พิมพ์คำสั่ง print เพื่อแสดงการแบ่ง partition
partition> print
Current partition table (original):
Total disk cylinders available: 4866 + 2 (reserved cylinders)
Part      Tag    Flag     Cylinders        Size            Blocks
  0 unassigned    wm       0               0         (0/0/0)           0
  1 unassigned    wm       0               0         (0/0/0)           0
  2     backup    wu       0 - 4865       37.28GB    (4866/0/0) 78172290
  3 unassigned    wm       0               0         (0/0/0)           0
  4 unassigned    wm       0               0         (0/0/0)           0
  5 unassigned    wm       0               0         (0/0/0)           0
  6 unassigned    wm       0               0         (0/0/0)           0
  7 unassigned    wm       0               0         (0/0/0)           0
  8       boot    wu       0 -    0        7.84MB    (1/0/0)       16065
  9 unassigned    wm       0               0         (0/0/0)           0
partition>
เริ่มต้น ทดลองสร้าง partition 0 มีขนาด 10 GB
partition> 0
Part      Tag    Flag     Cylinders        Size            Blocks
  0 unassigned    wm       0               0         (0/0/0)           0
Enter partition id tag[unassigned]:
Enter partition permission flags[wm]:
Enter new starting cyl[0]:
Enter partition size[0b, 0c, 0e, 0.00mb, 0.00gb]: 10gb
ใช้คำสั่ง print เพื่อแสดง partition
partition> print
Current partition table (unnamed):
Total disk cylinders available: 4866 + 2 (reserved cylinders)
Part      Tag    Flag     Cylinders        Size            Blocks
  0 unassigned    wm       0 - 1305       10.00GB    (1306/0/0) 20980890
  1 unassigned    wm       0               0         (0/0/0)           0
  2     backup    wu       0 - 4865       37.28GB    (4866/0/0) 78172290
  3 unassigned    wm       0               0         (0/0/0)           0
  4 unassigned    wm       0               0         (0/0/0)           0
  5 unassigned    wm       0               0         (0/0/0)           0
  6 unassigned    wm       0               0         (0/0/0)           0
  7 unassigned    wm       0               0         (0/0/0)           0
  8       boot    wu       0 -    0        7.84MB    (1/0/0)       16065
  9 unassigned    wm       0               0         (0/0/0)           0
หลังจากแก้ไข partition พิมพ์คำสั่ง label เพื่อบันทึกข้อมูลลงดิสก์
partition> label
Ready to label disk, continue? y
partition> ^D
กดปุ่ม [Ctrl]+[D] เพื่อออกจากคำสั่ง format
ใช้คำสั่ง newfs เพื่อสร้าง filesystem บน partition ที่เพิ่งสร้างขึ้น
หมายเหตุ ชื่อไฟล์ device ของดิสก์ c1t1d0 – partition 0 คือ /dev/rdsk/c1t1d0s0
# newfs /dev/rdsk/c1t1d0s0
newfs: construct a new file system /dev/rdsk/c1t1d0s0: (y/n)? y
Warning: 870 sector(s) in last cylinder unallocated
/dev/rdsk/c1t1d0s0:     20980890 sectors in 3415 cylinders of 48 tracks, 128 sectors
        10244.6MB in 214 cyl groups (16 c/g, 48.00MB/g, 5824 i/g)
super-block backups (for fsck -F ufs -o b=#) at:
 32, 98464, 196896, 295328, 393760, 492192, 590624, 689056, 787488, 885920,
 20055584, 20154016, 20252448, 20350880, 20449312, 20547744, 20646176,
 20744608, 20843040, 20941472
แนะนำให้ใช้คำสั่ง fsck เพื่อตรวจสอบความถูกต้องของ filesystem ที่สร้างขึ้น ต้องไม่มีข้อความ error ใดๆ
# fsck -y /dev/rdsk/c1t1d0s0
** /dev/rdsk/c1t1d0s0
** Last Mounted on
** Phase 1 - Check Blocks and Sizes
** Phase 2 - Check Pathnames
** Phase 3a - Check Connectivity
** Phase 3b - Verify Shadows/ACLs
** Phase 4 - Check Reference Counts
** Phase 5 - Check Cylinder Groups
2 files, 9 used, 10331200 free (16 frags, 1291398 blocks, 0.0% fragmentation)
สร้าง mount point สำหรับ partition ใหม่
# mkdir /mnt/new-disk0
# mount /dev/rdsk/c1t1d0s0 /mnt/new-disk0
mount: /dev/rdsk/c1t1d0s0 not a block device
สำหรับ Solaris เวลาใช้คำสั่ง newfs หรือ fsck ชื่อ device ที่ระบุคือ /dev/rdsk/… แต่เวลาใช้คำสั่ง mount ต้องระบุชื่อ device เป็น /dev/dsk/…
# mount /dev/dsk/c1t1d0s0 /mnt/new-disk0
ใช้คำสั่ง df เพื่อตรวจสอบ mount point
# df -h
Filesystem             size   used  avail capacity  Mounted on
/dev/dsk/c1t0d0s0       34G   3.7G    30G    11%    /
/devices                 0K     0K     0K     0%    /devices
ctfs                     0K     0K     0K     0%    /system/contract
proc                     0K     0K     0K     0%    /proc
mnttab                   0K     0K     0K     0%    /etc/mnttab
swap                   1.6G   932K   1.6G     1%    /etc/svc/volatile
objfs                    0K     0K     0K     0%    /system/object
sharefs                  0K     0K     0K     0%    /etc/dfs/sharetab
/usr/lib/libc/libc_hwcap1.so.1
                        34G   3.7G    30G    11%    /lib/libc.so.1
fd                       0K     0K     0K     0%    /dev/fd
swap                   1.6G     8K   1.6G     1%    /tmp
swap                   1.6G    20K   1.6G     1%    /var/run
/dev/dsk/c1t0d0s7      1.9G   210M   1.6G    12%    /export/home
/dev/dsk/c1t1d0s0      9.9G    10M   9.7G     1%    /mnt/new-disk0
หากใช้งาน partition ใหม่ได้ถูกต้องเรียบร้อยแล้ว ต้องเพิ่มคอนฟิกเข้าไปในไฟล์ /etc/vfstab เพื่อให้เวลาบู๊ตเครื่องใหม่ มีการ mount partition ใหม่นี้โดยอัตโมมัติ
# cat /etc/vfstab
#device         device          mount           FS      fsck    mount   mount
#to mount       to fsck         point           type    pass    at boot options
#
fd      -       /dev/fd fd      -       no      -
/proc   -       /proc   proc    -       no      -
/dev/dsk/c1t0d0s1       -       -       swap    -       no      -
/dev/dsk/c1t0d0s0       /dev/rdsk/c1t0d0s0      /       ufs     1       no      -
/dev/dsk/c1t0d0s7       /dev/rdsk/c1t0d0s7      /export/home    ufs     2       yes     -
/devices        -       /devices        devfs   -       no      -
sharefs -       /etc/dfs/sharetab       sharefs -       no      -
ctfs    -       /system/contract        ctfs    -       no      -
objfs   -       /system/object  objfs   -       no      -
swap    -       /tmp    tmpfs   -       yes     -
# new disk
/dev/dsk/c1t1d0s0       /dev/rdsk/c1t1d0s0      /mnt/new-disk0  ufs     2       yes     -

วิธี Install Java, Sun WebServer, Glassfish AppServer บน Solaris 10

วิธี Install Java, Sun WebServer, Glassfish AppServer บน Solaris 10

สิ่งที่ต้อง Install
  1. Sun WebServer 6.1
  2. Glassfish AppServer 2.1.1 สำหรับ Glassfish จะหา download ยากหน่อยต้องไปเอาจาก glassfish community แทนเพราะ web ของ Sun/Oracle เปลี่ยนเป็น version 3 หมดแล้ว
Install JDK
จาก Image ของ solaris 10 ที่ download มาจาก Web ของ Sun เป็น Image ของ VirtualBox ซึ่ง Image ตัวนี้มี JDK 1.5 อยู่แล้ว ดังนั้นก็เลยไม่ต้องลงเพิ่ม
แต่ถ้าจะลงก็ check ก่อนว่าใน /usr ก่อนปกติจะมีอยู่แล้วในนี้ ซึ่งอ้างอิงจาก Image ของ Solaris ตัวนี้จะมีทั้ง 1.4 และ 1.5 ถ้าลงเพิ่มก็แตก file ของ JDK ที่โหลดมาลงใน /usr แล้วทำ link ไปก็พอ
Install Sun WebServer
ทำตามขั้นตอนตามนี้ได้เลย โดยที่ package ที่เอามาเป็น ใช้เป็น package แบบ .gz ตอน download สามารถเลือกได้ว่าเอา package แบบไหน แต่ปกติแล้วถนัดแบบ .gz มากกว่า
  1. login เป็น root
  2. unzip ออกด้วย gunzip ไปไว้ใน /tmp ก็ได้
  3. run ./setup จาก directory ที่แตกออกมา ทำตามขั้นตอนใน wizard
  4. เลือก directory ที่จะ Install นิยมเอาไว้ใน /opt/SUNWwbsvr [default]
  5. เลือก package ที่จะลงเลือกเป็น Server Core เพราะมี JDK อยู่แล้ว
  6. กำหนด Server/Domain Name
  7. กำหนด user/group ที่จะใช้ run process webserver โดย default เป็น webservd
  8. กำหนด Admin port default เป็น 8888
  9. กำหนด Web server port default เป็น 80
  10. กำหนด Document Root default อยู่ที่ server_root/docs เช่น /opt/SUNWwbsvr/httpd-sol10/docs (sol10 เป็นชื่อ Domain ที่กำหนด)
  11. กำหนดให้ start ตอนเปิดเครื่อง โดยจะไป write config ที่อยู่ใน /etc/rc.d/rc3.d/S75webserver01 หรือ rc5.d
  12. กำหนด JDK path ให้ใส่เป็น full path
  13. ใช้คำสั่ง ./start ใน /opt/SUNWwbsvr เพื่อ start web server ถ้า start ได้ใช้ web browser เปิดดูที่ port 80 และ port 8888 เพื่อ check ว่าสามารถใช้งานได้
Install Glassfish AppServer
ทำตามขั้นตอนโดย package ที่เอามาลงเป็นแบบ .jar สามารถเลือกตอน download ได้เหมือนกับ WebServer

  1. login เป็น root
  2. ใช้คำสั่ง java -Xmx256m -jar file_install.jar (install file เอาไว้ใน /tmp ก่อนก็ได้) *** ถ้ามีปัญหาลองใช้ -Xmx512m แทนอาจจะเกิดจาก memory ไม่พอ
  3. จะได้ directry glassfish ออกมา ย้ายไปใน directory ที่ต้องการ เช่น /opt/glassfish ก็ได้
  4. ย้ายไปที่ directory แล้วใช้คำสั่ง chmod -R +x lib/ant/bin เพื่อให้ file binary สามารถ execute ได้
  5. กำหนด JAVA_HOME ใน environment variable ใช้คำสั่ง JAVA_HOME=dir และ export JAVA_HOME โดยต้องกำหนดเป็น full path
  6. ใช้คำสั่ง lib/ant/bin/ant -f setup.xml จาก /opt/glassfish
  7. ทำตาม Wizard ไปเรื่อย ๆ มีให้กำหนด password / master password
ทดสอบการใช้งานโดย
  1. ให้ลอง create-domain
  2. ใช้คำสั่ง /opt/glassfish/bin/asadmin
  3. asadmin> create-domain –adminport 8001 (เปลี่ยนถ้าจะใช้ admin port อื่น) –adminuser admin domain1 (เปลี่ยนชื่อ domain ได้)
  4. file ต่าง ๆ ของ domain ที่ create ขึ้นมาจะอยู่ที่ /var/appserver/domains/[ชื่อ domain]
ถ้า create domain สำเร็จให้ลอง start domain ที่ create ขึ้นมา
  • asadmin> start-domain domain1
Note :

  • default password คือ adminadmin
  • default master password คือ changeit
  • default port ของ app server คือ 8080
  • port สำหรับ admin domain ใช้ port ที่กำหนดมาตอนสร้างในที่นี้ใช้ 8001
ลอง browse ไปที่ port 8080 สำหรับ App และ 8001 สำหรับ Admin (มีหน้า login ให้กรอก user/password)
ตอนที่ลองครั้งแรก create-domain ผ่านแต่ไม่สามารถ start-domain ได้ ดูจาก log แล้วก็งง ๆ เลยลอง start อีกครั้งก็สามารถ start ได้ และเนื่องจากลองด้วย VirtualBox ซึ่งแบ่ง Ram ไว้แค่ 700 MB ทำให้รอนานมากกว่าจะ start process/domain ได้

วันพุธที่ 21 กันยายน พ.ศ. 2554

รวมคำสั่ง Unix Solaris ตอนที่ 3 (การ set ค่า nvram ขณะอยู่บน OS solaris)

การ set ค่า nvram ขณะอยู่บน OS solaris

# eeprom ตัวแปร=newvalue เช่น
# eeprom diag-switch?=true คำสั่งเกี่ยว File & Folder
# pwd ดูว่าเราอยู่ path/directory ไหน
# touch ไฟล์ สร้าง file
# mkdir dir สร้าง directory
# cp เป็นการ copy file
# cp aaa bbb เป็นการ สำเนา ไฟล์ aaa ไว้ 1 ฉบับ ชื่อไฟล์ว่า bbb
# cp –r เป็นการ copy directory
# mv aaa bbb เปลี่ยนชื่อ ไฟล์ aaa เป็น ไฟล์ bbb
# rm file ลบไฟล์
# rm –r dir ลบ directory
# wc file นับจำนวนบรรทัด , คำ ในไฟล์นั้นๆ 

การเปลี่ยน Permission
# chmod 777 file or folder เป็นการเปลี่ยน permission ของ file หรือ folder นั้นๆ โดย ลำดับของตัวเลขเป็นดังนี้  user(owner)groupother
# chmod u+w file or folder  เพิ่มว่าให้ owner สามารถ write ได้
# chmod g+x file or folder 
เพิ่มว่าให้ group สามารถ execute ได้
# chmod o+w file or folder เพิ่มว่าให้ other สามารถ write ได้
# chmod ugo+x file or folder เพิ่มว่าให้ทั้ง owner group other สามารถ write ได้

ACL (Acess Control List)
คือการกำหนดให้บาง user สามารถเข้ามา access file,folder ได้ตามสิทธิ์ที่เรากำหนดให้
# getfacl file เป็นการดูว่าใครเป็นเจ้าของ file และใครสามารถเข้ามาใช้ file นี้ได้ บ้าง
# setfacl –m mask:6 file  กำหนดค่า mask ของ file ว่าให้ เป็น 6 คือ 110 คือ read/write ได้ค่า mask มีความสัมพันธ์กับ permission ของ group
# setfacl –m user:user8:6 file  เป็นการอนุญาต ให้ usesr8 เข้ามาใช้งาน(read/write) file นี้ได้ โดยให้ดูด้วยว่า ค่า mask (-m) ของ  file นี้สามารถ read/write ได้จริงหรือไม่
# setfacl –d user:user8 file  เป็นการยกเลิก user8 ออกจากการใช้สิทธิ์ access file


ดูขนาด File & Directory
# du  /dir


คำสั่งเกี่ยวกับเวลา (Time)
File ที่เกี่ยวข้อง

# date เป็นคำสั่งในการแสดงวันที่และเวลา
# date
เดือน วันที่ ชั่วโมง นาที ปีค.ศ. เป็นการตั้งวันที่และเวลา เช่น# date 080614302004 
# cal  month year ดูปฏิทิน เดือนปีนั้นๆ
ารสั่งให้ระบบทำงานตามคำสั่งในเวลาที่ต้องการ
# at time am or pm เช่น
# at 9:30 am                             จะมี promt ขึ้นให้ใส่คำสังที่ต้องการให้ทำ
   >banner new 9:30 am           โดยคำสั่งนี้จะทำเพียงครั้งเดียวจบ
   >ctrl+d                                   เมื่อสิ้นสุดคำสั่งที่ต้องการให้กด ctrl+d เพื่อออกจาก promt

# crontab –e  เป็นการสั่งคำสั่งเข้าไปใน File crontab เพื่อกำหนดการทำงานล่วงหน้าตามเวลาที่ต้องการ
# crontab –e   จะมี promt ขั้นมา ให้ใส่
     > นาที  ชั่วโมง  วันที่  เดือน วันของสัปดาห์(0-6) คำสั่ง เช่น
   
 > 30 9 * * 0  who    ทำคำสั่ง who ทุกวันอาทิตย์ เวลา 9:30

     >ctrl+d                    ออก
 
คำสั่งเกี่ยวกับการจัดการ Disk

 File ที่เกี่ยวข้อง
 /etc/format.dat เก็บรายละเอียดการแบ่ง patition
 /dev/dsk, /dev/md/dsk, /dev/vx/dsk  เก็บชื่อ disk device
# format ดูรายการ Harddisk ที่ต่ออยู่กับเครื่องทั้งหมด
# format cxtxdx  ดูเฉพาะ disk ก้อนนั้นๆ
# newfs /dev/rdsk/cxtxdxsx  ล้างและจัดเรียง block ของ Harddisk ใหม่ (ข้อมูลหาย)
#
newfs  /dev/md/rdsk/d0 สำหรับ metadevice ของ disksuit
# newfs /dev/vx/rdsk/mydg/vol01 สำหรับ volume disk
# prtvtoc /dev/dsk/cxtxdxs2 /vtoc  เป็นการจัดเก็บ vtoc ของ disk ก้อนนั้นๆ (ต้องเป็น s2 เท่านั้น)
# fmthard –s /vtoc /dev/rdsk/cxtxdxs2 เป็นการเขียน vtoc ลง disk อีกก้อน(ขนาด disk ต้องเท่ากันหรือมากกว่า)
# fsck –F ufs /dev/rdsk/cxtxdxsx เป็นการ file systemcheck เพื่อให้ disk ตรวจสอบจุดเสียหายต่างๆ
# df –k  ดูว่า มีการmount disk ก้อนใดไปใช้บ้าง mountไว้ที่ไหน ใช้เนื้อที่ไปเท่าไร และเหลือเนื้อที่เท่าไร (kb)

การ clone disk / slice
# dd if=/dev/rdsk/cxtxdxs2 of=/dev/rdsk/cxtxdxs2  bs=1048576
# ufsdump –f /dev/dsk/cxtxdxsx |(cd /pathmountdisk2 ; ufsrestore rf -)

คำสั่งเกี่ยวกับ Networks
File ที่เกี่ยวข้อง
- /etc/nodename เก็บชื่อเครื่อง
- /etc/hosts เก็บชื่อเครื่องและ IP Address
- /etc/hostname.hme0 หรือ network card ชื่ออื่นๆ  เก็บชื่อเครื่องประจำ network card นั้นๆ
- /etc/netmasks เก็บเลข netmask
- /etc/ethers เก็บ  mac address
* การเปลี่ยนชื่อเครื่อง ต้องเปลี่ยนทั้ง 3 ไฟล์คือ /etc/nodename , /etc/hosts , /etc/hostname.hme0
- Folder /etc/inet ทั้ง Folder
- /etc/inet/inetd.conf  ** เปิดปิดการ telnet และ FTP และดูวิธีการ start , stop deamon ได้ที่ไฟล์นี้
  เมื่อเปลี่ยนแปลง config ในไฟล์นี้แล้วต้องทำการ # pkill –HUP inetd ทุกครั้ง
- /etc/services เป็นไฟล์ในการเก็บ Port ในการ login ต่างๆ
- /etc/rpc เก็บโปรแกรมที่ใช้ได้กับ Port sunrpc (port 111)
Deamon ที่ใช้
In.telnetd  , inetd
# pkill -1 inetd
# /usr/sbin/in.telnetd    เป็นคำสั่งในการ start deamon
# /etc/sbin/in.rarpd       เป็น deamon ของ arp และ rarp

# pkill –HUP inetd  เป็นการ kill process นั้นแล้ว start process นั้นขึ้นมาใหม่
# ifconfig hme1 plumb IP  netmask + boardcast + up เป็นการติดตั้ง nic ใหม่ ใส่ ip ด้วย
# ifconfig hme1 unplumb คื่อการถอดการใช้งาน interface card นั้นออกจากระบบ
# ifconfig –a  ดู IP เครื่องเรา Interface เครื่องเรา เช่น hme0, qfe0,le0 เป็นต้น(NIC)
# ifconfig hme0 down  คือการ drop ip และ interface นั้นๆ ลงชั่วคราว
# ifconfig hme0 up คือการ up ip และ interface นั้นขึ้นมาใช้งาน
# ifconfig hme0 ether newmacaddress  เปลี่ยน mac address
# ifconfig hme0:1 plumb 202.20.105.28 up สร้าง virtual  interface
# ifconfig hme0 removeif 202.20.105.28 ลบ virtual interface

การเปลี่ยน IP ของเครื่อง
# ifconfig hme0 inet 202.20.105.28 netmask 255.255.255.0 broadcast+up
คำว่า broadcast+up คือการให้ broadcast แปรผันตามค่า netmask
# snoop hostname1 hostname2 เช่น
# snoop sun1 sun2  เป็นคำสั่งในการดูการทำงานแบบ OSI model ระหว่าง 2 เครื่องนั้นๆ
# snoop –v sun1 sun2 ดูการทำงาน OSI แบบ ละเอียด
# snoop –o /filename สั่งให้เก็บ log ของการ ping หรือการ spray ไว้ที่ไฟล์ที่กำหนด
# snoop –I /filename –v |more เป็นการดู log ที่เก็บไว้
# snoop –V ดู OSI แบบคร่าว
# snoop tcp  การดูเฉพาะสิ่งที่ต้องการ
# snoop port telnet            “
# snoop port 23                “
# ping ipเครื่องปลายทาง เป็นการทำสอบการเชื่อมต่อ network ระหว่างเครื่องเรา กับเครื่องปลายทาง
# spray hostname or IP  คล้ายคำสั่ง ping แต่จะให้รายละเอียดมากกว่า
# rpcinfo –d sprayd 1 เป็นการหยุดการทำงาน sprayd ลงชั่วคราว
# arp –a  ดูตาราง mac address ที่เก็บอยู่ในเครื่องเรา
# arp –s hostname mac address  คือการ add ชื่อเครื่องและ maxaddress เข้าในตารางของเครื่องเรา
# arp –d hostname  เป็นการลบชื่อ host นั้นออกจากเครื่องเรา
# netstat –p ดู max address ทุกเครื่องที่เห็น
# netstat –d ดูว่าเครื่องเปิด port อะไรอยู่บ้าง
# netstat –I time ดูการทำงาน ของ NIC  time คือดูทุกๆ กี่วินาที
# netstat –r คือการดู rounting table

ชื่อของ network interface card ที่ใช้กับเครื่อง sun
- ATM  =  .bax0…1….2
- Ethernet = .le , qe0…1…2
- Fast Ethernet = hme, eri0…1…2
- Quatfast Ethernet = qfe0…1…2
- FDDI = nf0…1…2
- Tokenring = tr0…1…2
- Gigabit Ethernet = ge0…1…2
ARP = คือการแปลงจาก IP เป็น Mac address
RARP = คือการแปลงจาก Mac address เป็น IP
Tape management

Tape Management


Tape drive มี path ของ device ดังนี้คือ
- /dev/rmt/0 , /dev/rmt/1 , /dev/rmt/2 ………แล้วแต่การเชื่อมต่อ

ขนาดของ Media (ม้วนเทป) ที่นิยมใช้กันอยู่ในปัจจุบันมีอยู่ 3 ขนาดคือ
- Tape 4 มิลลิเมตร คือมีความกว้างของหน้า Tape 4 มิลลิเมตร ใช้กับ Drive ขนาด 4 มิลลิเมตร เช่น
 
DDS, DDS2,DDS3,DDS4
- Tape 8 มิลลิเมตร คือมีความกว้างของหน้า Tape 8  มิลลิเมตร ใช้กับ Drive ขนาด 8 มิลลิเมตร
- Tape 16 มิลลิเมตร คือมีความกว้างของหน้า Tape 16  มิลลิเมตร ใช้กับ Drive ขนาด  16 มิลลิเมตร เช่น DLT ต่างๆ

การเขียนข้อมูลของ Tape จะเขียนเป็น block โดยจะเขียนเรียงกันไปเรื่อยๆ จนกว่าจะสิ้นสุดความยาวของม้วนการทำคำสั่ง 1 ครั้งจะเขียนเป็น 1 block ดังภาพ



การกรอ Tape ไปยังตำแหน่งที่ต้องการ
# mt stat เป็นการดูสถานะของ  Tape ว่าตอนนี้หัวอ่านอยู่ที่ block ใดของ Tape
# mt fsf 1 เป็นการ forward หัวอ่าน Tape ไปข้างหน้าจาก block เดิม 1 block
# mt rew เป็นการ rewind หัวอ่าน Tape ให้กลับไปที่ต้นม้วน
# mt off
 เป็นการ Eject media ออกจาก Tape drive
# mt eom เป็นการforwardหัวอ่านไปยังท้ายสุดของข้อมูลที่มี เพื่อเตรียมเขียนข้อมูลต่อไปได้โดยไม่ทับข้อมูลเดิม

Format ที่ใช้คำสั่ง tar
การ Backup
# tar cvf /dev/rmt/0 /file,folder เป็นการ backup file , folder ขึ้นสู่  Tape เมื่อเขียนข้อมูลเสร็จแล้วหัวอ่านจะ  rewind กลับไปต้นม้วน
# tar cvf /dev/rmt/0n /file,folder
เป็นการ backup file, folder ขึ้นสู่  Tape โดยหัวอ่านจะหยุดอยู่ที่ที่สิ้นสุด block  นั้นๆ ไม่ rewind กลับไปต้นม้วน (ใส่ n คือ no rewind)

การดูข้อมูลที่อยู่บน Tape
# tar tvf /dev/rmt/0  เป็นการดูข้อมูลที่อยู่บน  Tape block นั้นๆ

การ restore ข้อมูล
# tar xvf /dev/rmt/0 เป็นการดึงข้อมูลจาก Tape ลงสู่ directory ที่อยู่ ณ ขณะนั้น (restore)

Fomat ที่ใช้คำสั่ง  ufsdump

การ Backup
# ufsdump 0ufc /dev/rmt/0 /file,folder  เป็นการ Backup file,folder ขึ้นสู่  Tape และเมื่อเขียนข้อมูลเสร็จ Tape จะ rewind กลับสู่ต้นม้วน
# ufsdump 0ufc /dev/rmt/0n /file,folder  เป็นการ Backup file,folder ขึ้นสู่  Tape เมื่อเขียนข้อมูลเสร็จจะไม่มีการ rewind Tape หัวอ่านจะหยุดอยู่ ณ ที่ที่สิ้นสุดข้อมูลนั้นๆ

กรรดูข้อมูลบน Tape
# ufsrestore tf  /dev/rmt/0 เป็นการดูข้อมูลใน block นั้นๆ

การ restore ข้อมูล
# ufsrestore rf /dev/rmt/0 เป็นการ restore ข้อมูลใน block นั้นๆ ทั้งหมดลงสู่ directory ที่อยู่ ณ ขณะนั้น
# ufsrestore –i /dev/rmt/0 จะมี promt ขึ้นให้(เข้าสู่ ข้อมูลบน  Tape แล้ว)
>./siwanat
>ls
yao  file1 file2
เป็นการเข้าไปดูข้อมูลบน Tape ในแต่ละ block นั้นๆ  ได้ โดย การ cd , ls และเมื่อต้องการ restore file ใดๆ สามารถใช้คำสั่ง add file1  เพื่อ mark file นั้นๆ ไว้ เมื่อ mark หรือเลือก file ที่ต้องการครบแล้ว สามารถ ดูไฟล์ที่เรา mark ไว้ได้ด้วยคำสั่ง marked จะสังเกตเห็น  file ที่เรา mark ไว้มีเครื่องหมาย * ข้างหน้า และเมื่อต้องการ restore สามารถทำได้ด้วยคำสั่ง extract   ไฟล์ที่เรา mark ไว้ก็จะถูก restore ลงสู่ directory นั้นๆ

Option
ของคำสั่ง ufsdump
-  0 – 6
เป็น level ในการ backup โดยการ Backup แต่ละ level จะ  backup หลังจาก level ที่ต่ำกว่าเคยทำการ backup ไปแล้ว เช่น วันจันทร์ backup ด้วย level 1 วันพุธ backup ด้วย level 2 ดังนั้น วันพุธจะเป็นการ backup ข้อมูลหลังจากวันจันทร์เป็นต้นมา
-
u คือ update
- f
คือการอ้าง path ของ Tape drive     

- c คือ compact คือมีการบีบอัดข้อมูลด้วย

Blogger templates