这是 Ubuntu 16.04 上的权限问题。我无法删除安装在 中的某些 R 库/usr/local/lib/R/site-library
。原来是我没有权限。该目录的所有者是root
,组是staff
。
我通过手动将我的用户添加到组中暂时解决了权限问题staff
。
sudo usermod -a -G staff myusername
# *see blockquote before using this!*
这使我可以从 IDE 中删除库。
然而,当我尝试查找有关员工组的更多信息时,却找不到关于该主题的任何明确材料。甚至不知道该组的主要用途。我只能猜测它是用来为某些目录上的用户提供类似的“增强”访问权限。
手动将用户添加到员工组有什么后果吗?
另外,是否有命令可以了解某个组的系统范围权限?例如,组员工对哪些目录具有写权限?
谢谢。
编辑:我必须在这里补充一点,对于此操作,使用
adduser
而不是usermod
是一个更明智的选择[请参阅下面的评论]
sudo adduser myusername staff
答案1
好的,正如@muru,我尽可能地发布了我自己问题的答案。该文件file:///usr/share/doc/base-passwd/users-and-groups.html
包含有关组和权限的详细信息。此页面的镜像可在此处找到:用户和组
因此:
职员
允许用户在无需 root 权限的情况下对系统添加本地修改(
/usr/local
、 )。与 group 相比,后者与监控/安全更相关。/home
adm
请注意,修改权限
/usr/local
实际上等同于 root 访问权限(因为/usr/local
有意位于 前面的搜索路径上/usr
),因此您应仅将受信任的用户添加到此组。在使用 NFS 的环境中要小心,因为在这样的环境中获取另一个非 root 用户的权限通常更容易。
当然,adm 已经在我的账户中了,groups
所以我可以这样做dmesg
。但我不得不手动将自己添加到staff
记录员工拥有的目录列表表明,所有这些目录都属于以下之一:
sudo find / -maxdepth 8 -type d -group staff -perm -g=w >>stafflog.txt
/var/local
/usr/local/lib
/usr/local/share
难怪员工会员资格赋予我对共享编程语言库的写权限。
检查以下其中一项的权限:
ls -al /var/local
drwxrwsr-x 2 root staff 4096 Apr 11 2014 .
drwxr-xr-x 16 root root 4096 Aug 3 15:55 ..
因此,显然员工技巧是由系统通过设置目录的位(setguid
)来执行的,以便无论哪个用户或进程在该目录中创建文件,该文件始终以员工组共享的权限运行。 看这里
但是我仍然怀疑我是否可以安全地留在这个组中。在我看来,这应该是相当安全的,因为这是一台笔记本电脑,最坏的情况下可以通过受信任的 LAN(通过 smb 或 ssh)进行访问。“实际上相当于 root 访问权限”这句话让我感到害怕。欢迎对此发表任何想法。