You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Debian环境下NFS结合MIT Kerberos挂载后权限异常问题求助

Debian环境下NFS结合MIT Kerberos挂载后权限异常问题求助

大家好,我已经成功搭建了NFS+Kerberos环境,但Kerberos认证后的用户执行写入操作时遇到了权限问题,具体报错如下:

philip@client $: touch /mnt/philip/testfile.txt
touch: cannot touch '/mnt/philip/test': Permission denied

下面是我完整的安装和配置过程(mydomain.net是占位符):

NFS服务器初始搭建

server #: apt-get -y update
server #: apt-get -y install nfs-kernel-server nfs-common
server #: mkdir -p /srv/nfs/philip

编辑/etc/exports添加共享目录:

server #: cat <<EOF >>/etc/exports
/srv/nfs/philip 192.168.10.0/24(rw,nohide,insecure,no_subtree_check,sync,no_root_squash)
EOF

重启NFS服务:

server #: service nfs-kernel-server restart

NFS客户端初始搭建

client #: apt-get -y update
client #: apt-get -y install nfs-common
client #: mkdir -p /mnt/philip

编辑/etc/fstab添加挂载项:

client #: cat <<EOF >>/etc/fstab
nfs.mydomain.net:/srv/nfs/nfs-001                           /mnt/philip         nfs     defaults        0       0
EOF

执行挂载:

client #: mount -a

初始测试

NFS共享成功挂载到/mnt/philip,这一步是正常工作的!

Kerberos配置(服务器端)

首先更新/etc/exports,启用Kerberos认证(移除了no_root_squash):

/srv/nfs/philip      192.168.10.0/24(sec=krb5p,rw,nohide,insecure,no_subtree_check,sync)

重新导出共享:

server #: exportfs -ra
server #: showmount -e

接下来安装并配置Kerberos服务器:

server #: apt install krb5-kdc krb5-admin-server # 此处需输入大写格式的域,以及主机的完整域名

/etc/krb5.conf配置内容:

[libdefaults]
default_realm = MYDOMAIN.NET
# The following krb5.conf variables are only for MIT Kerberos.
kdc_timesync = 1
ccache_type = 4
forwardable = true
proxiable = true
rdns = false
# The following libdefaults parameters are only for Heimdal Kerberos.
fcc-mit-ticketflags = true

[realms]
MYDOMAIN.NET = {
kdc = nfs.mydomain.net
admin_server = nfs.mydomain.net
}

[domain_realm]
# 此处后续配置省略

初始化Kerberos域:

server #: krb5_newrealm

编辑/etc/krb5kdc/kadm5.acl,取消注释/*admin *这一行,然后重启服务:

server #: systemctl restart krb5-kdc krb5-admin-server

添加管理员主体:

server #: kadmin.local -q "addprinc admin/admin@MYDOMAIN.NET"

为NFS服务添加主体并生成密钥表:

server #: kadmin.local -q "addprinc -randkey nfs/nfs.mydomain.net@MYDOMAIN.NET"
server #: kadmin.local -q "ktadd -k /etc/krb5.keytab nfs/nfs.mydomain.net@MYDOMAIN.NET"

Kerberos配置(客户端)

先在服务器端为客户端NFS服务生成密钥表:

server #: kadmin.local -q "addprinc -randkey nfs/client.mydomain.net@MYDOMAIN.NET"
server #: kadmin.local -q "ktadd -k /etc/krb5.client.keytab nfs/client.mydomain.net@MYDOMAIN.NET"
server #: scp /etc/krb5.client.keytab client:/etc/krb5.keytab

然后在客户端操作:

client #: apt update
client #: apt install krb5-user

使用密钥表获取票据:

client #: kinit -k -t /etc/krb5.keytab nfs/client.mydomain.net@MYDOMAIN.NET
client #: klist

执行klist后输出如下:

Ticket cache: FILE:/tmp/krb5cc_0
Default principal: nfs/client@MYDOMAIN.NET

Valid starting       Expires              Service principal
11/27/2023 14:49:54  11/28/2023 00:49:54  krbtgt/MYDOMAIN.NET@MYDOMAIN.NET
renew until 11/28/2023 14:49:44

此时可以通过Kerberos认证挂载NFS共享,我已经把/etc/fstab里的挂载项更新为:

nfs.mydomain.net:/srv/nfs/philip              /mnt/philip         nfs     sec=krb5p 0 0

执行挂载:

client #: mount -a

如果挂载失败,可能需要重启rpc-gssd服务:

systemctl restart rpc-gssd

当前状态

NFS已经通过Kerberos认证成功挂载到客户端。

用户Philip的权限配置

在服务器端为Philip添加主体并生成密钥表:

server #: kadmin.local -q "addprinc -randkey philip/client.mydomain.net@MYDOMAIN.NET"
server #: kadmin.local -q "ktadd -k /etc/krb5.philip.keytab philip/client.mydomain.net@MYDOMAIN.NET"
server #: scp /etc/krb5.philip.keytab client:

在客户端用Philip身份认证:

philip@client $: kinit -k -t krb5.philip.keytab philip/client.hyvanix.net@HYVANIX.NET

查看共享目录权限:

philip@client $: ls -ls /mnt/philip
total 12
drwxr-xr-x 2 philip philip 4096 Dec 26 07:30 .
drwxr-xr-x 7 root root 4096 Dec 26 09:34 ..

但执行写入操作时报错:

philip@client $: touch /mnt/philip/test
touch: cannot touch '/mnt/philip/test': Permission denied

查看服务器端共享目录的权限:

server #: ls -la /srv/nfs/
total 16
drwxr-xr-x 4 root  root  4096 Dec 26 06:35 .
drwxr-xr-x 3 root  root  4096 Dec 22 14:35 ..
drwxr-xr-x 2 philip   philip   4096 Dec 26 07:30 philip

甚至root用户都无法写入这个目录。如果我把/srv/nfs/philip权限改成777,Philip就能正常写入了,这说明Kerberos认证后,用户被识别成了“其他用户”(other)。

现在我卡在这一步了,有没有大佬能帮忙排查下问题?非常感谢!

备注:内容来源于stack exchange,提问作者cumulus.ws

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.20 13:35:31