linux用户的问题

最近在开发的时候遇到一个问题:

我在某个项目下的某个文件夹内写了一个可以单独run的A.py文件,这个文件里面的代码可以调用kubernetes的python接口来请求kubernetes上的信息(比如pod信息)。问题发生在,这个文件所在的项目的运行是前后端之间要联通的,当我在其他的后端文件调用A.py的方法就会报错,看日志是加载kubernetes的配置文件出错了。可是为啥我单独运行A.py来测试run就没问题呢 ?

于是乎,请教了linux比较了解的人,找到了问题所在。
首先,单独run A.py的代码时候,打印一下system(“whoami”),在控制台看到的输出是root。这没毛病,因为我把kubernetes的配置文件放在了/root/.kube/config这个路径下,config就是那个配置文件。

可是当把整个项目run起来的时候这个文件就找不到了,就会报错,配置文件找不到,根本没法访问kubernetes。为啥呢,检查了环境变量和路径以及路径对应的文件。在这些没有错误的前提下,最后得出的问题是linux用户的问题。程序运行时是不同的用户,导致文件系统的隔离,/root下面的文件其他用户是没有办法访问的,是不可见的,即使给文件设置了777文件权限也没有用,/root的目录依旧是不可见的。

所以,最后的解决办法是,将kubernetes的配置文件转移到/目录下,在加载kubernetes配置文件的方法那里指定文件路径问题解决了。理论上应该找出项目运行时的用户,将对应的配置文件放在用户可以访问的目录下,这样应该是比较好的方案,但由于项目的问题,用户没确定出来,所以采用了上面的方法,但问题是解决了。

关于linux账户与用户组

可见:鸟哥的linux私房菜, P418

这里我们讨论一下用户账户:这里有两个命令 cat /etc/passwdcat /etc/shadow.都是以文件的形式进行的记录,可以进行vi编辑修改,但不要乱修改,不知道的不要修改!还有一个cat /etc/group这个可以先忽略。/etc/passwd是管理用户UID与GID的重要参数,/etc/shadow是专门管理密码相关数据的,这两个文件的数据值得研究,如果要备份linux用户信息,记得这两个文件都要备份!

原文地址:https://www.cnblogs.com/yspworld/p/10862890.html