Memo/Linux/samba

http://dexlab.net/pukiwiki/index.php?Memo/Linux/samba
 

samba


接続に使われているSMBバージョンを確認

  • Windowsクライアント側: DEPENDENCIES を確認
    • MRxSmb20: SMBv2
      1. sc.exe qc lanmanworkstation
    • 管理者としてPowerShell?を実行。Dialect列にバージョンが表示される
      1. Get-SmbConnection

SMBv1の無効化

  • WannaCry - Wikipediaで悪用される脆弱性があるSMBv1を無効化する
  • samba 3.6.0以降
  • Windows 7以降
  1. sudo vim  /etc/samba/smb.conf
  2. --
  3. [global]
  4.   min protocol = SMB2
  5. --
  6. sudo service smb restart

「invalid wct number」で失敗する場合

ホストからアクセスした場合、以下のように「invalid wct number」で失敗する時

  • 環境
    • クライアント:Windows 10 Creators Update
    • SAMBAサーバ:CentOS6/Ubuntu12LTS / samba 3.6.25
  •  ログ
    1. sudo tail -f /var/log/samba/192.168.1.xxx.log
    2. [2017/07/04 20:08:33.939462,  0] smbd/process.c:525(init_smb_request)
    3.   init_smb_request: invalid wct number 255 (size 178)
  • 解決
    1. sudo vim  /etc/samba/smb.conf
    2. --
    3. [global]
    4.   min protocol = SMB2
    5.   max protocol = SMB2
    6. #  smb ports = 139
    7. --
    8. sudo service smb restart

他ホストからマウント

  • sambaサーバを192.168.1.10、共有ディレクトリをshareとする場合
    1. sudo mkdir /mnt/samba
    2. sudo vi /etc/samba/mountpw
    3. ----
    4. username=<USER>
    5. password=<PASS>
    6. ----
    7. sudo chmod 600 /etc/samba/mountpw
    8.  
    9. sudo mount -t cifs //192.168.1.10/share /mnt/samba -o credentials=/etc/samba/mountpw,uid=<linux uid>,gid=<linux gid>,iocharset=utf8,file_mode=0644,dir_mode=0755,defaults,nofail
    10.  
    11. sudo vi /etc/fstab
    12. ----
    13. //192.168.1.10/share /mnt/samba cifs credentials=/etc/samba/mountpw,uid=<linux uid>,gid=<linux gid>,iocharset=utf8,file_mode=0644,dir_mode=0755,defaults,nofail 0 0
    14. ----

アップデートした後にpdbedit -Lでユーザが出て来ない時

sambaをアップデートとした後に、接続できなくなった場合。
パスワードファイルの参照パスが変わった場合がある。
その場合、pdbedit -Lでもユーザが出て来ない

  • 現在のパスワードファイルの場所を確認。
    1. smbd -b | grep SMB_PASSWD_FILE
    2.    SMB_PASSWD_FILE: /var/lib/samba/private/smbpasswd
    3.  
    4. testparm -v | grep private
    5.    private dir = /var/lib/samba/private
  • /etc/以下にpassdb.tdb, secrets.tdbがある場合はそこを使うようにsmb.confを修正
    1. vim /etc/samba/smb.conf
    2. ----
    3. smb passwd file = /etc/samba/smbpasswd
    4. private dir = /etc/samba
    5. ----
    6. service smb restart

LinuxからWindowsを操作

sambaのnetコマンドを使ってLinuxからWindowsを操作する。

  • 動作確認
    • Windows7 professional SP1 64bit
    • コントロールパネル > 管理ツール > イベントビューアー > Windowsログ > システム > 右側の窓で現在のログをフィルタ > 12,13 (12:起動, 13:終了)
  • netコマンドを使うためsambaのインストール
    • CentOS6.x
      1. yum install samba
      2.  
      3. rpm -qa | grep samba
      4. samba-3.6.9-151.el6_4.1.x86_64
  • shutdownオプション
    • -r : 再起動。オプション無しだとシャットダウン
    • -f : 全てのアプリケーションを強制的に終了
    • -C : ダイアログに表示させるメッセージ
    • -t : 実行されるまでの秒数。
    • -I : 対象PCのIPアドレス
    • -S : PC名
    • -w : ワークグループ名
    • -U : ユーザ名%パスワード 。ダブルクォーテーション(")で括ると'!'等が使えないので、シングルクォーテーション(')
  • 192.168.1.100のサーバを再起動/シャットダウン
    1. # 再起動
    2. net rpc shutdown -r -f -t 30 -C 'message' -I 192.168.1.100 -U 'username%password'
    3.  
    4. # シャットダウン
    5. net rpc shutdown -f -t 30 -C 'message' -I 192.168.1.100 -U 'username%password'

現在の設定値の表示

  1. testparm -v

パフォーマンスチューニング

  • 一覧が遅い場合。空き容量の計算を60秒に1回に制限する。デフォルトは0で毎回計算。(Samba 3.0.21以降のオプション smb.conf.5)
    1. vim /etc/samba/smb.conf
    2. ----
    3. [global]
    4. dfree cache time = 60
    5. ----
    6. service smb restart

rpm

  • http://wing-net.ddo.jp/wing/
    • CentOS5〜6向け、samba3.6〜4.0
      1. VER=$(grep -o -P '\d+' /etc/redhat-release | head -1)
      2. wget http://wing-net.ddo.jp/wing/${VER}/EL${VER}.wing.repo -O /etc/yum.repos.d/EL${VER}.wing.repo
      3. yum install samba3x samba3x-client --enablerepo=wing
      4. service smb restart
      5. service nmb restart
      6. chkconfig smb on
      7. chkconfig nmb on

CentOS 5/6にソースからrpmを作成してインストール

  • 環境
    • CentOS 6.4 x86_64
  • samba-3.6.25.tar.gz パッチ: filesamba-3.6.25.spec.patch
    1. #必要なパッケージをインストール
    2. yum install pam-devel readline-devel fileutils libacl-devel openldap-devel krb5-devel cups-devel keyutils-libs-devel
    3.  
    4. # ソース展開
    5. cd /usr/src/redhat
    6. wget http://ftp.samba.org/pub/samba/samba-3.6.25.tar.gz
    7. tar xvfz samba-3.6.25.tar.gz
    8. patch -p0 < samba-3.6.25.spec.patch
    9.  
    10. # ビルド
    11. cd samba-3.6.25/packaging/RHEL
    12. bash makerpms.sh
    13.  
    14. # インストール
    15. cd /usr/src/redhat/RPMS/x86_64/
    16. rpm -ivh samba-3.6.25-1.C65.x86_64.rpm \
    17.  samba-client-3.6.25-1.C65.x86_64.rpm \
    18.  samba-common-3.6.25-1.C65.x86_64.rpm \
    19.  samba-doc-3.6.25-1.C65.x86_64.rpm
    20.  
    21. # 起動
    22. service smb restart
    23. chkconfig --add smb
    24. chkconfig smb on
  • samba-3.6.23.tar.gz パッチ: filesamba-3.6.23.spec.patch
  • samba-3.6.22.tar.gz パッチ:filesamba-3.6.22.spec.patch

Windows7からのファイル転送時にパーミッションが544になる

  • Win7 Pro 64bit クライアント
  • sambaサーバ
    • CentOS5.4
    • samba-3.0.33-3.15.el5_4.1 -> 3.0.33-3.28.el5 にアップデートで解決
      yum update smb
      service smb restart
  • パーミッション修正
    find . -perm 544 -exec chmod 644 {} \;

sambaでファイル転送時に実行権限が付かないように

  • Windows上のアーカイブ属性がついていると、実行ビットに割り当てるようだ。
  • Windows上のアーカイブ属性をunix側の実行ビットに割り当てるためのオプション。デフォルト:yes。これをnoにする
    vi /etc/samba/smb.conf
    ----
    [global]
    map archive = no
    ----
    service smb restart

添付ファイル: filesamba-3.6.25.spec.patch 90件 [詳細] filesamba-3.6.23.spec.patch 365件 [詳細] filesamba-3.6.22.spec.patch 410件 [詳細]

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2018-08-17 (金) 14:26:05 (4d)