我已经使用Linux很长一段时间了,我仍然完全不知道文件权限是如何工作的。考虑到这一点,是否有人有任何书籍或全面的指南,我可以阅读,以完全理解事情?我已经完成了我的公平分享系统管理,所以我知道简单的东西,比如让目录可读和写入,使文件可执行,以及更改文件的所有者,但是在跨用户共享文件时,我迷路了。
这是我的主要问题。我有许多机器,我打算同步我的音乐库。我一直在使用Unison一段时间,这是一个很好的选择,因为我可以在我刚刚设置的本地网络上通过SSH轻松运行它。双赢。
到目前为止,我一直在使用2TB外置硬盘来同步计算机。(计算机1与HD连接,计算机2与HD连接,等等)这是最乏味的,特别是因为我对驱动器进行了加密,使得将它连接到我的所有机器并同步它是一个巨大的麻烦。无论如何,驱动器运行ext4(在TrueCrypt中),因此它维护所有Unix文件系统信息,如所有者和组。我刚刚设置了一台新机器,只是Unison'd它就可以获得音乐,我意识到现在,我的所有权限都是fubar。我必须以root身份运行Unison,因为这是我可以让文件脱离外部驱动器的唯一方法。显然,由于我在这台机器上使用的是不同于所有机器上通常的“rfkrocktk”的用户名,这实际上会给齿轮带来巨大的影响。
这是我的用例。这台笔记本电脑有两个有效的用户,“leandra”和“rfkrocktk”。我想在这两个用户之间分享音乐,所以我用symlinked / home / rfkrocktk / Music指向/ home / leandra / Music。我如何(a)允许两个用户访问此文件夹中的读/写/删除文件,以及(b)保持所有内容同步,而不会弄乱文件所有权?
编辑
我能够让事情变得有效,但还不完全。我将音乐目录的组ID设置为我的组media-users
,并将我的主用户rfkrocktk
和共享用户添加mt-daapd
到组中。现在,rfkrocktk
可以完美地访问文件,但mt-daapd
无法在目录中看到任何内容。这是我的ids:
$ id rfkrocktk
> uid=1000(rfkrocktk) gid=1000(rfkrocktk) groups=1000(rfkrocktk),4(adm),20(dialout),24(cdrom),29(audio),46(plugdev),104(lpadmin),115(admin),120(sambashare),124(vboxusers),1001(jupiter),2002(media-users)
$ id mt-daapd
> uid=123(mt-daapd) gid=65534(nogroup) groups=65534(nogroup),2002(media-users)
我已经尝试将mt-daap
主要的组ID设置为该media-users
组,但它不会改变任何内容。
以下是我对/home/rfkrocktk/Music
目录的权限:
drwxr-Sr-- 201 rfkrocktk media-users 12288 2011-01-13 12:26 Music
运行sudo -i -u mt-daapd ls -l /home/rfkrocktk/Music
产量没有。我怎样才能解决这个问题?
media-users
,将我的两个用户添加到该组,然后chgrpd my music directory to be grouped to the
media-users`组如下:sudo chgrp -R media-users /home/$USER/Music
。然后我chmodded该目录有以下perms:sudo chmod -R 0744 /home/$USER/Music
所以我可以rxw,但组中的用户可以r。这应该足够好吗?如何setgid
保持新创建的dirs在组中?