Showing posts with label samba. Show all posts
Showing posts with label samba. Show all posts

Wednesday, August 11, 2010

最近架samba筆記

給未來的裕翔

如果要架一個分享給大家的資料夾

但只開放某個group去新增或是移除檔案

/etc/hosts.allow不需要修改

iptables開啟, 137, 138, 139, 445

把要分享出去的資料夾context設為public_content_rw_t

並且把allow_smbd_anon_write設為1

然後特別注意smb.conf裡面的

read only = yes

write list = @allow-group

這樣設定就是大家都只能讀, 除了某個被我允許的group可以增減檔案

還有create mask = 0664

這設定是在預設產生檔案的mask, 跟umask不一樣喔

直接標明檔案產生的權限

那至於使用者可否讀寫檔案, 就直接跟檔案權限有關系

((

光這樣設定, 在client端使用smbclient -U lulumi //smb-server/shared-dir

會出現錯誤訊息

tree connect failed: NT_STATUS_BAD_NETWORK_NAME

把selinux關掉後就正常, 那就是有個神秘的boolean或是context需要改囉!
sudo setsebool samba_export_all_ro 1

sudo setsebool samba_export_all_rw 1

這兩個任一個都可以解決問題

client端要注意一下

能不能下載檔案, 跟檔案本身權限(r)有關

能不能上傳檔案, 跟資料夾本身權限(w)有關

其他要注意的有~ gid和sticky bit最好開啟

新增使用者samba密碼的話, 用smbpasswd -a user

-a是add

使用者只需要存在server端即可,  client端要登入時要-U指明即可

那些使用者也不需要login shell, 給予/sbin/nologin即可

Saturday, July 3, 2010

fedora 13架samba

給未來的裕翔

首先安裝samba, samba-common, samba-client套件

當然, 我目前還不確定每個套件的必要性

裝好之後, 設定/etc/samba/smb.conf

依照需要設定好

特別注意那個writable和read list

如果要檔案mask

它的directive是create mask = 0660, 類似這樣設定

順便講一下, 原來public就是guest ok阿~

設定好之後, 要分享出去的資料夾要

chcon -t public_content_rw_t shared-dir

應該也可以chcon -t samba_shared_t shared-dir

然後setsebool -P allow_samba_anon_write 1

如果是要開放家目錄的話, 還有一個setsebool要作

setsebool -P samba_enable_home_dirs 1

不過不知道為什麼, 我分享的資料夾

如果路徑上的每個資料夾保持原來的context就會失敗

都要改

最後, 如果samba client是要mount的話, 那這樣就可以了

如果是要用ftp是使用samba

防火牆要加開445/tcp

Tuesday, June 8, 2010

samba雜亂小筆記

給未來的裕翔

首先安裝三個套件

samba, samba-common, samba-client

注意以下四個port

137/udp, 138/udp, 139/tcp, 445/tcp

雖然daemon有nmbd和smbd兩個

用service smb start就會自動連nmbd一起帶起來

若在client端想看server端開放哪些資料夾

smbclient -L 192.168.0.254

輸入密碼的地方直接按Enter就可以看了

另外要注意的是

samba有自己的密碼, 跟/etc/shadow無關

不過帳號必須已經存在/etc/passwd裡面

那samba建立的密碼會存在/etc/samba/passdb.tdb

因為不是一般文字檔

如果想看passdb.tdb內容的話

tdbdump /etc/samba/passdb.tdb

想要使用samba服務有兩種方式

一個是像ftp一樣的方式

smbclient //server/share-name -U user-name

然後輸入密碼

不然就是用mount(個人偏向這個)

mount -t cifs -o username=user-name //192.168.0.254/homes /mount-dir

cifs是common internet file system的縮寫

要注意那個homes是share-name不是dir

不過這樣mount會失敗

因為selinux的關係

setsebool -P samba_enable_home_dirs=1

另外補充, 星星如果要出現, setroublesootd要先啟動

如果要自行增加分享的資料夾

(預設只有home和printer)

在/etc/samba/smb.conf最下面增加幾行

[share-name]

path = blabla

browseable = yes

valid users = user1, user2

writeable = yes

read list = user2

以上表示, 開放write,除了user2不能write

但是, 光這樣還是會failed

必須給那個share出去的資料夾改變context

chcon -t samba_share_t /blabla

注意, 裡面的檔案也都必需要是samba_share_t

如果希望開機自動掛載

在/etc/fstab裡面

//server/share-name   /mount-point   cifs   username=john   0   0

不過這樣也挺麻煩的, 每次開機都要輸入密碼

所以可以改成

//server/share-name   /mount-point   cifs   credentials=/etc/xyz   0   0

然後建立/etc/xyz

username=user-name

password=user-password

安全起見chmod 600 /etc/xyz

最後, 關於存取控管

可以考慮直接用smb.conf裡面的[global]的

host deny, host allow, 依題目決定

比iptables方便許多