Memo/Linux/samba

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

samba


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

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

SMBv1の無効化

  • WannaCry - Wikipediaで悪用される脆弱性があるSMBv1を無効化する
  • samba 3.6.0以降
  • Windows 7以降
sudo vim  /etc/samba/smb.conf
--
[global]
  min protocol = SMB2
--
sudo service smb restart
  • Linuxからmount,fstabで失敗するようになった場合、「vers=3.0,sec=ntlmv2」のようにオプションを付ける。Memo/Linux/samba#w5759434 参照

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

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

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

他ホストからマウント

  • 接続先がSMBv1を無効化している場合、「Operation not supported」エラーになる
  • vers: SMBのバージョン。デフォルト1.0なので、接続先がSMBv1.0を無効化しているとエラーになる。接続先に合わせる。最近なら3.0で良さそう
  • sec: 認証方法。ntlmv2で良さそう
    man mount.cifs
    ...
    - none - attempt to connection as a null user (no name)
    - krb5 - Use Kerberos version 5 authentication
    - krb5i - Use Kerberos authentication and forcibly enable packet signing
    - ntlm - Use NTLM password hashing
    - ntlmi - Use NTLM password hashing and force packet signing
    - ntlmv2 - Use NTLMv2 password hashing
    - ntlmv2i - Use NTLMv2 password hashing and force packet signing
    - ntlmssp - Use NTLMv2 password hashing encapsulated in Raw NTLMSSP message
    - ntlmsspi - Use NTLMv2 password hashing encapsulated in Raw NTLMSSP message, and force packet signing
  • sambaサーバを192.168.1.10、共有ディレクトリをshareとする場合
    sudo mkdir /mnt/samba
    sudo vi /etc/samba/mountpw
    ----
    username=<USER>
    password=<PASS>
    ----
    sudo chmod 600 /etc/samba/mountpw
    
    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,vers=3.0,sec=ntlmv2
    
    sudo vi /etc/fstab
    ----
    //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,vers=3.0,sec=ntlmv2 0 0
    ----

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

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

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

LinuxからWindowsを操作

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

  • 動作確認
    • Windows7 professional SP1 64bit
    • コントロールパネル > 管理ツール > イベントビューアー > Windowsログ > システム > 右側の窓で現在のログをフィルタ > 12,13 (12:起動, 13:終了)
  • netコマンドを使うためsambaのインストール
    • CentOS6.x
      yum install samba
      
      rpm -qa | grep samba
      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のサーバを再起動/シャットダウン
    # 再起動
    net rpc shutdown -r -f -t 30 -C 'message' -I 192.168.1.100 -U 'username%password'
    
    # シャットダウン
    net rpc shutdown -f -t 30 -C 'message' -I 192.168.1.100 -U 'username%password'

現在の設定値の表示

testparm -v

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

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

rpm

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

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

  • 環境
    • CentOS 6.4 x86_64
  • samba-3.6.25.tar.gz パッチ: filesamba-3.6.25.spec.patch
    #必要なパッケージをインストール
    yum install pam-devel readline-devel fileutils libacl-devel openldap-devel krb5-devel cups-devel keyutils-libs-devel
    
    # ソース展開
    cd /usr/src/redhat
    wget http://ftp.samba.org/pub/samba/samba-3.6.25.tar.gz
    tar xvfz samba-3.6.25.tar.gz
    patch -p0 < samba-3.6.25.spec.patch
    
    # ビルド
    cd samba-3.6.25/packaging/RHEL
    bash makerpms.sh
    
    # インストール
    cd /usr/src/redhat/RPMS/x86_64/
    rpm -ivh samba-3.6.25-1.C65.x86_64.rpm \
     samba-client-3.6.25-1.C65.x86_64.rpm \
     samba-common-3.6.25-1.C65.x86_64.rpm \
     samba-doc-3.6.25-1.C65.x86_64.rpm
    
    # 起動
    service smb restart
    chkconfig --add smb
    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 128件 [詳細] filesamba-3.6.23.spec.patch 401件 [詳細] filesamba-3.6.22.spec.patch 447件 [詳細]

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2018-09-15 (土) 09:00:58 (34d)