我有两个用户。每个用户都有一个项目。
问题:
我需要同时处理两个项目,但我总是必须登录另一个用户才能进行更改,因为否则我没有权限。
我已将项目拆分给两个用户,因为我需要为这两个用户提供另一组别名。这两个项目都使用不同的 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 权限,而只有足够的权限切换到另一个帐户。
打开根 shell (
sudo -s
)。在更改配置之前不要关闭它你知道这sudo
将继续为您提供 root 访问权限。使用
visudo
(或者EDITOR=nano visudo
如果您不喜欢vi
)并在文件底部附近添加一行,usera ALL=(userb) NOPASSWD: ALL userb ALL=(usera) NOPASSWD: ALL
测试您
sudo
是否可以usera
往返userb
。测试您是否仍然可以按照用于实现步骤 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。