我们有几个运行 Samba 的 Linux 机器在“本地”使用,例如每个分支都有自己的 Samba 机器来存储和共享文件。
办公室经理需要能够为其分支机构添加和删除用户,并且需要成为此操作的 root (afaik),但我想限制他们发出任何其他 root 特权命令,因为我们经常搞砸他们的身边。
我的(有限的)linux 知识告诉我这是不可能的 - 你要么是 root,要么不是 - 但我想知道是否有办法以某种方式限制允许的命令。
下面是尝试使用 gnu screen 时发生的情况。从本质上讲,一切正常,直到我 su 作为另一个用户。然后我得到一个Cannot open your terminal '/dev/pts/7' - please check.错误
l413:~$ ssh sbird@example.com
sbird@example.com password:
sbird@example:~$ screen
[screen is terminating]
sbird@example:~$ su - gradplan
Password:
gradplan@example:~$ screen
Cannot open your terminal '/dev/pts/7' - please check.
gradplan@example:~$
Run Code Online (Sandbox Code Playgroud)
如何以 sbird、su 登录到 gradplan,并且仍然使用 screen?
我需要在 shell 脚本中以特定用户身份运行一些命令行。
我发现(至少)两种方式:
su user -c 'command'
runuser -l user -c 'command'
Run Code Online (Sandbox Code Playgroud)
这两个命令之间有显着区别吗?
什么是允许root使用 SSH在具有特权的远程服务器上自动执行命令或脚本的好的设置?
我知道(仅对某些选项含糊其辞)以下选项:
root( PermitRootLogin)直接登录(并可能强制进行密钥验证)。sudo不需要密码(NOPASSWD标志 in sudoers)和 TTY(requiretty标志)。sudo为允许在使用特定私钥进行身份验证时执行特定命令/脚本。root设置为并设置setuid 权限。但首先,我不确定这些的安全后果是什么。例如,我知道允许root登录是不受欢迎的。但我不确定,如果这不是一个过时的观点。据我所知,密码身份验证似乎是危险的。使用公钥认证,直接root登录可能没问题。对于某些选项,尤其是sudo,我什至不确定所需的配置。虽然我可以用谷歌搜索所有这些,但我可能会遗漏一些安全方面的考虑,这就是为什么我要征求专家的意见。
请注意,我要求进行服务器端设置。执行将由程序触发,而不是像 那样的工具ssh,所以我不是在寻找自动客户端身份验证之类的东西。
背景:活跃在sshStack Overflow 上的标记,这是经常出现的问题之一,是关于人们在尝试通过 SSH 在远程 Unix/Linux 上执行命令/脚本(甚至 SFTP 服务器)时尝试的各种黑客攻击服务器服务器使用root使用各种编程语言(C#、Java、VB.NET、Python 等)和 SSH 库(SSH.NET、JSch、Paramiko 等)的帐户。
人们尝试的实现通常尝试使用suor sudo。这些然后提示输入密码。因此,实现然后尝试将密码提供给命令输入。由于su和sudo经常需要终端仿真输入密码的提示,执行有权要求PTY。这反过来又会导致进一步的麻烦,因为与终端仿真的会话通常采用交互功能,如ANSI 转义码、分页等。足够的终端来避免分页。
举几个例子:
请解释一下,sudo su "username"与su "username"之间有什么区别
哪个特权更高?如果我使用sudo su "username"登录 root ,我只是一个命令的 root 用户?所以可能是脚本的开头工作正常,但其余部分却没有?那么在这种情况下,建议使用su "username",因为它具有更高的权限?请解释这两个命令之间的区别,谢谢。
使用 OS XI wan 能够以管理员身份登录计算机,但将自己设置为系统上的另一个用户,因此我正在使用他们的权限处理他们的配置文件,查看他们的所有设置、文件并在他们的用户上下文中运行程序。
我怎样才能让它发挥作用?我知道我可以用终端来做到这一点。例如,我可以以 root 身份登录终端,然后执行操作su username,现在我是username. 如果我们在 GUI 中也有这种能力,那么我们修复东西就会容易十倍。有任何想法吗?
我看到这su -使 shell 成为su --help. 我很好奇这个su命令和普通命令有什么区别。
我知道路径似乎有所不同,是否有任何其他差异,或者这几乎是唯一的不同?
我知道我们可以使用sudo命令以超级用户/其他用户的身份执行命令/脚本。但是是否有可能sudo用户不可用/删除该实用程序本身。如果是这样,sudo除了 之外还有什么替代方案su?另外,做sudo和su服务于相同的目的吗?
我正在使用 Ubuntu 12.04 LTS,并且我正在尝试使特定命令
dhclient
Run Code Online (Sandbox Code Playgroud)
不需要root权限。我做了一些研究,让我相信我可以解锁一个“su”用户,它不需要任何 root 权限,但恐怕我会以这种方式破坏某些东西。
也许我在问两个不同的问题:
不需要 root 权限的所有命令都驻留在我的操作系统中的什么位置?
我可以把这个命令移到那里吗?
任何方式都适用于我的情况,老实说,我什至不确定常规用户的命令是否与其他命令区分开来。