/opt目录中的读/写权限

我在我的/opt目录下顺利安装了Android Studio,并一直在使用它。然而最近,Android Studio告诉我有一个更新可用。但是它无法执行更新,因为它说它在安装的opt目录中没有读/写权限。

有人能推荐解决这个问题的最佳方法吗?我希望不必将我的安装移动到另一个目录。虽然我可能会被诱惑改变目录的权限来进行更新,但我也不确定是否想要这样做,之后再恢复回去。

错误信息:

Studio does not have write access to /opt/android-studio. Please run it by a privileged user to update

你是如何尝试更新的?你是如何安装的?PPA吗?你能以root身份运行Android Studio吗?例如 sudo /opt/android-studio 然后进行更新吗? - Mark Kirby
1我猜你把它复制到了/opt/目录下。我不建议将其保留在那里,这样你就不必担心权限问题了。最好使用umake来设置你的Android开发环境(http://www.reversiblean.com/install-android-studio-oracle-jdk/)。 - Gayan Weerakutti
@markkirby 我把它复制到那里,并使用了安装脚本studio.sh。我本来想用sudo运行,但studio.sh会重新开始安装过程。让我感到惊讶的是,我没有看到一个可直接启动程序的文件。也许我应该打开安装脚本gedit,看看可执行文件在哪里.. - wayneeusa
我建议将其中一个答案标记为正确答案。否则,对于未来查看此帖子的用户来说可能会产生误导 - 如果一年后仍未选择正确答案,则意味着两个答案都不正确。实际上,这两个答案都有效地解决了手头的问题。顺便说一句,我已经给你的问题点了赞 : ) - tony gil
1我经常遇到权限问题,因为我将/opt目录保持在默认的root权限下,而且我也不会把所有东西都放在我的主目录下;这样做也有自己的风险。安装脚本并没有足够的双重检查来引导您避免潜在的问题,而且sudo也无法解决所有问题。天哪,在2020年这种情况仍然存在。我放弃了对/opt目录进行权限限制,并且就此作罢。这让我有些担心,但对于非服务器系统来说,影响并不大。 - tgm1024--Monica was mistreated
6个回答

我将Android Studio目录的所有者从“root”更改为我的“user”帐户,然后它就正常工作了。以下是命令,其中“$USER”会自动更改为您当前活动的用户:
sudo chown -R $USER:$USER /opt/android-studio

2真的对我非常有效.. 我的10天搜索就此结束 - Ranjithkumar
14这样做是可行的,但是把所有文件和目录放在 /opt 的某个随机子目录下,并由一个随机用户拥有,是否存在一些不利之处呢?如果安装程序放在 /opt 目录下,可能意味着它是为多个用户设计的,因此可以预期系统上的其他用户也会运行该工作室。这是否会造成某种问题呢? - Yannick
1使用这个技巧来配置像Geany这样的PHP编辑器,将其设置为XAMPP安装的/opt/lampp/htdocs目录,以便在XAMPP服务器中进行编写和运行。希望对你有所帮助。 - Steer360
你真棒! - Tahir Yasin
4好观点 @Yannick,但是世界上有谁在他们的Ubuntu设置中有多个用户呢? - Bron Davies
@BronDavies ::) 真实故事!! - Blood-HaZaRd
那是一个非常简单而有效的解决方案。干得好! - Ajmal V Aliyar

你可以使用命令将目录从/opt移动到你的主目录:
sudo cp -r /opt/android-studio ~/

或者,为了给予权限,你必须使用chmod命令:
sudo chmod +w /opt/android-studio/some-file

为所有目录递归添加权限。
sudo chmod +w -R /opt/android-studio/some-file

看一下我的回答https://askubuntu.com/a/638799/150504,它解释了一些关于chmod以及如何使用的内容。

我需要指定具体的可执行文件来为文件夹设置权限吗?我尝试了studio.sh,但我不认为这是当我点击图标运行Android Studio时实际运行的文件。 - wayneeusa
对我没用。在创建目录时,尝试使用 sudo chmod +w -R /opt/android-sdk-linux 命令。 - david
首先,我们必须使用sudo从bin目录运行studio.sh,这样才能反映出写入权限。 - dev_ry

我将/opt/android-studio(和/opt/android-sdk)的组设置为“users”,并为该组添加了写权限。
在我的情况下,“users”组已经存在。但是作为提示:
sudo addgroup users
我必须将我的用户添加到“users”组中:
sudo adduser $USER users
然后设置目录的组:
sudo chown -R root:users /opt/android-studio
因为更新需要写入文件:
sudo chmod -R g+w /opt/android-studio
我曾经使用过这些指令,希望我没有忘记什么。
编辑:这样,文件不会被广泛访问,但仍可供选定的用户使用。

我在用Rubymine时遇到了类似的问题。
对我来说,执行下面这个命令可以解决问题:sudo chown -R $USER:$USER /opt/Rubymine
虽然这个方法对我也有效,但在修改系统文件夹的权限时可能存在一定的风险。最好的方式可能是以root用户身份运行一次安装程序以允许更新。例如:
sudo updatedb && sudo locate rubymine.sh
sudo /path/to/rubymine.sh 

我也是!但是当我尝试你的解决方案时,它又要求我再次输入许可信息,所以我不确定在那个时候该怎么办...再次输入吗?我不想弄乱我的许可条款... - mltsy
我并不完全确定我是否会将/opt文件夹视为系统文件夹,尽管它被"官方"归类为这样的。它与/usr、/etc等文件夹不属于同一类别。它的设计是作为一个中央存储库,用于安装应用程序,可供任何用户访问。在这个意义上,除非(依我个人经验)/opt被开放给所有用户,否则它的功能非常糟糕。这样做非常不安全。但是,在开发过程中,我已经对自己的系统斗争到了极限,并且以非常艰难和昂贵的方式得出结论:不这样做只会浪费我的时间。 - tgm1024--Monica was mistreated

我遇到了相同的错误。从终端运行以下命令解决了问题。
sudo chown -R $USER:$USER /opt/idea-IC-173.4548.28/

你执行命令时不需要在同一个目录下。

sudo chmod -R 777 your_android_studio_location_path/

例如(在我的Ubuntu 16.04中):
sudo chmod -R 777 /home/igor/Android/

7将文件权限掩码设置为777几乎总是一个糟糕的建议。-1 - David Foerster
这是个不好的建议,但目前它起了作用,所以我点赞了。 - david
2@david 777意味着任何人(包括通过互联网的任何人)都可以访问、修改和删除文件。"它起作用了"并不是打开这样一个对您系统构成重大漏洞的好借口。 - Mostafa Ahangarha
@david 把你的电脑砸成碎片,去商店买一台新的,然后在上面安装最新版本的Android Studio也可以“解决”问题,但这是错误的建议,不应该被点赞。关键是通常有多种方法来“解决”问题,其中一些方法是“错误”的,而另一些方法是“正确”的。这个答案几乎肯定是错误的方法。 - Jon Bentley
回复点赞1. 危险吗?是的。但是追踪应用程序之间的权限问题无休止地花费巨大,而我只是想开发一下。我会在服务器上这样做吗?不会。我是否已经吃过苦头,简单地将/opt目录对外开放?是的。这解决了一个非常昂贵的问题:浪费我的时间。风险绝对是值得的,纯粹主义在这里并没有帮助。天哪,我甚至在/opt目录中使用Intellij Idea和他们的插件时遇到了麻烦,当/opt目录的权限设置为默认时。 - tgm1024--Monica was mistreated