我的常规用户帐户是,比方说,user1。我为某些 x 应用程序创建了单独的 user2,我希望在以 user1 身份登录 x 时运行该应用程序,但以防止它对 user1 数据进行读/写访问的方式。我想我可以使用 xauth 和 sudo/su 从 user1 到 user2 来运行这个应用程序。我该怎么做呢?我不确定如何配置 xauth。
我注意到 sudoers 文件和 cron 配置文件与 Linux 上的其他配置文件相比以一种特殊的方式运行。它们需要使用特殊的包装器而不是任何文本编辑器进行编辑。为什么是这样?
我不时收到奇怪的请求,要求在 Linux 系统上提供远程支持、故障排除和/或性能调整。
较大的公司通常已经制定了完善的程序来提供对供应商/供应商的远程访问,我只需要遵守这些程序。(不论结果好坏。)
另一方面,小公司和个人总是求助于我,让他们知道他们需要做什么来建立我。通常,他们的服务器直接连接到互联网,现有的安全措施包括其 Linux 发行版的默认设置。
我几乎总是需要 root 级别的访问权限,而为我设置访问权限的人不是专家系统管理员。我不想要他们的 root 密码,而且我也很确定我的行为不会是恶意的,但是我应该给出什么相当简单的说明:
(是的,我知道并总是警告那些客户,一旦我拥有管理员访问权限,隐藏任何恶意操作都是微不足道的,但让我们假设我没有什么可隐藏的,并积极参与创建审计跟踪。)
以下步骤可以改进什么?
设置帐户并安全地交换凭据
我提供了一个密码哈希,并要求我的帐户设置了该加密密码,因此我们不需要传输明文密码,我将是唯一知道密码的人,我们不会从可预测的弱密码。
sudo useradd -p '$1$********' hbruijn
Run Code Online (Sandbox Code Playgroud)
我提供了一个公钥 SSH(每个客户端的特定密钥对)并要求他们使用该密钥设置我的帐户:
sudo su - hbruijn
mkdir -p ~/.ssh
chmod 0700 ~/.ssh
echo 'from="10.80.0.0/14,192.168.1.2" ssh-rsa AAAAB3NzaC1y***...***== hbruijn@serverfault' >> ~/.ssh/authorized_keys
chmod 0600 ~/.ssh/authorized_keys
Run Code Online (Sandbox Code Playgroud)
设置 root (sudo) 访问权限
我要求客户使用sudo sudoedit或使用他们最喜欢的编辑器为我设置 sudo 并附加到/etc/sudoers:
hbruijn ALL=(ALL) ALL
Run Code Online (Sandbox Code Playgroud)
限制对我帐户的访问
通常,客户端仍然允许基于密码的登录,我要求他们添加以下两行以/etc/ssh/sshd_config至少将我的帐户限制为仅使用 SSH 密钥:
Match user hbruijn
PasswordAuthentication no
Run Code Online (Sandbox Code Playgroud)
根据客户端的不同,我将通过单个堡垒主机路由我的所有 …
PostgreSQL 用户默认在 unix 套接字上进行对等身份验证,其中 unix 用户必须与 PostgreSQL 用户相同。所以人们经常使用su或sudo成为postgres超级用户。
我经常看到人们使用以下结构:
sudo su - postgres
Run Code Online (Sandbox Code Playgroud)
而不是
sudo -u postgres -i
Run Code Online (Sandbox Code Playgroud)
我想知道为什么。同样,我见过:
sudo su - postgres -c psql
Run Code Online (Sandbox Code Playgroud)
代替
sudo -u postgres psql
Run Code Online (Sandbox Code Playgroud)
如果没有领导sudo的su版本可能会做出一些感觉,如果你是一个老平台没有sudo。但是为什么要在比史前时代更短的 UNIX 或 Linux 上使用sudo su?
我明白了:
Macintosh:8.4 TAmoyal$ su
Password:
su: Sorry
Macintosh:8.4 TAmoyal$
Run Code Online (Sandbox Code Playgroud)
我输入了用于 sudo 的密码。为什么这行不通?
谢谢!
在我的本地主机上,alpha我有一个foo通过 sshfs 映射到主机的目录,bravo如下所示:
$ sshfs charlie@bravo:/home/charlie ~/foo
Run Code Online (Sandbox Code Playgroud)
但是,在主机上bravo还有另一个用户 delta,我想sudo /bin/su成为它,以便我可以在bravo:/home/delta. delta可能无法通过 ssh 登录;由于我无法改变的原因,一旦你在机器上,你只能 sudo 到 delta。
通常我会 ssh 进入bravo,然后 sudo 到 delta,但我想知道当我通过 ssh 安装了查理的主目录时,是否有任何方法可以做到这一点。
我想让正在从另一个网站自动迁移网站的脚本能够将 Includes 附加到 /etc/httpd/conf.d/vhosts.conf 文件。
但是,当我尝试使用 echo 将字符串附加到文件末尾时,我得到了这个:
$ sudo echo "Include thing" >> /etc/httpd/conf.d/vhosts.conf
-bash: /etc/httpd/conf.d/vhosts.conf: Permission denied
Run Code Online (Sandbox Code Playgroud)
但我可以 vi /etc/httpd/conf.d/vhosts.conf,添加该行和 :wq 文件以保存并关闭它。
我错过了什么?
我在全局 bashrc 中定义了一个 bash 函数,它需要 root 权限才能工作。我如何使用 sudo 运行它,例如sudo myfunction. 默认情况下,它会给出一个错误:
须藤:myfunction:找不到命令
我经常听到 su 到 root 比直接以 root 用户登录更好(当然人们也说使用 sudo 更好)。我从来没有真正理解为什么一个比另一个更好,洞察力?
我有一个别名,可以将一些参数传递给我经常使用的工具。有时我以自己的身份运行,有时在 sudo 下运行。不幸的是,当然,sudo 无法识别别名。
有没有人有关于如何传递别名的提示?
在这种情况下,我在调试时有很多 perl 选项:
alias pd='perl -Ilib -I/home/myuser/lib -d'
Run Code Online (Sandbox Code Playgroud)
有时,我必须以 root 身份调试我的工具,所以,而不是运行:
pd ./mytool --some params
Run Code Online (Sandbox Code Playgroud)
我需要在 sudo 下运行它。我尝试了很多方法:
sudo eval $(alias pd)\; pd ./mytool --some params
sudo $(alias pd)\; pd ./mytool --some params
sudo bash -c "$(alias pd)\; pd ./mytool --some params"
sudo bash -c "$(alias pd); pd ./mytool --some params"
sudo bash -c eval\ "$(alias pd)\; pd ./mytool --some params"
sudo bash -c eval\ "'$(alias pd)\; pd ./mytool --some params'"
Run Code Online (Sandbox Code Playgroud)
我希望有一个不错的、简洁的方法来确保我当前的 pd 别名被充分使用(以防我以后需要调整它),尽管我的一些尝试根本不简洁。我最后的手段是将它放入一个 shell …