我正在运行 Android SDK 中提供的脚本来创建项目文件夹。但该文件夹是以 root 所有权创建的,我需要在其中进行操作。
我竟然没有将 SDK 安装在我的主文件夹下,而是安装在 usr/local/lib 下……我想知道,由于这是一个我通常必须使用sudo su
才能访问的特权位置,这可能是项目文件夹归 root 所有的原因吗?或者,创建文件夹时分配的权限是否完全取决于创建项目文件夹的脚本?
任何其他提示都会很感激,因为我不想整天不停sudo
地...我需要设置一些复杂的构建脚本,如果可以由用户(即我,而不是 root)完成,我会更愿意这样做。PS:如果这是由任何应用程序/脚本设置的权限,我不确定是否应该摆弄这些权限,或者我会这样做。
答案1
通常,/usr/local 中的任何内容都归 root 或 Debian 发行版中的“staff”组所有。您可以创建一个可以写入该目录的组,并将自己添加到其中(如果您愿意)。
sudo groupadd usrlocal
sudo usermod -a -G usrlocal $user
sudo chown -R /usr/local/* root:usrlocal
sudo chmod 750 /usr/local
您还可以使用 setuid 位来确保 SDK 始终由 root 启动。
sudo chmod +t /usr/local/sdk/script
如果我理解正确的话,我认为这可能就是导致您出现问题的原因。如果您需要写访问权限,请使用“770”。
编辑:(为了完整性)除非另有配置,否则程序创建的任何文件都将归运行该程序的用户所有。如果脚本/程序不需要 root 权限,请将所有权更改为您自己:
sudo chown /path/to/exec $user:$user