标签: sudo

如何在 Mac 上的 /usr/bin 中创建符号链接?

环境:OSX Sierra,Darwin Kernel Version 16.3.0

根本问题:我想在中央存储库中使用一堆 shell 脚本,它们有一个 #!/usr/bin/zsh。在我的 Mac 上,zsh 位于 /bin/zsh 中。

尝试的解决方案:我想创建一个符号链接

ln -s /bin/zsh /usr/bin/zsh
Run Code Online (Sandbox Code Playgroud)

我的用户帐户具有管理员权限,但我不是 root,我不想在这台 Mac 上启用 root 用户。因此我首先做了一个

sudo su
Run Code Online (Sandbox Code Playgroud)

获取具有 root 权限的 shell,然后执行ln命令。但是我仍然收到错误消息ln: /usr/bin/zsh: Operation not allowed

问题:

  • 为什么我会收到此错误消息?

  • 我需要做什么来创建链接?

  • 有没有更好的方法来实现我最初的目标?请注意,修复 #! 线不是一种选择。

sudo shell symbolic-link ln su

14
推荐指数
1
解决办法
2万
查看次数

登录到 vi,进行了更改,忘记先 sudo - 现在怎么办

我使用 vi 编辑器对 Ubuntu Linux 计算机上的配置文件进行了长时间的更改。不幸的是,我忘记先 sudo,所以现在我在编辑器中,但由于缺少权限而无法保存我的更改。我可以在该终端上追溯 sudo 用户,或者采取什么最佳行动方案?

linux sudo vi permissions

13
推荐指数
2
解决办法
3099
查看次数

抱歉,你必须有一个 tty 才能运行 sudo

我已经在Stack Overflow 中问过这个问题,但我被要求在这里发布。所以做同样的事情。

我使用我的java程序运行了这个命令-

sudo -u <username> -S pwd
Run Code Online (Sandbox Code Playgroud)

我得到了这个输出-

command=sudo -u <username> -S pwd
exitCode=1
sudo: sorry, you must have a tty to run sudo
Run Code Online (Sandbox Code Playgroud)

我尝试编辑 /etc/sudoers 但它已经包含

<username>       ALL=(ALL)       NOPASSWD: ALL
Run Code Online (Sandbox Code Playgroud)

然后,我了解到这可以通过在 /etc/sudoers 中注释掉以下代码来完成

# Defaults requiretty
Run Code Online (Sandbox Code Playgroud)

此外,默认情况下,当尝试以其他用户身份使用 执行命令时sudo,我们必须提供自己的密码。但这可以通过在 /etc/sudoers- 中进行以下更改来更改

Defaults targetpw
Run Code Online (Sandbox Code Playgroud)

我的问题是,是否可以在 Java 中执行我的上述命令而无需在任何地方进行任何更改,即通过默认设置

linux java sudo sudoers

13
推荐指数
1
解决办法
2万
查看次数

如何在 git post-receive hook 中以 root 身份执行命令

我最近刚刚在服务器上为作为 Upstart 服务运行的 Web 应用程序设置了一个远程 git repo。我想使用 post-receive 挂钩来触发更新应用程序代码所需的操作,然后停止然后重新启动 upstart 服务。这是我的 repo.git/hooks/post-receive 文件:

#!/bin/bash
export GIT_WORK_TREE=/var/www/current/myapp/
echo "Checking out new files and restarting app"
echo $USER
git checkout -f
sudo /sbin/stop myapp-service
sudo /sbin/start myapp-service
Run Code Online (Sandbox Code Playgroud)

根据我在这里读到的信息:askUbuntu.com,让 upstart 命令以 root 身份执行的方法是编辑我的 visudo 文件。这是相关的片段:

%sudo   ALL=(ALL:ALL) ALL
admin   ALL=(ALL:ALL) NOPASSWD: /sbin/start myapp-service /sbin/stop myapp-service
Run Code Online (Sandbox Code Playgroud)

但是当我 git push 到遥控器时,我得到如下输出:

$ git commit -am "test" && git push prod master
[master 59ffccd] test
 1 file changed, 1 insertion(+), 1 deletion(-)
Counting objects: …
Run Code Online (Sandbox Code Playgroud)

linux sudo bash git upstart

13
推荐指数
2
解决办法
1万
查看次数

如何告诉 sudo 使用 0022 的 umask 写入文件?

我最近升级到雪豹。我注意到一些由 MacPorts 编写的文件安装时权限错误——它们的 umask 为 0077。我想我已经缩小了问题的范围:

  1. port命令通过调用sudo
  2. 我的.bashrc文件指定了 0077 的 umask。
  3. 在旧版本的 OS X(10.5 及更低版本)上,sudo 使用root用户的 umask (0022);但是,现在它使用我的umask 0077。

反正有没有sudo使用旧的行为?现在,它是一种烦人,因为我必须使用sudo运行像简单的命令port installedport outdated等等。

(此问题在此MacPorts 票证中有更详细的描述。)

编辑

我发现了umasksudo的选项,并在其中/etc/sudoers添加了以下行:

Defaults umask=0022
Run Code Online (Sandbox Code Playgroud)

然而,这并没有起到期望的,因为实际所用的umasksudo工会与此默认掩码用户掩码的。为了重写的行为sudo的umask的,直接使用默认的(即不是工会的用户和默认sudo的面膜),可以添加以下内容:

Defaults umask_override
Run Code Online (Sandbox Code Playgroud)

sudo macports osx-snow-leopard permissions macos

12
推荐指数
2
解决办法
1万
查看次数

如何在没有“sudo”的情况下以 root 身份运行程序?

我在 OS X 上有一个只能以 root 身份运行的二进制程序。

我厌倦了sudo每次调用它并输入密码时都预先准备好,并且希望它在我定期调用它时自动以 root 身份运行,而不需要输入密码。

该程序的所有者是root,其组是wheel。

我试图chmod ug+s在执行时将 userid 和 groupid 设置为 root/wheel,但是当我在没有 sudo 的情况下运行程序时,它仍然抱怨它只能使用 sudo 或以 root 身份运行。

security root sudo setuid macos

12
推荐指数
2
解决办法
4万
查看次数

为什么没有 sudoers 文件:“/etc/sudoers: No such file or directory”?

我正在尝试添加一个新的管理员用户,但是:

# adduser username admin
  adduser: The user `username' does not exist.
# man sudoers
  No manual entry for sudoers
# less /etc/sudoers
  /etc/sudoers: No such file or directory
Run Code Online (Sandbox Code Playgroud)

系统是 Debian 7 (Wheezy) 我做错了什么?

debian sudo user-accounts administrator sudoers

12
推荐指数
1
解决办法
4万
查看次数

在 Bash 中在双引号和单引号中使用反引号时的区别

为什么以下两次执行的输出不同?(我的最终命令中的变量需要双引号)

$ sudo su -c "echo `cat /root/root_file`"
cat: /root/root_file: Permission denied
$ sudo su -c 'echo `cat /root/root_file`'
Yay, highly classified content!
Run Code Online (Sandbox Code Playgroud)

sudo bash permissions bash-scripting

12
推荐指数
2
解决办法
2190
查看次数

ssh + sudo + su 进入登录shell

我有几台机器,我定期 ssh 进入,只是为了使用sudo su我的会话的其余部分作为某个特殊用途的用户登录。一般工作流程是:

mymachine:~ me$ ssh me@othermachine
othermachine:~ me$ sudo su - specialuser # note: no password needed
othermachine:~ specialuser$ # do stuff
Run Code Online (Sandbox Code Playgroud)

我想把它归结为一个可以别名的单行代码,这样我就可以为每台机器设置一个别名,然后在一个命令中到达我需要的地方,而无需键入sudo su - specialuser样板。我也许me@othermachine可以sudo su在登录时设置为,但我想保持操作的灵活性,就像me我需要的那样。

注意:我无法控制othermachine或控制它的设置方式;这是我在受雇时采用的既定工作流程。)

我的第一个想法是

ssh me@othermachine "sudo su - specialuser"
Run Code Online (Sandbox Code Playgroud)

和这种工作,但它没有提示我,^C杀死它并将我注销,我认为其他各种事情也可能是错误的。

在阅读Run Remote ssh command with Full Login Shell 之后,我尝试了一些更奇特的东西,比如

ssh me@othermachine 'bash -l -c "sudo su - specialuser"'
Run Code Online (Sandbox Code Playgroud)

ssh me@othermachine 'bash -l -c …
Run Code Online (Sandbox Code Playgroud)

ssh sudo bash

12
推荐指数
1
解决办法
2万
查看次数

为什么我真的要禁用 root ssh 登录?

我总是读到我应该禁用 SSH 的 root 登录并使用具有 sudo 的用户登录。但两者之间的区别在哪里:

ssh root@vps 
Run Code Online (Sandbox Code Playgroud)

ssh myuser@vps
sudo -i 
Run Code Online (Sandbox Code Playgroud)

我没有对我的服务器的物理访问权限,并且需要以某种方式进行每次远程访问的 root 权限。这里唯一的优势是用户名未知吗?


安全提示:在 Linux 上禁用 Root SSH 登录

您可以在服务器上打开的最大安全漏洞之一是允许通过 ssh 直接以 root 身份登录,因为任何破解者都可以尝试暴力破解您的 root 密码,如果他们能找出您的密码,则有可能访问您的系统。

最好有一个您经常使用的单独帐户,并在必要时简单地 sudo 到 root。

linux security ssh root sudo

12
推荐指数
1
解决办法
4477
查看次数