Linux普通用户之间开放文件夹权限

本文最后更新于 2025年4月9日 晚上

背景:想要用户A目录下编译好的可执行文件开放给用户B用,并且只给B权限。无sudo权限。

采用linux自带的ACL(Access Control List,访问控制列表)功能,需要系统中可用setfacl命令。

用户A的用户目录为/share/home/A,可执行文件在/share/home/A/test/A.sh,用户B的用户目录为/share/home/B,

  1. 首先确保只有自己可以执行脚本,在A账号下执行:
1
chmod 700 ~/test/A.sh
  1. 使用ACL给用户B添加访问和执行权限,在A账号下执行:
1
2
3
4
# 让用户B可以进入目录并执行
setfacl -R -m d:u:B:rwx ~/test
# 让文件夹下面所有东西都能被读写执行
chmod -R 777 ~/test
  1. 在大多数 Linux 系统中,用户 A 的主目录 /home/A 默认权限为 700(即仅所有者可访问),这会阻止其他用户(包括 B 用户)进入该目录。为了让 B 用户能够顺利执行脚本,你需要在保证隐私的前提下,允许其“穿越”(execute 权限)用户 A 的主目录,而不列出目录内容。
1
setfacl -m u:B:--x /share/home/A
  1. 如果以后往test文件夹里新加了东西,还要执行一遍chmod -R 777 ~/test确保赋予权限

  2. 在用户B的终端中执行/share/home/A/test/A.sh,查看是否成功