【发布时间】:2017-06-30 13:52:24
【问题描述】:
我在 Lubuntu 16.04 上使用 Bash。 LTS,但我不确定这对这个问题是否很重要。
我注意到,当我以标准用户身份创建文件时,该文件具有 664 权限。但是当我是root用户并通过-u参数为同一个用户执行相同的命令时,它有644个权限,所以该组的写权限丢失了。
我认为这是一个缺陷,因为 sudo 联机帮助页明确指出:
-u user, --user=user
Run the command as a user other than the default target user (usually root). The user may be either a user name or a
numeric user ID (UID) prefixed with the ‘#’ character (e.g. #0 for UID 0). When running commands as a UID, many
shells require that the ‘#’ be escaped with a backslash (‘\’). Some security policies may restrict UIDs to those
listed in the password database. The sudoers policy allows UIDs that are not in the password database as long as the
targetpw option is not set. Other security policies may not support this.
现在我知道 -u 参数的行为与预期的行为不同,我的问题是:
我如何确保在 root shell 中启动的命令能够完全像从另一个用户的 shell 中执行一样执行?
备注:我知道我可以通过修改umask 来解决这个问题,但这并不能保证我的行为在任意数量的其他情况下都不会有所不同。
【问题讨论】:
-
" 的执行与从另一个用户的 shell 执行时完全一样吗?" -- 执行该用户的 shell。例如“
sudo -u user sh -c 'some command'”。请注意,每个用户都指定了自己的 shell。getent passwd user了解详情 -
有趣的是,这不起作用 - 文件权限仍然是 644
-
Stack Overflow 是一个编程和开发问题的网站。这个问题似乎离题了,因为它与编程或开发无关。请参阅帮助中心的What topics can I ask about here。也许Super User 或Unix & Linux Stack Exchange 会是一个更好的提问地点。
-
我不明白为什么这个问题应该是题外话。是的,它也可能适用于其他一些交换站点,因为在多个交换站点之间接受的主题集的交集是非空的。就您提供的链接而言,这个问题确实涵盖了脚本上下文中的特定编程问题以及程序员常用的软件工具,并且是软件开发独有的实用,可回答的问题。另外,不求调试帮助,明显不是功课,可以复现,不求书本工具。
-
我真的很高兴你问了这个问题@Wanderer,我刚刚从一本书中了解了文件权限,并且在尝试不同的事情时遇到了相同类型的问题。快疯了。不得不登录另一个用户而不是使用
sudo -u <username> mkdir执行命令来获得我想要的权限,这太荒谬了。