【问题标题】:OS X El Capitan - command line Operation not permitted although using sudoOS X El Capitan - 尽管使用 sudo,但不允许命令行操作
【发布时间】:2017-05-23 21:50:52
【问题描述】:

我正在尝试使用 mac 终端命令行创建符号链接,但出现“不允许操作”。见以下代码:

sudo ln -s ~/.composer/vendor/drush/drush/drush /usr/bin/drush
Password:
ln: /usr/bin/drush: Operation not permitted

感谢任何帮助!

【问题讨论】:

  • 也许superuser.com 是提出此类问题的更好地方。
  • 我认为您违反了 系统完整性保护 - 请查看 osxdaily.com/2015/10/05/disable-rootless-system-integrity-protection-mac...

标签: macos command-line terminal osx-elcapitan


【解决方案1】:

您的用户必须是 admin 组的成员,或者编辑 /etc/sudoers 文件才能使用 sudo。有关“man sudoers”的更多信息。

【讨论】:

    【解决方案2】:

    您与操作系统分开安装的命令属于/usr/local,因此您应该将链接放在/usr/local/bin,而不是/usr/bin。 /usr/local/bin 默认不存在,但它在默认的 PATH 中,所以如果你创建它,它会被自动识别:

    sudo mkdir /usr/local/bin
    sudo ln -s ~/.composer/vendor/drush/drush/drush /usr/local/bin/drush
    

    您还可以在 /usr/local/bin 上设置权限以允许 admin 组的成员在那里安装东西,这样您就可以添加不带 sudo 的链接:

    sudo mkdir /usr/local/bin
    sudo chgrp admin /usr/local/bin    # Assign the directory to the "admin" group
    sudo chmod 775 /usr/local/bin    # Grant the group write access
    ln -s ~/.composer/vendor/drush/drush/drush /usr/local/bin/drush    # No `sudo` needed!
    

    请注意,长期以来,将自定义/本地内容放在 /usr/local 中一直是标准约定,但从 El Capitan 开始,它由 System Integrity Protection 强制执行。可以禁用 SIP,但在大多数情况下(例如这种情况)最好遵循标准约定。

    【讨论】:

      猜你喜欢
      • 2016-12-30
      • 2016-05-05
      • 1970-01-01
      • 1970-01-01
      • 2015-12-29
      • 2016-01-11
      • 2016-02-20
      • 2016-10-24
      相关资源
      最近更新 更多