Ubuntu 20.04下多用户运行.NET Core Avalonia应用的权限问题
问题分析
从你提供的文件权限信息能直接定位问题:
- 文件权限为
-rwx------:仅**文件所有者(user2)**拥有读、写、执行权限,组用户和其他用户无任何操作权限 - 文件所有者是user2,所属组是user1,但组权限被完全限制,因此user1作为组成员也无法访问应用
另外你之前的chown命令用法有误:连续执行sudo chown -R :user1和sudo chown -R :user2会覆盖目录的所属组,最终仅最后一次设置的组生效;且这种方式无法实现多用户共享权限——Linux中多用户共享资源需通过共享用户组统一管理,而非反复修改所属组。
修复步骤
1. 创建共享用户组
先创建一个专门用于运行该应用的用户组,比如avalonia-app-users:
sudo groupadd avalonia-app-users
2. 将目标用户加入共享组
把user1和user2添加到这个共享组中:
sudo usermod -aG avalonia-app-users user1 sudo usermod -aG avalonia-app-users user2
注意:用户需要重新登录,新的组权限才会生效
3. 修改应用目录的归属
将/opt/AvaloniaApp的所有者设为root,所属组设为刚创建的共享组:
sudo chown -R root:avalonia-app-users /opt/AvaloniaApp
4. 设置正确的权限
- 给目录设置
2770权限(含setgid位,确保目录下新生成的文件自动继承组权限):
sudo chmod -R 2770 /opt/AvaloniaApp
- 若需要更严格的权限控制(比如文件不需要写权限),可单独调整文件和目录权限:
sudo find /opt/AvaloniaApp -type f -exec chmod 750 {} \; sudo find /opt/AvaloniaApp -type d -exec chmod 2770 {} \;
权限说明:
2770:目录权限,2代表setgid位,770表示所有者和组用户均拥有读写执行权限,其他用户无权限750:文件权限,所有者拥有读写执行权限,组用户拥有读和执行权限,无写权限
5. 验证权限
执行以下命令确认权限配置正确:
ls -l /opt/AvaloniaApp
正常情况下,文件所属组应为avalonia-app-users,权限类似-rwxr-x---或-rwxrwx---。
额外说明
- 你之前执行的
chmod -R u+rwx仅开放了所有者权限,未给组和其他用户授权,这就是初始仅root能访问的原因 - 单文件发布的Avalonia应用运行时会临时解压文件到用户目录,默认情况下每个用户的
~/.cache或临时目录权限正常,无需额外配置
内容的提问来源于stack exchange,提问作者SIVA KUMAR KALLURI
相关产品推荐
相关产品推荐

