Python:验证NFS身份验证

0 投票
2 回答
961 浏览
提问于 2025-04-16 14:03

大家好,

我有两个问题,一个是关于Python的,另一个是关于NFS的。

简单来说,我的程序需要从用户那里获取'用户名'、'用户ID'、NFS服务器的IP地址和导出路径。接下来,它需要验证这个NFS导出的路径是否可以被这个用户或用户ID读取和写入。

我的程序是在本地机器上以root身份运行的。比较直接的方法是先用给定的用户名和用户ID创建一个新用户,然后以root身份挂载NFS导出的路径到一个临时的挂载点,接着执行命令'su 用户名 -c touch /mnt_pt/tempfile'。如果输入的用户名和用户ID是正确的(而且NFS服务器设置也没问题),那么这个命令会成功,在NFS远程目录中创建一个名为tempfile的文件。这就是我的目标。

现在我有两个问题:

(i) 有没有比创建一个新的Unix用户、挂载路径和触摸文件来验证NFS权限更简单的方法?

(ii) 如果必须这样做,我想知道有没有Python模块或包可以帮助我执行'useradd'、'userdel'相关的命令?我现在打算使用相应的二进制文件(比如/usr/sbin/useradd等),然后调用subprocess.Popen来执行命令并获取输出。

谢谢大家的建议。

2 个回答

0

有一个Python工具包可以用来测试NFS服务器的功能。

你可以在这里找到它:git://git.linux-nfs.org/projects/bfields/pynfs.git

虽然这个工具是为NFSv4设计的,但你也可以很简单地把它用在NFSv3上。

0

i) 你可以尝试一些比较复杂的方法,但如果不直接去修改文件的话,可能没办法测试到你真正想测试的内容。所以我觉得按照你说的方式来做比较好。

ii) 如果你想确认用户是否存在,可以看看Python的pwd模块,不过你可能还是需要用到useradd和userdel这些程序来完成具体的操作。

你可能还要考虑给你的程序加上sudo,这样就不需要整个程序都以管理员身份运行,这样做看起来风险挺大的。

撰写回答