all-in-one 8 (samba)

ทำ file server ใช้ samba

จะสร้าง 2 แชร์ บรรจุไว้ใน /sys1/sysb/samba แล้วโยงลิงก์ไปที่รูต เป็น /samba เฉย ๆ
สำหรับอ่านอย่างเดียวตั้งชื่อว่า app และ สำหรับอ่านเขียนตั้งชื่อว่า data
Workgroup ตั้งชื่อว่า smbdomain
ตั้งชื่อกลุ่มผู้มีสิทธิ์ใช้งานว่า smbgroup
ผู้คุมระบบชื่อ admin
ผู้ใช้มีชื่อ user1, user2, ... ตามลำดับ

มีพิเศษเพิ่มเติม คือแชร์ที่ทำ ftp ไว้แล้ว จะให้มาแชร์ใน samba ด้วย เพื่อให้ผู้ใช้งานเครือข่ายภายใน สามารถใช้งานได้ง่าย

สร้างโฟลเดอร์ขึ้นมารองรับก่อน
# mkdir -p /sys1/sysb/samba/{app,data}
# ln -sf /sys1/sysb/samba /
# mkdir -p /sys1/sysb/etc/samba
# ln -sf /sys1/sysb/etc/samba /etc

ติดตั้ง samba
# aptitude install samba

Workgroup/Domain Name: <<<--- smbdomain
Modify smb.conf to use WINS settings from DHCP? <<<--- No

สร้างกลุ่มของ samba
# groupadd -g 1100 smbgroup

เขียนสคริปต์สำหรับสร้างผู้ใช้และรหัสผ่าน ตั้งชื่อว่า d.samba-adduser เอาไว้ใน /usr/local/sbin
# vi /usr/local/sbin/d.samba-adduser

#!/bin/bash
# SAMBA - ADD USER FROM DATAFILE IN FORMAT:
#     USER:UID:PASSWORD
#     ...
# EXAMPLE:
#     #USER:UID:PASSWORD
#     user1:1101:user1-password
#     user2:1102:user2-password
#     ...

#GLOBAL VAR
GROUPNAME="smbgroup"
SYSTEMGROUP="lp,dialout,cdrom"

#FUNTION
function usage {
    PROG=`basename $0`
    cat << EOF

Script to add user in linux system and samba suit
USAGE: $PROG DATAFILE
ARGUMENT:
  DATAFILE : datafile in format:-
     USER:UID:PASSWORD
     ...
  EXAMPLE OF DATAFILE:
  example1:
     #USER:UID:PASSWORD
     user1:1101:user1-password
     user2:1102:user2-password
     ...
Please run as root.

EOF
}

#BEGIN MAIN
DATAFILE=$1
shift
if [ ! $DATAFILE ] || [ ! -f $DATAFILE ]; then
    usage
    exit 1
fi

cat $DATAFILE | grep -v "#" | while read DATA; do
    if [ $DATA ]; then
        USERNAME=$(echo $DATA | cut -d: -f1)
        USERID=$(echo $DATA | cut -d: -f2)
        PASSWORD=$(echo $DATA | cut -d: -f3)
        /usr/sbin/useradd -g $GROUPNAME -G $SYSTEMGROUP -u $USERID -m $USERNAME
        echo "$USERNAME:$PASSWORD" | /usr/sbin/chpasswd
        (echo "$PASSWORD"; echo "$PASSWORD") | /usr/bin/smbpasswd -a -s $USERNAME
        echo "User: $USERNAME , uid: $USERID added."
    fi
done

# chmod 700 /usr/local/sbin/d.samba-adduser

สร้างไฟล์ข้อมูลผู้ใช้ตั้งชื่อว่า userdata เอาไว้ใน /etc/samba/secure และตั้งให้คนอื่นอ่านไม่ได้
# mkdir -p /etc/samba/secure
# vi /etc/samba/secure/userdata

# SAMBA USER LIST
#USER:UID:PASSWORD
admin:1100:admin_password
user1:1101:user1_password
user2:1102:user2_password
user3:1103:user3_password

# chmod -R 700 /etc/samba/secure

สั่งผลิตรายชื่อผู้ใช้
# d.samba-adduser /etc/samba/secure/userdata

ปรับตั้ง samba
# vi /etc/samba/smb.conf

...
[global]
    workgroup = smbdomain
    security = user
    unix charset = utf8
    display charset = utf8
    unix extensions = yes

...

[app]
    comment = Application Dir
    path = /samba/app
    valid users = @smbgroup
    write list = admin
    public = no
    create mask = 0750
    directory mask = 0750
    fake oplocks = yes        ;; increase speed
    writable = no

[data]
    comment = Data Dir
    path = /samba/data
    valid users = @smbgroup
    write list = @smbgroup
    public = no
    create mask = 0770
    directory mask = 0770
    writable = yes

[ftp-pub]
    comment = Public ftp files
    path = /var/ftp/pub
    valid users = @smbgroup
    write list = @smbgroup
    public = no
    create mask = 0775
    directory mask = 0775
    writable = yes

[ftp-com]
    comment = Example.com ftp files
    path = /var/ftp/example.com
    valid users = @smbgroup, @comuser
    write list = @comuser
    public = no
    create mask = 0775
    directory mask = 0775
    writable = yes

[ftp-org]
    comment = Example.org ftp files
    path = /var/ftp/example.org
    valid users = @smbgroup, @orguser
    write list = @smbgroup
    public = no
    create mask = 0775
    directory mask = 0775
    writable = yes
...

เปลี่ยนสิทธ์ของไดเรกทอรี่
# chown -R admin:smbgroup /samba
# chmod -R 0750 /samba/app
# chmod -R 0770 /samba/data

เริ่ม samba ใหม่
# /etc/init.d/samba restart

เสร้จ

Topic: