小编Tob*_*ght的帖子

如何保护 sudo 驱动的脚本

以非特权用户身份执行 root 命令的解决方案 - sudo 'ing 脚本- 很容易导致安全漏洞和意外行为和结果的可能性(这对于任何其他解决方案也是如此,例如带有 的二进制包装器setuid);

很明显,脚本是使用 visudo 添加的,就像这样

www-data ALL=(ALL) NOPASSWD: /usr/local/sbin/mycommand
Run Code Online (Sandbox Code Playgroud)
  • 应该只能由 root 用户可读可写可执行- 这既是所有者又是组 ( chown root:root mycommand; chmod 700 mycommand)
  • 应该有它的父目录的所有权 root:root755模式
  • 应验证输入- 参数和标准输入 - 并拒绝并中止提供的任何无效/意外数据的执行
  • 应该使用绝对而不是相对路径/别名(?)
  • Defaults env_resetin/etc/sudoers应该设置(?这里需要帮助)

还可以做些什么来保护 sudo 驱动的脚本?

security sudo shell-script

7
推荐指数
2
解决办法
5172
查看次数

用 sed 在行尾附加单词

我在文件中有如下代码块:

BalancerMember http://snode1:80 min=1 max=1000 loadfactor=1  timeout=30 keepalive=on route=tc_snode1
BalancerMember http://snode2:80 min=1 max=1000 loadfactor=1  timeout=30 keepalive=on route=tc_snode2
Run Code Online (Sandbox Code Playgroud)

我想搜索所有包含tc_关键字的行并status=D在这些行的末尾添加。所以,上面的条目会变成这样

BalancerMember http://snode1:80 min=1 max=1000 loadfactor=1  timeout=30 keepalive=on route=tc_snode1 status=D
BalancerMember http://snode2:80 min=1 max=1000 loadfactor=1  timeout=30 keepalive=on route=tc_snode2 status=D
Run Code Online (Sandbox Code Playgroud)

我正在使用以下命令来实现这一点:

BalancerMember http://snode1:80 min=1 max=1000 loadfactor=1  timeout=30 keepalive=on route=tc_snode1
BalancerMember http://snode2:80 min=1 max=1000 loadfactor=1  timeout=30 keepalive=on route=tc_snode2
Run Code Online (Sandbox Code Playgroud)

但我可以看到status=D正在换行。我不想为此换行。它应该附加一个 ' '(空格)。

grep sed text-processing

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

Linux Mint 音量按钮超过 100%

在最新的 Linux Mint 上,在声音设置中,我们可以将音量从 100% 增加到 150%。有时这在遇到非常安静的视频时会很有用。

我的键盘热键被配置为增加和减少音量,但增加最多只能达到 100%。有什么办法可以让它达到 150%?

audio linux-mint cinnamon

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

我可以给两个键盘不同的布局吗?

我更喜欢 Dvorak 布局,所以我有一个很好的 USB Das 键盘,我已经为它分配了一个适合我在虚拟控制台和 X11 中的布局。我使用loadkeysinstall-keymap安排它从启动开始生效,我对此感到非常满意。

然而,我的大多数同事更喜欢 Qwerty 布局,这是结对编程的障碍。我确实有一些可用的 USB 键盘可供选择以完成此任务,但它们在插入时都会采用我的 Dvorak 布局。

有没有办法告诉 udev(甚至只是 X11)为我的附加键盘使用 Qwerty 布局?它们具有不同的 USB 供应商和设备标识符,我可以用来区分它们。

我的系统是 Debian Testing,udev 版本为 232。当我在磁盘故障后重新安装时,它感染了 systemd,所以我习惯的标准(SysV 风格)方法将不起作用。

类似的问题每个键盘的不同键盘布局对我没有任何帮助。

linux debian keyboard-layout

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

htop CPU% 在 ~100% 但条形图显示每个核心低得多

我正在使用 Debian 9 来托管游戏服务器。具体来说,我主持了《多人版饥荒》游戏的大约 10 个实例。

前几天我注意到其中一个实例(获得大量玩家活动)表现出性能问题。当我加载时,htop我看到CPU%正在报告,101%但顶部的条形图没有显示远高于 50% 的任何核心。

在此处输入图片说明

据我所知,CPU%显示了一个进程使用每个内核的百分比总和,所以超过 100% 是正常的,没有超过 50% 的内核也是正常的(这只是意味着该进程是多线程的),但是我相信Don't Starve Together 几乎完全是一个单线程应用程序(用于网络的多线程最少)。

顶部的条形图之一应该至少超过 90%,但没有。为什么顶部的条形图之一不超过 90%?我的处理器是 i7-6700K(4 核 8 线程 -规格表

htop cpu-usage

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

如何选择使用哪种显卡?

我有一台带有两个视频输出(均为 nVidia)的台式机(运行 Ubuntu 13.10):

  1. 一个集成显卡,我想用于我的桌面显示器,以及
  2. 一个 PCI 显卡,我想用于基于 CUDA 的任务。

有没有办法选择哪个用于 X 服务器,哪个用于 CUDA,并使其永久化?

linux graphics

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

在没有 udev 守护程序的系统上生成 /dev/disk/-by-path/ 名称的命令

在大多数 Linux 系统上,udev 通常在

/dev/disk/by-uuid/
/dev/disk/by-path/
Run Code Online (Sandbox Code Playgroud)

该点到实际设备节点(/dev/sda/dev/sdb等)。

我的系统上没有 udev,我想手动生成这些符号链接。我知道我可以blkid用来生成by-uuid名称。

但是如何在不使用 udev 的情况下by-path为给定磁盘(例如/dev/sda1)生成名称?

具体来说,我正在寻找一种方法来查找我的哪个磁盘是通过 iSCSI 从 host 连接的磁盘10.1.14.22。它可能是sdb,或者sdc可能是其他,因为我同时连接到几个(不同的)iSCSI 主机。

devices block-device disk

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

未指定端口时奇怪的 telnet 客户端行为

在 Debian Jessie 上,使用 php5.6 和 telnet 版本:

$ dpkg -l | grep telnet
ii  telnet                         0.17-36                      amd64        The telnet client
Run Code Online (Sandbox Code Playgroud)

我编写了一个 php 脚本来侦听端口 23 以获取传入的 tcp 连接。为了测试,我 telnet 进入它,但是我注意到它实际上在我像这样 telnet 进入它时有所不同:

$ telnet localhost 23
Run Code Online (Sandbox Code Playgroud)

vs 像这样:

$ telnet localhost
Run Code Online (Sandbox Code Playgroud)

但根据man telnet,它应该没有区别:

port 指定要联系的端口号或服务名称。如果未指定,则使用 telnet 端口 (23)。

如果我不指定端口,那么线路上会出现一些奇怪的噪音。或者也许它不是噪音?但是如果我确实指定了端口,那么我就不会在线路上听到这种噪音。噪声是以下一组 ascii 字符:

<FF><FD><03><FF><FB><18><FF><FB><1F><FF><FB><20><FF><FB><21><FF><FB><22><FF><FB><27><FF><FD><05>
Run Code Online (Sandbox Code Playgroud)

以防万一这是由于我的服务器端代码中的错误造成的,这里有一个脚本的缩减版本,它确实表现出了噪音(尽管我认为代码中没有任何错误,我只是包括这是因为肯定有人会问):

$ dpkg -l | grep telnet
ii  telnet                         0.17-36                      amd64        The telnet client
Run Code Online (Sandbox Code Playgroud)

脚本的输出(像这样连接:)telnet localhost是:

waiting for a client to connect...
got a …
Run Code Online (Sandbox Code Playgroud)

debian telnet php5

6
推荐指数
2
解决办法
1592
查看次数

管道 globs 到 ls

文件内容filelist

/some/path/*.txt
/other/path/*.dat
/third/path/example.doc
Run Code Online (Sandbox Code Playgroud)

我想列出这些文件,所以我这样做:

cat filelist | xargs ls
Run Code Online (Sandbox Code Playgroud)

但我没有扩大这些球体,而是得到:

ls: cannot access '/some/path/*.txt': No such file or directory  
ls: cannot access '/other/path/*.dat': No such file or directory  
/third/path/example.doc
Run Code Online (Sandbox Code Playgroud)

linux ls bash pipe cat

6
推荐指数
2
解决办法
516
查看次数

如何卸载软件包的一部分?

我已经安装了BSD 游戏包。许多游戏都很糟糕或损坏,所以我希望卸载其中一些而不卸载其他游戏。有没有简单的方法可以做到这一点?目前,我正在sudo rmusr/share/applications/bsdgames和获取它们usr/games/

ubuntu apt package-management uninstall

6
推荐指数
2
解决办法
1040
查看次数