我注意到,如果我添加\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)
我怎样才能让它发挥作用?
使用sysvinit,这样的sudoers条目就足够了:
%webteam cms051=/sbin/service httpd *
Run Code Online (Sandbox Code Playgroud)
这将允许以下命令:
sudo service httpd statussudo 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;也许文件权限更改可能就足够了?
根据/etc/sudoers(Fedora 13) 中的评论:
## Syntax:
##
## user MACHINE=COMMANDS
##
## The COMMANDS section may have other options added to it.
Run Code Online (Sandbox Code Playgroud)
我的两个相关问题:
ALL=(ALL) ALL以下行中的含义是什么:
root ALL=(ALL) ALL
Run Code Online (Sandbox Code Playgroud)我已经测试了这两行,但我无法弄清楚它们在功能上有何不同:
superadm ALL=(ALL) ALL
superadm ALL=ALL
Run Code Online (Sandbox Code Playgroud)我已经阅读了手册,但语法规范很难遵循。我已经得出该(ALL) ALL部分是命令和标签规范,但我仍然无法理解它。
我正在尝试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) 我需要对 DAC、ACL 和 MAC 在 Linux 文件安全中扮演的不同角色进行一些澄清/确认/详细说明。
经过对文档的一些研究,这是我对堆栈的理解:
setfacl,getfacl用于ACL安装)显式地允许/拒绝访问的对象,那么就不需要进一步的处理。我错过了什么吗?是否存在情况并非如此?
将 Fedora 用于小型 Samba 和开发服务器。
如果我执行 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)
我会选择:
sudo命令中完成它。我运行以下命令来替换当前工作目录中所有文件中使用的术语:
$ 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字符串的文件的文件。
如何在不创建所有这些不必要的备份的情况下执行替换?
我没有访问netcat或nmap因此我试图使用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?
我运行以下命令以授予wheel组rwx对创建的新文件和子目录的权限:
[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 ×4
bash ×3
sudo ×3
acl ×2
files ×2
permissions ×2
sed ×2
awk ×1
devices ×1
grep ×1
monitoring ×1
networking ×1
rhel ×1
scripting ×1
selinux ×1
services ×1
shell-script ×1
systemd ×1
tail ×1
utilities ×1