如同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
.