samba
AlmaLinux 9
AlmaLinux 9
バージョン確認
# cat /etc/os-release
NAME="AlmaLinux"
VERSION="9.2 (Turquoise Kodkod)"
ID="almalinux"
ID_LIKE="rhel centos fedora"
VERSION_ID="9.2"
PLATFORM_ID="platform:el9"
PRETTY_NAME="AlmaLinux 9.2 (Turquoise Kodkod)"
ANSI_COLOR="0;34"
LOGO="fedora-logo-icon"
CPE_NAME="cpe:/o:almalinux:almalinux:9::baseos"
HOME_URL="https://almalinux.org/"
DOCUMENTATION_URL="https://wiki.almalinux.org/"
BUG_REPORT_URL="https://bugs.almalinux.org/"
ALMALINUX_MANTISBT_PROJECT="AlmaLinux-9"
ALMALINUX_MANTISBT_PROJECT_VERSION="9.2"
REDHAT_SUPPORT_PRODUCT="AlmaLinux"
REDHAT_SUPPORT_PRODUCT_VERSION="9.2"
1.sambaをインストール
# yum -y install samba
バージョンの確認
# smbd -V
Version 4.17.5
2.FWの穴あけ
コマンドでの設定
# firewall-cmd --add-service=samba
success
# firewall-cmd --runtime-to-permanent
success
3.共有フォルダを作成
共有の名称: share
共有のファイルを置く場所: /share
workgroup = WORKGROUP
ファイルを管理するlinux ユーザー/グループ: winshare:winshare
# useradd winshare
# mkdir /share ( /rl-home は MIRACLE では存在しないので ルート直下に作成)
ディレクトリの所有権者を設定
chown [オプション] ユーザー[:グループ] ファイル
# chown winshare:winshare /share
アクセス権(パーミッション)の変更 - chmod
https://kazmax.zpp.jp/linux_beginner/chmod.html
# chmod g+ws /share
ディレクトリに指定したwinshareというグループが、その配下に作成されるすべてのファイルに受け継がれる設定
SELinuxのコンテキスト変更
SElinuxのコンテナテキスト設定の追加
samba_share_tのタイプでファイルにラベルを付け、Samba がファイルを共有できるようにします。
# semanage fcontext -a -t samba_share_t "/share(/.*)?"
削除する場合は -d を使います
# semanage fcontext -d -t samba_share_t '/share(/.*)?'
コンテキスト設定反映
# restorecon /share
確認
# ls -lZd /share
drwxrwsr-x. 2 winshare winshare unconfined_u:object_r:samba_share_t:s0 6 4月 9 14:44 /share
winshare 所有者 winshare グループ
unconfined_u:object_r:samba_share_t:s0 コンテキスト
4.sambaの設定
# nano /etc/samba/smb.conf
[global]
workgroup = WORKGROUP
security = user
# passdb backend = tdbsam #ユーザー認証で接続
# printing = cups
# printcap name = cups
# load printers = yes
# cups options = raw
guest account = winshare
dos charset = CP932 #Windows側の文字コード
unix charset = UTF-8 #samba側の文字コード
map to guest = bad Password #間違ったパスワードでも利用できる
この部分はとりあえず削除 (winshare ディレクトリが見えてしまうため)
[homes]
comment = Home Directories
valid users = %S, %D%w%S
browseable = No
read only = No
inherit acls = Yes
[share]
path = /share 共有するディレクトリ
public = yes 一般公開する設定
writable = yes 書き込み可能である設定
smbサービス、nmbサービスの起動
# systemctl start smb.service
# systemctl start nmb.service
サービス停止 systemctl stop ${Unit}
サービス再起動 systemctl restart ${Unit}
サービスリロード systemctl reload ${Unit}
サービスの確認
# systemctl is-active smb.service
active
# systemctl is-active nmb.service
active
参考:この時点でWindows からマシン名でpingが通る
自動起動の設定
# systemctl enable smb.service
Created symlink /etc/systemd/system/multi-user.target.wants/smb.service → /usr/lib/systemd/system/smb.service.
# systemctl enable nmb.service
Created symlink /etc/systemd/system/multi-user.target.wants/nmb.service → /usr/lib/systemd/system/nmb.service.
サービス自動起動無効 systemctl disable ${Unit}
systemctl コマンド 参考
https://qiita.com/sinsengumi/items/24d726ec6c761fc75cc9
※「自動起動の設定」を行って再起動すると ホスト名(デバイス名)でクライアントから接続できるようになる
(smbサービス、nmbサービスの起動の時点で接続できる場合もあります)
windowsからアクセス
ワークグループをsambaの設定と合わせる
共有フォルダへのアクセス
エクスプローラを表示してホルダ名として「\\サーバー名」と入力して接続
接続できない場合はIPアドレスを入力してください
サーバー名で接続
1.仮想環境では、一旦IPアドレスで接続するとサーバー名で接続できるようになる場合があるようです
2.DNSを設定して 自動をOFFにします
普通に使えます。
また、隠しファイルが見えます (win本体のホルダでは見えない状態だったが(Version 22H2 の累積更新プログラム (KB5026446) で元に戻って見えるようになった)
この時点Rocky9.1でSElinuxアクセス制御エラーがでますが Rocky9.2 Alma9.2 では出ません
共有へのアクセス権設定
ユーザの作成
useradd [オプション] ユーザー名
-G グループリスト ユーザーが属するセカンダリグループのリストを指定する(空白を含まず「,」区切りで指定)
SSHで直接ログインする必要がなければパスワード設定不要(SSH接続はパスワード無しでは接続できない)
# useradd -G winshare user1
samba専用ユーザーの作成 pdbedit
pdbedit
http://www.samba.gr.jp/project/translation/3.5/htmldocs/manpages-3/pdbedit.8.html
-u username
操作 (表示・追加・削除など) の対象とするユーザー名を指定する。 追加・削除・変更操作においては必須であり、 表示操作においては任意である。
-a
ユーザーをデータベースに追加する際に指定する。 ユーザー名を -u オプションで指定する必要がある。 ユーザーを追加する際、 pdbedit はユーザーのパスワードの入力を求める。
実行は管理ユーザー権限で実行する必要がある
# pdbedit -a -u user1
new password:
retype new password:
Unix username: user1
NT username:
Account Flags: [U ]
User SID: S-1-5-21-1812951810-453011933-105716575-1000
Primary Group SID: S-1-5-21-1812951810-453011933-105716575-513
Full Name:
Home Directory: \\NTAKAHOST\user1
HomeDir Drive:
Logon Script:
Profile Path: \\NTAKAHOST\user1\profile
Domain: NTAKAHOST
Account desc:
Workstations:
Munged dial:
Logon time: 0
Logoff time: 木, 07 2月 2036 00:06:39 JST
Kickoff time: 木, 07 2月 2036 00:06:39 JST
Password last set: 木, 13 4月 2023 09:44:38 JST
Password can change: 木, 13 4月 2023 09:44:38 JST
Password must change: never
Last bad password : 0
Bad password count : 0
#
同様の方法でファイル共有に必要なユーザーを追加する
# pdbedit -a -u user2
new password:
retype new password:
Unix username: user2
NT username:
Account Flags: [U ]
User SID: S-1-5-21-1812951810-453011933-105716575-1001
Primary Group SID: S-1-5-21-1812951810-453011933-105716575-513
Full Name:
Home Directory: \\NTAKAHOST\user2
HomeDir Drive:
Logon Script:
Profile Path: \\NTAKAHOST\user2\profile
Domain: NTAKAHOST
Account desc:
Workstations:
Munged dial:
Logon time: 0
Logoff time: 木, 07 2月 2036 00:06:39 JST
Kickoff time: 木, 07 2月 2036 00:06:39 JST
Password last set: 木, 13 4月 2023 12:49:49 JST
Password can change: 木, 13 4月 2023 12:49:49 JST
Password must change: never
Last bad password : 0
Bad password count : 0
Logon hours : FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
#
もう一度pdbeditコマンドを実行すればパスワード変更できる
注:ユーザーを削除する場合はlinuxユーザーだけでなくsambaのユーザーも削除する必要がある
sambaユーザー設定の削除
-x
データベースからユーザーを削除する際に指定する。 ユーザー名は -u オプションで指定する必要がある。
# pdbedit -x -u user2
Sambaのユーザーアクセス設定
# nano /etc/samba/smb.conf
[global]
workgroup = WORKGROUP
security = user
passdb backend = tdbsam #ユーザー認証で接続
# printing = cups
# printcap name = cups
# load printers = yes
# cups options = raw
guest account = winshare
dos charset = CP932 #Windows側の文字コード
unix charset = UTF-8 #samba側の文字コード
map to guest = bad Password #間違ったパスワードでも利用できる
map to guest = Never #ゲスト認証を許可しない
[share]
path = /share 共有するディレクトリ
public = no 一般公開する設定:noに変更
writable = yes 書き込み可能である設定
#共有ホルダ設定
valid users = user1,user2,user3 アクセスできるユーザー
read list = user3 読み込みのみができるユーザー
smbサービスの再読み込み
# systemctl reload smb.service
# systemctl reload nmb.service Rockyではこれはやらなくても問題なかったがこれをやらないとExcelやWordでを開くと保護ビューと表示されるようになり編集可能にしても上書き保存できない状態になります
先の状態で保存したoffice関連(例ではExcelが読み取り専用)になる winshare IDで作成されているので編集できない
新たにtest2.xklx を作成 ID user1
----編集作成中
$ ll
合計 8
-rwxr--r--. 1 user1 winshare 5 4月 13 13:16 user1.txt
-rwxr--r--. 1 user2 winshare 12 4月 13 13:38 user2.txt
drwxr-sr-x. 2 user2 winshare 6 4月 13 13:39 新しいフォルダー
ファイルの所有者だけがファイルやディレクトリへの書き込み権が設定されている その他のユーザーは参照のみ
これでは不便なのですべてのユーザーが共有しているファイルやディレクトリにたいして作成&変更をできるようにします
[share]
path = /share 共有するディレクトリ
public = no
writable = yes
#共有ホルダ設定
valid users = user1,user2,user3
read list = user3
create mask =0664
directory mask =0775
smbサービスの再読み込み
# systemctl reload smb.service
# systemctl reload nmb.service Rockyではこれはやらなくても問題なかったがこれをやらないとExcelやWordでを開くと保護ビューと表示されるようになり編集可能にしても上書き保存できない状態になります
-rwxr--r--.
ファイルタイプ
所有者のアクセス権
グループのアクセス権
その他ユーザーのアクセス権
アクセス権の種類
r 4 読み込み
w 2 書き込み
x 1 実行(ディレクトリの場合は移動)