Cài đặt máy chủ chia sẻ tệp với Samba và OpenLDAP

Giới thiệu hệ thống

Bài viết này trình bày cách thiết lập máy chủ chia sẻ tệp sử dụng Samba phiên bản 4.9.1 làm dịch vụ chia sẻ tệp, OpenLDAP phiên bản 2.4.44 làm cơ sở dữ liệu phía sau, cùng với smbldap-tools phiên bản 0.9.11 và hệ điều hành CentOS 7.

Một số lưu ý quan trọng

  • Samba không chỉ có chức năng chia sẻ tệp mà còn có thể hoạt động như thành viên miền Windows hoặc thậm chí là bộ điều khiển miền Windows.
  • Do sử dụng tính năng chia sẻ tệp của Samba liên quan trực tiếp đến quyền truy cập tệp, các người dùng trong Samba phải tồn tại trong hệ thống Linux. Vì sử dụng OpenLDAP làm cơ sở dữ liệu phía sau, cần cấu hình NSS để hệ thống có thể truy vấn thông tin người dùng từ OpenLDAP.
  • Samba có thể sử dụng PAM làm mô-đun xác thực hoặc chương trình xác thực tích hợp. Trong CentOS, phiên bản biên dịch được cấu hình sử dụng chương trình xác thực tích hợp nên có thể bỏ qua cấu hình PAM.

Cài đặt phần mềm cơ bản

Thực hiện cài đặt các gói phần mềm cần thiết:

yum -y install samba openldap-servers openldap-clients smbldap-tools nss-pam-ldapd

Cấu hình dịch vụ OpenLDAP

Xóa cấu hình mặc định và bắt đầu thiết lập mới:

# Sao lưu cấu hình hiện tại
mkdir /root/backup
tar -Jcvf /root/backup/ldap-config-$(date '+(%Y.%m.%d_%H:%M:%S)').tar.xz /etc/openldap/slapd.d/
tar -Jcvf /root/backup/ldap-data-$(date '+(%Y.%m.%d_%H:%M:%S)').tar.xz /var/lib/ldap/

# Xóa cấu hình cũ
rm -rf /etc/openldap/slapd.d/*
rm -rf /var/lib/ldap/*

# Sao chép schema hỗ trợ Samba
cp /usr/share/doc/samba-4.9.1/LDAP/samba.ldif /etc/openldap/schema/

Tạo tập tin cấu hình LDAP với nội dung sau:

# file: /tmp/ldap-server.ldif

dn: cn=config
objectClass: olcGlobal
cn: config
olcArgsFile: /var/run/openldap/slapd.args
olcPidFile: /var/run/openldap/slapd.pid

dn: cn=schema,cn=config
objectClass: olcSchemaConfig
cn: schema

include: file:///etc/openldap/schema/core.ldif
include: file:///etc/openldap/schema/cosine.ldif
include: file:///etc/openldap/schema/nis.ldif
include: file:///etc/openldap/schema/inetorgperson.ldif
include: file:///etc/openldap/schema/samba.ldif

dn: olcDatabase=frontend,cn=config
objectClass: olcDatabaseConfig
objectClass: olcFrontendConfig
olcDatabase: frontend

dn: olcDatabase=config,cn=config
objectClass: olcDatabaseConfig
olcDatabase: config
olcAccess: to * 
  by dn.base="gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth" manage 
  by * none

dn: olcDatabase=monitor,cn=config
objectClass: olcDatabaseConfig
olcDatabase: monitor
olcAccess: to * 
  by dn.base="gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth" read 
  by dn.base="cn=Manager,dc=example,dc=org" read 
  by * none

dn: olcDatabase=hdb,cn=config
objectClass: olcDatabaseConfig
objectClass: olcHdbConfig
olcDatabase: hdb
olcSuffix: dc=example,dc=org
olcRootDN: cn=Manager,dc=example,dc=org
olcRootPW: {SSHA}generated_password_hash_here
olcDbDirectory: /var/lib/ldap
olcDbIndex: objectClass eq,pres
olcDbIndex: ou,cn,mail,surname,givenname eq,pres,sub,uid

Áp dụng cấu hình và khởi động dịch vụ:

slapadd -F "/etc/openldap/slapd.d/" -b "cn=config" -l /tmp/ldap-server.ldif
chown -R ldap:ldap /etc/openldap/slapd.d/*
systemctl start slapd

Cấu hình Samba

Cấu hình đơn giản để kiểm tra khả năng kết nối với OpenLDAP:

# file: /etc/samba/smb.conf

[global]
	workgroup = WORKGROUP
	server string = Samba File Server
	log file = /var/log/samba/smb.log
	security = user
	passdb backend = ldapsam:ldap://127.0.0.1
	ldap suffix = dc=example,dc=org
	ldap user suffix = ou=Users
	ldap group suffix = ou=Groups
	ldap admin dn = cn=Manager,dc=example,dc=org
	ldap ssl = no
	load printers = no

[homes]
	comment = User Home Directories
	browseable = no
	writable = yes
	create mask = 0600
	directory mask = 0700

Lưu trữ mật khẩu kết nối LDAP:

smbpasswd -w your_ldap_password

Khởi động dịch vụ Samba:

systemctl start nmb
systemctl start smb

Cấu hình smbldap-tools

Sử dụng công cụ để tạo dữ liệu cần thiết cho Samba:

smbldap-config
smbldap-populate

Tạo người dùng thử nghiệm:

smbldap-useradd -a -m testuser
smbldap-passwd testuser

Cấu hình NSS (Name Service Switch)

Sửa đổi tập tin cấu hình NSS để thêm hỗ trợ LDAP:

# file: /etc/nsswitch.conf

passwd: files ldap
shadow: files
group: files ldap
hosts: files dns myhostname

Cấu hình nslcd daemon:

# file: /etc/nslcd.conf

uid nslcd
gid ldap
uri ldap://127.0.0.1/
base dc=example,dc=org
binddn cn=Manager,dc=example,dc=org
bindpw your_ldap_password
ssl no
filter passwd (&(objectClass=posixAccount)(uidNumber>=1000))
filter group (&(objectClass=posixGroup)(gidNumber>=500))

Khởi động dịch vụ nslcd:

chmod 600 /etc/nslcd.conf
systemctl start nslcd

Kiểm tra cấu hình NSS:

getent passwd testuser

Cấu hình quyền hạn Samba

Để ngăn chặn truy cập trái phép thông qua SELinux:

semanage fcontext -a -t samba_share_t '/var/smb(/.*)?'
restorecon -R /var/smb/

Thử nghiệm kết nối Samba:

smbclient -L //127.0.0.1/ -U testuser

Thẻ: samba openldap nis selinux authentication

Đăng vào ngày 28 tháng 6 lúc 08:13