标签: sudo

如何使用 xauth 通过其他用户在 linux 上运行图形应用程序

我的常规用户帐户是,比方说,user1。我为某些 x 应用程序创建了单独的 user2,我希望在以 user1 身份登录 x 时运行该应用程序,但以防止它对 user1 数据进行读/写访问的方式。我想我可以使用 xauth 和 sudo/su 从 user1 到 user2 来运行这个应用程序。我该怎么做呢?我不确定如何配置 xauth。

linux sudo

55
推荐指数
7
解决办法
20万
查看次数

为什么我必须用 visudo 编辑 /etc/sudoers?

我注意到 sudoers 文件和 cron 配置文件与 Linux 上的其他配置文件相比以一种特殊的方式运行。它们需要使用特殊的包装器而不是任何文本编辑器进行编辑。为什么是这样?

security linux unix configuration sudo

53
推荐指数
2
解决办法
8793
查看次数

Linux:为远程系统管理员设置

我不时收到奇怪的请求,要求在 Linux 系统上提供远程支持、故障排除和/或性能调整。

较大的公司通常已经制定了完善的程序来提供对供应商/供应商的远程访问,我只需要遵守这些程序。(不论结果好坏。)

另一方面,小公司和个人总是求助于我,让他们知道他们需要做什么来建立我。通常,他们的服务器直接连接到互联网,现有的安全措施包括其 Linux 发行版的默认设置。

我几乎总是需要 root 级别的访问权限,而为我设置访问权限的人不是专家系统管理员。我不想要他们的 root 密码,而且我也很确定我的行为不会是恶意的,但是我应该给出什么相当简单的说明:

  • 设置帐户并安全地交换凭据
  • 设置 root (sudo) 访问权限
  • 限制对我帐户的访问
  • 提供审计追踪

(是的,我知道并总是警告那些客户,一旦我拥有管理员访问权限,隐藏任何恶意操作都是微不足道的,但让我们假设我没有什么可隐藏的,并积极参与创建审计跟踪。)

以下步骤可以改进什么?


我目前的指令集:

设置帐户并安全地交换凭据

我提供了一个密码哈希,并要求我的帐户设置了该加密密码,因此我们不需要传输明文密码,我将是唯一知道密码的人,我们不会从可预测的弱密码。

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)

根据客户端的不同,我将通过单个堡垒主机路由我的所有 …

security linux audit root sudo

51
推荐指数
3
解决办法
2580
查看次数

sudo su - postgres 和 sudo -u postgres 有什么区别?

PostgreSQL 用户默认在 unix 套接字上进行对等身份验证,其中 unix 用户必须与 PostgreSQL 用户相同。所以人们经常使用susudo成为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)

如果没有领导sudosu版本可能会做出一些感觉,如果你是一个老平台没有sudo。但是为什么要在比史前时代更短的 UNIX 或 Linux 上使用sudo su

postgresql su shell sudo

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

su 不能在 mac os x 上工作?

我明白了:

Macintosh:8.4 TAmoyal$ su
Password:
su: Sorry
Macintosh:8.4 TAmoyal$
Run Code Online (Sandbox Code Playgroud)

我输入了用于 sudo 的密码。为什么这行不通?

谢谢!

mac-osx sudo

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

我如何通过 sshfs 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 安装了查理的主目录时,是否有任何方法可以做到这一点。

ssh sudo sshfs

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

为什么我可以使用 sudo vi 更新 root 拥有的文件,但不能使用 sudo echo "Thing" >> file 向其附加一行?

我想让正在从另一个网站自动迁移网站的脚本能够将 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 文件以保存并关闭它。

我错过了什么?

sudo redirection file-permissions

40
推荐指数
1
解决办法
3536
查看次数

如何使用 sudo 执行 bash 函数?

我在全局 bashrc 中定义了一个 bash 函数,它需要 root 权限才能工作。我如何使用 sudo 运行它,例如sudo myfunction. 默认情况下,它会给出一个错误:

须藤:myfunction:找不到命令

bash sudo

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

为什么 su 到 root 而不是以 root 身份登录?

我经常听到 su 到 root 比直接以 root 用户登录更好(当然人们也说使用 sudo 更好)。我从来没有真正理解为什么一个比另一个更好,洞察力?

linux login root sudo

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

如何通过 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 …

shell alias sudo

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