wangmj
作者wangmj·2017-08-10 17:21
系统运维工程师·CES

AIX6.1、AIX5.3安装配置samba服务并解决中文乱码问题

字数 6683阅读 2719评论 0赞 2

背景

最近运维中收到开发人员的一个需求,需要在2台AIX环境安装samba服务提供给windows客户端共享,其中一个环境开发人员已利用IBM自带的bff包安装并进行了配置,但是遇到中文乱码问题。介入后通过网上查找找到了中文乱码是由于smb.conf全局配置中dos charset、unix charset未正确配置导致,参考http://wangxu.blog.51cto.com/887/2162 进行设置
**dos charset = CP936
UNIX charset = GBK**
在执行testparm smb.conf时报错,提示大体如下:

[2017/05/14 17:54:49, 0] lib/charcnv.c:init_iconv(158)
init_iconv: Conversion from UTF-16LE to cp936 not supported
[2017/05/14 17:54:49, 0] lib/charcnv.c:init_iconv(166)
init_iconv: Attempting to replace with conversion from UTF-16LE to ASCII
[2017/05/14 17:54:49, 0] lib/charcnv.c:init_iconv(158)

通过百度未查找到合适的解决方法,同时也缺少全套的系统安装盘,后决定通过开源的包进行安装;下述为安装的过程。

一、环境说明
OS版本:AIX 6108

二、下载安装包
推荐下载址:http://www.bullfreeware.com/toolbox.php 搜索samba,由于没找到合适的bff包,此处下载rpm包进行安装,下载时建议选择all,且为dependendies的包
1.png

1.png

下载成功后,由于是zip包,建议先在windows上进行解压后上传至AIX服务器
AIX5环境的话,该站点如果没有合适的包,可以前往下述地址下载
http://www.perzl.org/aix/ 具体下载过程不再赘述。

三、安装rpm包
对于包的安装,可以只安装samba及其依赖包,我这里是进行了全部安装;大体安装顺序参考.
rpm -Uvh zlib-1.2.8-3.aix6.1.ppc.rpm
rpm -ivh xz-libs-5.2.2-2.aix6.1.ppc.rpm
rpm -Uvh readline-6.3-1.aix6.1.ppc.rpm
rpm -ivh libgcc-7.1.0-6.aix6.1.ppc.rpm
rpm -Uvh libffi-20170516-1.aix6.1.ppc.rpm
rpm -ivh libgpg-error-1.10-3.aix6.1.ppc.rpm
rpm -ivh libgcrypt-1.5.0-1.aix6.1.ppc.rpm
rpm -Uvh libiconv-1.14-22.aix6.1.ppc.rpm
rpm -ivh libidn-1.33-1.aix6.1.ppc.rpm
rpm -ivh libjpeg-9b-2.aix6.1.ppc.rpm
rpm -ivh libpaper-1.1.24-2.aix6.1.ppc.rpm
rpm -ivh libpng-1.6.27-2.aix6.1.ppc.rpm
rpm -ivh libstdc++-7.1.0-6.aix6.1.ppc.rpm
rpm -ivh libtasn1-4.10-1.aix6.1.ppc.rpm
rpm -ivh jbigkit-libs-2.0-3.aix6.1.ppc.rpm
rpm -ivh libunistring-0.9.6-2.aix6.1.ppc.rpm
rpm -ivh libxml2-2.9.4-2.aix6.1.ppc.rpm
rpm -ivh openssl-1.1.0f-1withsslv2.aix6.1.ppc.rpm
rpm -ivh p11-kit-0.23.2-1.aix6.1.ppc.rpm
rpm -ivh perl-5.24.0-2.aix6.1.ppc.rpm
rpm -ivh popt-1.16-2.aix6.1.ppc.rpm
rpm -Uvh bash-4.4-3.aix6.1.ppc.rpm
rpm -ivh info-5.0-2.aix6.1.ppc.rpm
rpm -Uvh gmp-6.1.1-1.aix6.1.ppc.rpm
rpm -Uvh expat-2.1.1-1.aix6.1.ppc.rpm
rpm -ivh db-4.8.24-4.aix6.1.ppc.rpm
rpm -ivh coreutils-8.25-1.aix6.1.ppc.rpm
rpm -ivh gdbm-1.10-1.aix6.1.ppc.rpm
rmp -ivh krb5-libs-1.9.4-3.aix6.1.ppc.rpm
rpm -ivh libtiff-4.0.6-2.aix6.1.ppc.rpm
rpm -ivh logrotate-3.8.3-1.aix6.1.ppc.rpm
rpm -Uvh gettext-0.19.8-1.aix6.1.ppc.rpm --nodeps
rpm -ivh openldap-2.4.44-5.aix6.1.ppc.rpm
rpm -ivh unixODBC-2.3.1-1.aix6.1.ppc.rpm
rpm -ivh nettle-3.2-5.aix6.1.ppc.rpm
rpm -vih dbus-1-1.6.2-1.aix6.1.ppc.rpm
rpm -ivh cups-2.2.1-3.aix6.1.ppc.rpm cups-libs-2.2.1-3.aix6.1.ppc.rpm glib2-2.48.1-2.aix6.1.ppc.rpm gnutls-3.5.10-1.aix6.1.ppc.rpm
rpm -ivh samba-4.6.4-1.aix6.1.ppc.rpm
rpm -ivh libsmbclient-4.6.4-1.aix6.1.ppc.rpm
rpm -ivh libsmbclient-devel-4.6.4-1.aix6.1.ppc.rpm --nodeps
rpm -ivh samba-devel-4.6.4-1.aix6.1.ppc.rpm --nodeps
rpm -ivh samba-libs-4.6.4-1.aix6.1.ppc.rpm
rpm -ivh samba-pidl-4.6.4-1.aix6.1.ppc.rpm --nodeps
rpm -ivh samba-common-4.6.4-1.aix6.1.ppc.rpm
rpm -ivh samba-python-4.6.4-1.aix6.1.ppc.rpm
rpm -ivh samba-winbind-clients-4.6.4-1.aix6.1.ppc.rpm samba-winbind-4.6.4-1.aix6.1.ppc.rpm
rpm -vih samba-winbind-devel-4.6.4-1.aix6.1.ppc.rpm --nodeps
rpm -ivh samba-winbind-krb5-locator-4.6.4-1.aix6.1.ppc.rpm
上述顺序及方法仅供参考,跟进实际情况采取降版本安装、升版本安装、直接安装等不同方式

四、环境配置
上述版本安装完成后有说明文档,路径为:/opt/freeware/doc/samba-4.6.4不同的版本可能会存在差异。
参考文档设置环境变量,在root用户的profile中加入
LIBPATH=/opt/freeware/lib:/opt/freeware/lib/samba:/usr/lib PATH=/opt/freeware/bin:/opt/freeware/sbin:$PATH
应用profile 执行 su -或者重新登陆
测试testparm命令可用,同时确认smb.conf文件的位置,此处为:/etc/samba/smb.conf
如果testparm执行过程中遇到报错,需要先解决报错问题。

exec():0509-036 由于以下错误,不能装入程序 /opt/freeware/bin/testparm:
0509-150 未能装入从属模块 libsmbconf.so。
0509-022 不能装入模块 libsmbconf.so。
exec():0509-036 由于以下错误,不能装入程序 /opt/freeware/bin/testparm:
0509-150 未能装入从属模块 libsmbconf.so。
0509-022 不能装入模块 libsmbconf.so。
0509-026 系统错误: 路径名中的文件或目录不存在。0509-026 系统错误: 路径名中的文件或目录不存在。

上述问题是LIBPATH设置不正确导致,按照前面的设置。

rlimit_max: increasing rlimit_max (2000) to minimum Windows limit (16384)2、 rlimit_max: increasing rlimit_max (2000) to minimum Windows limit (16384)

上述是用户限制导致,执行下述命令设置
chuser nofiles=-1 root
设置完成后重新登陆或者su -

Could not load program testparm:
Symbol resolution failed for /usr/lib/libc.a(posix_aio.o) because:
Symbol _posix_kaio_rdwr (number 2) is not exported from dependent
module /unix.
Symbol _posix_listio (number 3) is not exported from dependent
module /unix.
Symbol _posix_acancel (number 4) is not exported from dependent
module /unix.
Symbol _posix_iosuspend (number 5) is not exported from dependent
module /unix.
Symbol _posix_aio_nwait (number 6) is not exported from dependent
module /unix.
Symbol _posix_aio_nwait64 (number 7) is not exported from dependent
module /unix.
Symbol _posix_aio_nwait_timeout (number 8) is not exported from dependent
module /unix.
Symbol _posix_aio_nwait_timeout64 (number 9) is not exported from dependent
module /unix.
Symbol _posix_iofsync (number 10) is not exported from dependent
module /unix.module /unix.

在AIX5312上遇到上述问题,是由于异步IO未启动导致的,使用下述命令修改后重启即可。
chdev -l posix_aio0 -a autoconfig="available"
使用lsattr -El posix_aio0 查看,下述为正确设置

autoconfig available STATE to be configured at system restart True
fastpath enable State of fast path True
kprocprio 39 Server PRIORITY True
maxreqs 4096 Maximum number of REQUESTS True
maxservers 10 MAXIMUM number of servers per cpu True
minservers 1 MINIMUM number of servers Trueminservers 1 MINIMUM number of servers True

五、编辑smb.conf
全局[gobal]增加下述设置,如果不需要支持中文可不设置,采用默认设置即可。
unix charset = gbk #根据locale的输出进行设置,zh_cn对应的是gbk,如果是utf8则需要设置utf8,跟进实际情况设置。
dos charset = CP936 #支持windows中文,可在对应的客户端cmb下执行chrp查看
[share]

    path = /home/rtcbuild
    hosts allow = 99.
    guest ok = yes
    writable = yes
    browseable = yes
    #share字段跟进自己需要进行设置,此文中不再展开

执行testparm检测smb.conf是否存在问题

六、创建共享访问用户
由于samba是使用自己的一套机制存储的用户及口令,则需要单独配置用户口令
smbpasswd -a username #用户名为aix系统的某个用户,windows挂载时使用此用户、密码。

七、启动服务
**smbd -D
nmbd -D**
如果发现未启动,可在/var/log/samba下查看对应的日志信息
我在启动过程发现未启动,查看日志提示如下:

2017/05/21 18:29:50.858803, 0] ../lib/util/util.c:216(directory_create_or_exist)
mkdir failed on directory /opt/freeware/var/run/ncalrpc: 路径名中的文件或目录不存在。
[2017/05/21 18:29:50.859374, 0] ../source3/smbd/server.c:1912(main)
Failed to create pipe directory /opt/freeware/var/run/ncalrpc - 路径名中的文件或目录不存在。

手动创建目录:mkdir -P /opt/freeware/var/run/ncalrpc
检查137/UDP 138/UDP 139/TCP 445/TCP端口是否已开启监听状态
本机检查共享是否OK
smbclinet -L //localhost -U username #此处用户为smbpasswd已加入的用户

八、windows端挂载
1、在我的电脑中选择映射网络驱动器,
2.png

2.png

2、在弹出的界面中输入服务器的ip地址或者主机名、共享名等信息。
3.png

3.png

3、选择完成在弹出的页面中输入smbpasswd中设置的用户名、密码。

附录:

1、由于samba4以后不再支持swat,所以这里未进行说明,如果有兴趣的可以参考https://www.ibm.com/developerworks/cn/aix/library/au-aix_samba/index.html
2、采取aix自动包安装方式请参考
https://www.ibm.com/developerworks/cn/aix/library/au-aix_samba/index.html

如果觉得我的文章对您有用,请点赞。您的支持将鼓励我继续创作!

2

添加新评论0 条评论

Ctrl+Enter 发表

作者其他文章

X社区推广