我有本地服务器的 root 访问权限。几天前,我的同事在该服务器上创建了一个用户,给了我用户名和密码,但该用户的权限已最小化。例如,用户甚至无法在自己的主目录下创建文件。
有没有关于“用户的权限”的概念?如果有,如何查看/修改?
答案1
可能的情况是,您的同事在创建帐户时“手动”创建了主目录,导致该目录归root
.尝试运行以下命令root
:
chown -R username ~username
chgrp -R $(id -gn username) ~username
username
有问题的帐户名称在哪里。
编辑
如果这确实是您的问题,为了避免将来发生这种情况,您需要将开关添加-m
到useradd
用于创建用户帐户的命令行中。这可确保在用户选择的主目录不存在时创建该目录。这将创建具有“正确”所有权和权限的主目录,因此您不会遇到此类问题。
编辑2
上面添加的命令将更改to的主要组chgrp
的整个主目录的组所有权。根据您的环境,这可能并不完全是您想要的,您可能需要“手动”更改主目录内特定子目录的组所有权,从而为不同的子目录设置不同的组所有权。对于个人计算机来说通常不是这种情况,但既然您提到了“同事”,我假设我们正在谈论网络办公环境,在这种情况下,组所有权对于共享目录很重要。username
username
答案2
正如您所要求的那样,在 Unix 中实际上没有任何方法可以系统地执行此操作。如果您使用,sudo
您可以创建类似您所询问的内容,但这将是完全人为的,并且它可以提供的列表的全面性非常有限。您sudo
可以创建命令组,然后允许用户(或用户组)访问这些命令组。
例子
# /etc/sudoers
someuser ALL=/sbin/service, /sbin/chkconfig
然后,您可以sudo -l
以某个用户身份使用该命令来查看允许他们运行哪些命令。
$ sudo -l
...
User someuser may run the following commands on this host:
(ALL) ALL
(root) /sbin/service, (root) /sbin/chkconfig, (root)
答案3
正如 Joseph R. 所建议的,可能的解释是主目录不是以正确的所有权创建的。在 99% 的情况下,访问问题只是分别使用chown
和chmod
命令正确设置所有权和权限位的问题。 (在一些特殊情况下,其他因素也会发挥作用,例如 SELinux、AppArmor、文件系统 ACL 或网络文件系统凭据映射。不过,正如我所说,这种情况不太可能适用于您。)
回答你剩下的问题……是的,你可以亲眼看看它是如何失败的。作为 root,您可以暂时成为另一个用户,并且无需知道该用户的密码即可完成此操作 - 只需运行/bin/su - username
。这将以其他用户的身份执行 shell,就像您使用该用户名和密码登录一样。当您完成该 shell 后exit
,您将返回到原来的 root shell。