标签: su

“sudo su -”被认为是一种不好的做法吗?

背景

我知道其中的差别之间su -sudo su -以及sudo <command>

  • su - - 将用户切换到 root,需要 root 密码
  • sudo su - - 将用户切换到 root,只需要当前用户的密码
  • sudo <command>- 仅授予特定命令的 root 访问权限;只需要当前用户的密码

我的问题是sudo su -在生产环境中使用是否是一种安全的做法。

一些想法:

  1. sudo su -通过根据个人用户密码访问 root 帐户,似乎允许会带来安全风险。当然,这可以通过执行严格的密码策略来缓解。我认为su -没有更好的办法,因为它需要管理员共享实际的 root 密码。

  2. 允许用户完全切换到 root 帐户使得跟踪谁对系统进行了更改变得更加困难。我在日常工作中看到过多个用户被授予sudo su -访问权限的情况。用户登录系统后做的第一件事是运行sudo su -,然后再开始工作。然后,有一天发生了一些事情,并且无法追踪谁跑到rm -rf *了错误的目录中。

问题

鉴于上述问题,允许用户使用sudo su -甚至su -根本不使用是否是一个好主意?

管理员是否有任何理由为sudo su -su -代替 …

linux unix su sudo

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

在 shell 脚本中使用 su

我正在自动化部署过程,我希望能够在我的机器上调用一个 .sh 文件,让它完成我的构建并将 .zip 上传到服务器,然后在服务器上做一些事情。我需要做的一件事要求我是 root。所以,我想做的是:

ssh user@172.1.1.101 <<END_SCRIPT
su - 
#password... somehow...
#stop jboss
service server_instance stop
#a bunch of stuff here
#all done!
exit
END_SCRIPT
Run Code Online (Sandbox Code Playgroud)

这甚至可能吗?

su ssh bash sudo

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

在机器上禁用 su

有没有办法只允许指定用户使用 su(例如对 sudo 使用 visudo)。

这样做的原因是我想为我的 root 帐户保留一个简单(弱)密码,并且拥有 su/sudo 只能使用 pub/private 密钥登录到机器的帐户。

然后,所有其他帐户将无法以 root 或可以 su 的帐户身份 su。

su sudo

10
推荐指数
3
解决办法
4万
查看次数

通过 ssh 执行 su -c

我正在尝试通过 SSH 检查服务器的 BIOS 版本,该命令需要 root 权限:

ssh remote-server su -c dmidecode
Run Code Online (Sandbox Code Playgroud)

但这当然会因错误而失败:

标准输入必须是 tty

我如何使这项工作?我无法使用 sudo,当我尝试以 root@remote-server 身份登录时,它不会接受我用于“su”命令的密码。我正在使用 RedHat Enterprise Linux 4。

unix su ssh

10
推荐指数
1
解决办法
3万
查看次数

使用特权 Docker 容器进行内核调优

我正在构建一个容器来调整负载均衡器的内核设置。我更喜欢使用单个特权容器将这些更改部署到映像中的主机。例如:

docker run --rm --privileged ubuntu:latest sysctl -w net.core.somaxconn=65535
Run Code Online (Sandbox Code Playgroud)

在测试中,更改生效但仅适用于该容器。我的印象是,使用完全特权的容器更改 /proc 实际上会更改底层操作系统。

$docker run --rm --privileged ubuntu:latest \
    sysctl -w net.core.somaxconn=65535
net.core.somaxconn = 65535

$ docker run --rm --privileged ubuntu:latest \
    /bin/bash -c "sysctl -a | grep somaxconn"
net.core.somaxconn = 128
Run Code Online (Sandbox Code Playgroud)

这是特权容器应该如何工作吗?

我只是在做一些愚蠢的事情吗?

做出持久改变的最佳方法是什么?

版本信息:

Client version: 1.4.1
Client API version: 1.16
Go version (client): go1.3.3
Git commit (client): 5bc2ff8
OS/Arch (client): linux/amd64
Server version: 1.4.1
Server API version: 1.16
Go version (server): go1.3.3
Git commit (server): 5bc2ff8
Run Code Online (Sandbox Code Playgroud)

挂载 /proc …

linux su sysctl docker

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

应该在服务器管理中使用 sudo 还是只使用 su root ?

哪种方法更好?

对于桌面使用,似乎 sudo 更好,因为:

  • 作为普通用户,我可以拥有更一致的历史记录
  • 不需要记住两个密码,当我不经常做管理工作时尤其如此。
  • 安装时无需创建额外的 root 帐户。

但是在服务器管理方面呢?

在服务器中,您通常已经创建了一个 root 帐户,并且您可能经常进行管理工作。所以 sudo 的优势似乎不再成立。

更重要的是,在大多数发行版中,在命令行上配置 su 很容易,只需将用户添加到轮组中即可。(你甚至可以-G wheeluseradding时通过。)因此配置 su 可以很容易地自动化到 shell 脚本中。

但是对于sudo?您需要先添加用户,然后以visudo交互方式运行。这很糟糕,因为您无法将其自动化为 shell 脚本。

(嗯,你可以。例如,

echo '%wheel    ALL=(ALL)   ALL' >> /tmp/sudoers.tmp
cp /etc/sudoers /etc/sudoers.old
visudo -c -f /tmp/sudoers.tmp &&  mv /tmp/sudoers.tmp /etc/sudoers
Run Code Online (Sandbox Code Playgroud)

但至少没有那么容易。)

那么你有什么看法呢?对于服务器环境,您更喜欢 sudo 还是 su root?

unix su root sudo

9
推荐指数
1
解决办法
3423
查看次数

我可以代表另一个用户 sudo 命令吗?

我正在使用 drupal 和 Aegir。Aegir 自动化了许多站点创建任务。Aegir 控制了 Apache,我以 root 身份登录,我想重新启动 Apache 服务器,但我想代表 Aegirs 执行此操作。不幸的是,我不知道 Aegir 密码,所以基本上我想知道如何以其他用户身份执行某些操作。

su password users sudo

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

su: /bin/bash: 资源暂时不可用

无法将用户切换到 postgres。

postgres 用户的 Ulimit 设置设置了合理的限制。我们没有达到最大值。

/var/log/messages 中没有错误。

错误:

BETA -bash-4.2# sudo su - postgres
su: /bin/bash: Resource temporarily unavailable
Run Code Online (Sandbox Code Playgroud)

设置:

BETA -bash-4.2# ps -auxww | grep -i postgr | wc -l
503
BETA -bash-4.2# lsof | grep -i postgr | wc -l
35225
BETA -bash-4.2# 
Run Code Online (Sandbox Code Playgroud)

postgres 进程的 Ulimit。

BETA -bash-4.2# cat /proc/26230/limits 
Limit                     Soft Limit           Hard Limit           Units     
Max cpu time              unlimited            unlimited            seconds   
Max file size             unlimited            unlimited            bytes     
Max data size             unlimited            unlimited            bytes     
Max stack size …
Run Code Online (Sandbox Code Playgroud)

postgresql linux unix su sudo

8
推荐指数
1
解决办法
5万
查看次数

设置没有密码的用户

我希望能够让su另一个用户以减少的权限运行脚本。不幸的是,我每次都必须输入密码,有没有办法在不需要密码提示的情况下创建用户?

ubuntu useradd su

7
推荐指数
1
解决办法
341
查看次数

“sudo su -”和“sudo -i”有什么区别?

可能的重复:
sudo -i 和 sudo su - 有什么区别

我知道这两个命令都会导致获得 root-shell。但也有一些区别。在某些服务器上,例如提示不同:

nomike@testerver:~> sudo -i
root@testerver:~> logout
nomike@testerver:~> sudo su -
[root@testerver ~]# 
Run Code Online (Sandbox Code Playgroud)

所以我猜“.bashrc”、“.bash_profile”和“.profile”的处理方式有些不同。

一个会调用登录 shell 而另一个不调用吗?

linux solaris su bash sudo

6
推荐指数
1
解决办法
5280
查看次数

标签 统计

su ×10

sudo ×7

linux ×4

unix ×4

bash ×2

ssh ×2

docker ×1

password ×1

postgresql ×1

root ×1

solaris ×1

sysctl ×1

ubuntu ×1

useradd ×1

users ×1