授予用户 A 对用户 B 的完全访问权限,反之亦然

授予用户 A 对用户 B 的完全访问权限,反之亦然

我有两个用户。每个用户都有一个项目。

问题:

我需要同时处理两个项目,但我总是必须登录另一个用户才能进行更改,因为否则我没有权限。

我已将项目拆分给两个用户,因为我需要为这两个用户提供另一组别名。这两个项目都使用不同的 PHP 版本运行,并且别名需要引用正确的版本。别名用于项目特定的 CLI 命令。

问题:

有没有办法让用户 A 拥有对用户 B 的完全访问权限,反之亦然?

答案1

有没有办法让用户 A 拥有对用户 B 的完全访问权限,反之亦然?

如果您确实同时是用户 A 和用户 B(即两个帐户都可以完全信任对方),您可以使用sudo在它们之间进行切换。如果您将别名和其他定义放入登录/启动脚本中.bash_profile,甚至.bashrc可以在切换时让它们自动运行。

# as User A
sudo -su userb    # Or sudo -iu userb

# as User B
sudo -su usera    # Or sudo -iu usera

您可以进行这样的设置,以便用户 A 和用户 B 都没有 root 权限,而只有足够的权限切换到另一个帐户。

  1. 打开根 shell ( sudo -s)。在更改配置之前不要关闭它你知道sudo将继续为您提供 root 访问权限。

  2. 使用visudo(或者EDITOR=nano visudo如果您不喜欢vi)并在文件底部附近添加一行,

    usera   ALL=(userb) NOPASSWD: ALL
    userb   ALL=(usera) NOPASSWD: ALL
    
  3. 测试您sudo是否可以usera往返userb

  4. 测试您是否仍然可以按照用于实现步骤 1 的方式获得 root 访问权限。


在评论中你注意到你已执行类似的操作,但希望能够使用任一用户帐户并直接写入其他用户的目录树。

一般来说,我根本不推荐这样做,特别是如果您为每个用户的开发环境有不同的配置。尤其是因为看起来他们可能是不同的客户。但是,如果您确实希望能够执行此操作,则可以将两个用户放入同一组,并确保使用组写入权限创建文件。

准备:

# Add shared working group
groupadd bothusers
usermod -aG bothusers usera
usermod -aG bothusers userb

# Increase write permissions to both users' directory trees
find ~usera/* ~userb/* -exec chmod g=u {} +

# Set group membership
find ~usera/* ~userb/* -exec chgrp bothusers {} +

您可能希望减少*两个find命令中的通配符以仅匹配适当的目录树。

在每个会话开始时调用它(可能在~/.bashrc您的配置设置脚本中):

# Create files with group write permissions
umask 0002

find您可能会发现每小时cron或在登录时运行这两个命令的每个用户变体很有用。

请注意,这不会将用户的主要组更改为bothusers。您可以newgrp bothusers在当前会话中执行此操作 - 但请注意,它将启动一个新的子 shell。

相关内容