理解文件所有权 Linux

理解文件所有权 Linux

我的 Linux 机器上有一个 Java 程序,我想在其中创建一个小型的单行 shell 脚本,/bin以避免每次都必须导航到该程序的文件夹并设置所有命令行参数。

起初,我可以运行脚本,/bin但 Java 无法正确启动。然而,执行完整命令时,/xxx/yyy/zzz/javaprog -args它启动了。过了一会儿,我意识到sudo /bin/shortcut问题解决了。

然后我检查了权限:

java program  :  -rwxrwxr-x 1 fred fred
/bin/shortcut :  -rwxrwxrwx 1 root root

通过发布将chown fred /bin/shortcut所有者更改为:

-rwxrwxrwx 1 fred root

现在一切都很好,我不需要 sudo 快捷方式。

有人能帮我理解一下发生了什么吗?为什么我需要 sudo 快捷方式才能使其工作,或者将其所有者更改为 Java 程序的所有者。

PS. 我理解用户/组的概念

答案1

您明白 rwxrwxrwx 是您的文件/文件夹的权限吗?前三个 RWXrwxrwx 是针对文件所有者的。第二组三个 rwxRWXrwx 是针对文件或文件夹的组所有者的,最后一组三个 rwxrwxRWX 是针对系统上的其他所有人的。R = 读取,W = 写入,X = 执行。

Chown 只是将用户和组分配给文件/文件夹

如果我没有说明清楚,请澄清一下你的问题。

答案2

Linux 权限包括所有者、组和其他。

您的java program : -rwxrwxr-x 1 fred fred意思是该文件的所有者是 'fred',其组是 'fred'。Fred 可以读取、写入和执行此文件(第一个rwx)。组 'fred' 中的用户可以读取、写入和执行此文件(第二个rwx)。所有其他用户都可以读取和执行此文件(第三部分,r-x)。

对于/bin/shortcut : -rwxrwxrwx 1 root root,root 是所有者和组,所有用户都可以读取、写入和执行。

在您的之后chown fred /bin/shortcut,可能应该是chown fred:fred /bin/shortcut(也更改组),所有者是 fred,组是 root,并且所有用户都可以读取、写入和执行。

相关内容