小编Bel*_*dez的帖子

如何使用 sed 替换多行字符串?

我注意到,如果我添加\n到一个模式来替换 using sed,它不匹配。例子:

$ cat > alpha.txt
This is
a test
Please do not
be alarmed

$ sed -i'.original' 's/a test\nPlease do not/not a test\nBe/' alpha.txt

$ diff alpha.txt{,.original}

$ # No differences printed out
Run Code Online (Sandbox Code Playgroud)

我怎样才能让它发挥作用?

sed utilities regular-expression

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

我们如何允许非 root 用户控制 systemd 服务?

使用sysvinit,这样的sudoers条目就足够了:

%webteam cms051=/sbin/service httpd *
Run Code Online (Sandbox Code Playgroud)

这将允许以下命令:

  • sudo service httpd status
  • sudo service httpd restart

现在,使用systemd,服务名称是最后一个参数。即,服务重启将通过以下方式完成:

systemctl restart httpd.service
Run Code Online (Sandbox Code Playgroud)

自然,我认为定义命令systemctl * httpd.service会起作用,但这会允许类似systemctl restart puppet.service httpd.service的效果不是预期的。

考虑到这一点,那么允许非 root 用户控制systemd服务的最佳方式是什么?这不需要是sudoers;也许文件权限更改可能就足够了?

sudo systemd not-root-user services

91
推荐指数
5
解决办法
13万
查看次数

添加用户的正确 sudoers 语法是什么?

根据/etc/sudoers(Fedora 13) 中的评论:

## Syntax:
##
##    user  MACHINE=COMMANDS
##
## The COMMANDS section may have other options added to it.
Run Code Online (Sandbox Code Playgroud)

我的两个相关问题:

  1. ALL=(ALL) ALL以下行中的含义是什么:

    root  ALL=(ALL)   ALL
    
    Run Code Online (Sandbox Code Playgroud)
  2. 我已经测试了这两行,但我无法弄清楚它们在功能上有何不同:

    superadm    ALL=(ALL)    ALL
    superadm    ALL=ALL
    
    Run Code Online (Sandbox Code Playgroud)

我已经阅读了手册,但语法规范很难遵循。我已经得出该(ALL) ALL部分是命令和标签规范,但我仍然无法理解它。

sudo

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

从 grep 到 awk 的管道不起作用

我正在尝试grep进行tail文件日志并n从一行中获取第th 个单词。示例文件:

$ cat > test.txt <<EOL
Beam goes blah
John goes hey
Beam goes what?
John goes forget it
Beam goes okay
Beam goes bye
EOL
^C
Run Code Online (Sandbox Code Playgroud)

现在,如果我做一个tail

$ tail -f test.txt
Beam goes blah
John goes hey
Beam goes what?
John goes forget it
Beam goes okay
Beam goes bye
^C
Run Code Online (Sandbox Code Playgroud)

如果我grep认为tail

$ tail -f test.txt | grep Beam
Beam goes blah
Beam goes what?
Beam …
Run Code Online (Sandbox Code Playgroud)

grep bash rhel awk tail

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

DAC(文件权限)、ACL 和 MAC(SELinux)在 Linux 文件安全中扮演什么角色?

我需要对 DAC、ACL 和 MAC 在 Linux 文件安全中扮演的不同角色进行一些澄清/确认/详细说明。

经过对文档的一些研究,这是我对堆栈的理解:

  1. SELinux 必须允许您访问文件对象。
  2. 如果该文件的访问控制列表(例如,setfaclgetfacl用于ACL安装)显式地允许/拒绝访问的对象,那么就不需要进一步的处理。
  3. 否则,这取决于文件的权限(rwxrwxrwx DAC 模型)。

我错过了什么吗?是否存在情况并非如此?

linux acl permissions selinux

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

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

有没有办法告诉 sudo 将我的用户名设置为创建的文件的所有者而不是 root?

如果我执行 a sudo cp /etc/foo.txt ~/foo.txt,则以root所有者身份创建新文件。

现在,除了使用最后两个命令(ls为了阐明用例)之外,我看不出其他办法:

belmin@server1$ ls /etc/foo.txt
>  -rw------- 1 root root 3848 Mar  6 20:35 /etc/foo.txt
>
belmin@server1$ sudo cp /etc/foo.txt ~/foo.txt
belmin@server1$ sudo chown belmin: $_
Run Code Online (Sandbox Code Playgroud)

我会选择:

  1. 在一个sudo命令中完成它。
  2. 不必指定我当前的用户(也许使用变量?)。

bash sudo files

20
推荐指数
3
解决办法
4984
查看次数

如何执行仅创建已更改文件备份的 sed 就地替换?

我运行以下命令来替换当前工作目录中所有文件中使用的术语:

$ find . -type f -print0 | xargs -0 sed -i'.bup' -e's/Ms. Johnson/Mrs. Melbin/g'
Run Code Online (Sandbox Code Playgroud)

这执行了单词替换,但它也创建.bup了从未有Ms. Johnson字符串的文件的文件。

如何在不创建所有这些不必要的备份的情况下执行替换?

linux scripting sed shell-script

14
推荐指数
3
解决办法
5709
查看次数

使用 bash 的 `/dev/udp`,我怎么知道端口是否打开?

我没有访问netcatnmap因此我试图使用bash/dev/udp/特殊文件到测试端口。

我可以做这样的事情:

echo "" > /dev/udp/example.com/8000
Run Code Online (Sandbox Code Playgroud)

但在使用 UDP 时$?总是如此0。我假设那是因为那是echo ""命令的返回值正确吗?

我基本上是在尝试复制我能做的事情,nmap并且netcat

nmap -sU -p 8000 example.com | grep open >/dev/null && echo 'open'
nc -z -u example.com 8000 && echo 'open'
Run Code Online (Sandbox Code Playgroud)

我将如何做到这一点/dev/udp

networking bash devices

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

ACL 如何计算文件的有效权限?

我运行以下命令以授予wheelrwx对创建的新文件和子目录的权限:

[belmin@server1]$ ls -la
total 24
drwxr-sr-x+   2 guards guards  4096 Aug 27 15:30 .
drwxr-xr-x  104 root   root   12288 Aug 27 15:19 ..

[belmin@server1]$ sudo setfacl -m d:g:wheel:rwX .

[belmin@server1]$ getfacl .
# file: .
# owner: guards
# group: guards
# flags: -s-
user::rwx
group::r-x
group:wheel:rwx
other::r-x
default:user::rwx
default:group::r-x
default:group:wheel:rwx
default:mask::rwx
default:other::r-x
Run Code Online (Sandbox Code Playgroud)

但是,当我以 root 身份创建文件时,我并不完全清楚effective权限是如何计算的:

[belmin@server1]$ sudo touch foo

[belmin@server1]$ getfacl foo
# file: foo
# owner: root
# group: guards
user::rw- …
Run Code Online (Sandbox Code Playgroud)

linux acl permissions files

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