由管理员用户运行的桌面应用程序(但未明确使用 sudo)获取共享文件的文件所有权

由管理员用户运行的桌面应用程序(但未明确使用 sudo)获取共享文件的文件所有权

如同https://stackoverflow.com/questions/15143614/file-ownership-changes-to-root-after- saving-from-a-program-in-ubuntu但我无法使用答案,因为我没有将命令行应用程序作为 sudo 运行。我正在 Mint 16 32 位上的共享文件上运行桌面应用程序(本地共享,即仅在具有 777 权限和无人:用户所有权的本地驱动器上),然后其他用户无法覆盖该文件去使用它,因为它变成了adminuser:adminuser和644。

如何在用户之间共享此文件,并在主管理员用户使用它时防止其切换所有权/权限?

答案1

如果没有能力使用,sudo你的选项基本上就会被限制为 2 个。

方法#1

您可以将用户放入同一 Unix 组 ( /etc/group),以便他们能够访问相同的文件和目录。

例子

$ more /etc/group
somegroup:x:1001:adminuser,nobody

然后,您需要设置包含该文件的父目录,如下所示:

$ chgrp somegroup parentdir
$ chmod g+rwxs parentdir

此方法将强制在下面创建的任何文件或目录parentdir将组设置为somegroup.总的来说,这种方法工作得相当好,但如果parentdir的权限或所有权被搞乱的话,可能会有点脆弱。此外,如果文件和/或目录从其他位置移动到目录中,则此方法不起作用。

方法#2

更可靠的方法是使用命令 来对感兴趣的文件或目录使用访问控制列表 (ACL) setfacl

$ setfacl -Rdm g:somegroup:rx somedir
$ ll -d somedir/
drwxrwxr-x+ 2 saml saml 4096 Feb 17 20:46 somedir/

然后,您可以使用 确认 ACL 已应用getfacl

$ getfacl somedir/
# file: somedir/
# owner: saml
# group: saml
user::rwx
group::rwx
other::r-x
default:user::rwx
default:group::rwx
default:group:somegroup:r-x
default:mask::rwx
default:other::r-x

在父目录上设置上述权限将强制将默认 ACL 应用于somedir.

参考

相关内容