我在一台机器上控制两个用户帐户,但我不是 root 用户。是否可以将一些文件从一个帐户“赠送”给另一个帐户?
理由:我在机器上设置了一个裸 git 存储库作为原始存储库。现在,我希望该存储库中的文件由用户“git”而不是我的个人帐户拥有。在这种特殊情况下,我可能还可以将副本克隆为“git”,删除裸存储库并将克隆(需要使其裸露)放在该位置。尽管这很乏味,但出于普遍的好奇心,我会对答案感兴趣。
答案1
您可以使用 ACL 将主目录中的文件的权限授予其他用户。设置ACL的命令是setfacl
。
假设您控制的帐户是约翰和史密斯。现在,如果想要史密斯拥有对文件的完全访问权限约翰的主目录,然后他可以运行setfacl
命令约翰有这些选项:
setfacl -R -m u:smith:rwx /home/john
上述setfacl
命令将为用户提供史密斯对主目录的完全访问权限约翰。该命令必须由正在访问的目录的所有者执行(约翰在本例中)或 root 。
您可以修改权限或目录名称,或者告诉setfacl
命令是否必须将访问权限授予用户或组。例如:
setfacl -m u:smith:rx /home/john
上述命令将为用户提供史密斯对 /home/john 的只读访问权限。
[sreeraj@server ~]$ setfacl -m u:soum:rwx /home/sreeraj
在同一服务器上:
[soum@server ~]$ cd /home/sreeraj
[soum@server sreeraj]$ touch file_by_soum
[soum@server sreeraj]$ ll file_by_soum
-rw-rw-r-- 1 soum soum 0 फ़रवरी 16 16:27 file_by_soum
[soum@server sreeraj]$
从手册页setfacl
:
EXAMPLES
Granting an additional user read access
setfacl -m u:lisa:r file
Revoking write access from all groups and all named users (using the effective rights mask)
setfacl -m m::rx file
Removing a named group entry from a file's ACL
setfacl -x g:staff file
Copying the ACL of one file to another
getfacl file1 | setfacl --set-file=- file2
Copying the access ACL into the Default ACL
getfacl --access dir | setfacl -d -M- dir
答案2
您需要成为 root 用户才能更改(放弃或占用)文件/目录所有权。