带有行终止符(Mac 样式)的 ASCII 文本文件CR
需要转换为带有CRLF
行终止符(DOS/Windows 样式)。
搜索CR
后面没有LF
,并将其替换CR
为CRLF
。因此重复的命令不会破坏文件(带有CRCRLF
)。
我已经尝试过unix2dos
,但转换失败。
如何在没有 Python / vim 的情况下在基本 Arch Linux 控制台上转换此文件?
带有行终止符(Mac 样式)的 ASCII 文本文件CR
需要转换为带有CRLF
行终止符(DOS/Windows 样式)。
搜索CR
后面没有LF
,并将其替换CR
为CRLF
。因此重复的命令不会破坏文件(带有CRCRLF
)。
我已经尝试过unix2dos
,但转换失败。
如何在没有 Python / vim 的情况下在基本 Arch Linux 控制台上转换此文件?
由于 OpenSSH 8.8 版 ssh-rsa 在 OpenSSH sshd 中被禁用:
$ ssh-audit 1.2.3.4
# algorithm recommendations (for OpenSSH 8.8)
...
(rec) +ssh-rsa -- key algorithm to append
...
Archlinux 论坛主题“最新的 sshd 不接受密钥算法”建议:
$ grep PubkeyA /etc/ssh/sshd_config
#PubkeyAuthentication yes
PubkeyAcceptedKeyTypes=+ssh-rsa
尽管该配置片段未在 5.10.74-1-raspberrypi4-ARCH 上的 openssh-8.8p1-1 中启用 ssh-rsa,即使在重新启动sshd
.
如何强制 OpenSSH sshd 版本 8.8 启用 ssh-rsa?
我正在尝试Postfix
从Entware(嵌入式设备的存储库)进行设置。
没有涉及 SElinux,并且在 master.cf 中禁用了 chroot。
# postconf -n
command_directory = /opt/sbin
compatibility_level = 2
config_directory = /opt/etc/postfix
daemon_directory = /opt/libexec/postfix
data_directory = /opt/var/lib/postfix
debug_peer_level = 2
debugger_command = PATH=/bin:/usr/bin:/usr/local/bin:/usr/X11R6/bin ddd $daemon_directory/$process_name $process_id & sleep 5
default_database_type = cdb
inet_protocols = ipv4
mail_spool_directory = /opt/var/mail
manpage_directory = no
myhostname = domain.nl
mynetworks = 1.1.2.1,8.9.1.1
queue_directory = /opt/var/spool/postfix
shlib_directory = /opt/lib/postfix
smtputf8_enable = no
unknown_local_recipient_reject_code = 550
问题是postfix set-permissions
无法找出root
用户名。这个发行版默认带有一个名为“admin”的“root”用户。至少我认为用户名是问题,因为:
# postfix set-permissions
find: unknown user root
# ls -lah /opt/sbin/postdrop
-rwxr-xr-x 1 NewRootUser root 246.8K Sep 8 22:33 /opt/sbin/postdrop
在https://wiki.zimbra.com/wiki/Steps_to_fix_permission_and_ownership_of_Postfix_binaries_manually_due_to_bug_on_zmfixperm的帮助下,尝试修复差异(755
已设置):
# chown AdminUserName:postdrop /opt/sbin/postdrop
# chown AdminUserName:postdrop /opt/sbin/postqueue
# chmod g+s /opt/sbin/postdrop
# chmod g+s /opt/sbin/postqueue
结果:
# postfix check
postsuper: fatal: scan_dir_push: open directory defer: Permission denied
如何使postfix set-permissions
学习new root
用户名?
或者如何手动做postfix set-permissions
应该做的步骤?
或者在后缀源代码中的哪里可以找到为 flag 执行的操作set-permissions
?
手头有 Busyboxash
外壳,我希望清理/opt
文件夹。
清理意味着递归地删除每个文件和文件夹,除了一些需要保持不变的排除路径。
rm
# cd /opt && echo rm -rf \
./!(opt/etc/nginx|/opt/home|/opt/etc/config|/opt/usr/sbin|/opt/var/mlocate)
-sh: syntax error: unexpected "("
find
这似乎可以完成这项工作:
# cd /opt && find ./ ! -path "./etc" ! -path "./etc/config" ! \
-path "./etc/config/*" ! -path "./etc/nginx" ! -path "./etc/nginx/*" ! \
-path "./home" ! -path "./home/*" ! -path "./usr" ! -path "./usr/sbin" ! \
-path "./usr/sbin/*" ! -path "./var" ! -path "./var/mlocate" ! \
-path "./var/mlocate/*" -exec rm -f {} \;; cd -
任何建议如何改进?使用-delete
而不是-exec rm -f {} \
?处理rm: can't remove '.' or '..'
?如何在不递归的情况下删除空目录rm -rf
,换句话说如何整合rmdir
?
注意:它是 Busybox 1.24.2,shopt
两者都没有tac
。定义函数:
[, [[, addgroup, adduser, ar, arping, ash, awk, base64, basename, blkid, blockdev, brctl, bunzip2, bzcat,
cat, chgrp, chmod, chown, chroot, clear, cmp, cp, crond, crontab, cryptpw, cut, date, dd, delgroup, deluser,
devmem, df, diff, dirname, dmesg, dos2unix, du, echo, egrep, env, expr, false, fgrep, find, free, fsync,
getty, grep, gunzip, gzip, halt, head, hexdump, hostid, hostname, id, ifconfig, insmod, iostat, ip, ipaddr,
ipcalc, iplink, ipneigh, iproute, iprule, iptunnel, kill, killall, klogd, less, ln, lock, logger, login,
losetup, ls, lsmod, lsusb, md5sum, mkdir, mkfifo, mknod, mkswap, mktemp, more, mount, mv, nc, netmsg,
netstat, nice, nslookup, ntpd, od, passwd, patch, pgrep, pidof, ping, ping6, pivot_root, poweroff, printf,
ps, pwd, readlink, reboot, renice, reset, rev, rm, rmdir, rmmod, route, run-parts, sed, seq, setconsole,
setserial, sh, sha1sum, sha256sum, sha512sum, sleep, sort, start-stop-daemon, stat, strings, stty, su,
swapoff, swapon, switch_root, sync, sysctl, syslogd, tail, tar, tee, telnet, telnetd, test, time, top, touch,
tr, traceroute, true, tty, udhcpc, umount, uname, uniq, unix2dos, unlink, unlzma, unxz, unzip, uptime,
usleep, vconfig, vi, wc, wget, which, xargs, xz, xzcat, yes, zcat
根据Mozilla 服务器端 TLS 应该使用预定义的 DH 组ffdhe2048
,ffdhe3072
或者ffdhe4096
由 IETF 在RFC 7919中推荐。
我的路由器正在运行 Nginx(和 Linux),因此ssl_dhparam
应该设置。
但是,路由器的(Entware-NG)包管理系统缺少系统管理员 Adamgnutls
建议安装的包。
在通过 SSH 运行 padavan(openwrt 派生)分发的路由器上获取 DH 参数文件的简单方法是什么?
当尝试PUT
在现有文件夹的根目录中创建 index.html 文件时,nginx 失败并显示:
[crit] 1181#0: *1 rename() "/opt/spool/nginx/client_temp/1/0000000001"
to "/opt/share/www/domain.tld/index.html-3hlCQ9iE" failed (13:
Permission denied), client: 1.2.3.9, server: host.domain.tld, request:
"PUT /www/domain.tld/index.html-3hlCQ9iE HTTP/1.1", host: "172.21.2.2"
nginx-extras
1.13.6-1 。entware-3x
$ grep www-rw /etc/passwd
www-rw:x:1000:1001:Linux User,,,:/opt/share/www:/bin/sh
$ grep www-w /etc/group
www-w:x:1001:
$ ls -l /opt/share/www
drw-rw-r-- 2 www-rw www-w 4096 Feb 9 13:51 domain.tld
$ ls -al /opt/share/www/domain.tld
drw-rw-r-- 2 www-rw www-w 4096 Feb 9 13:51 .
drwxr-xr-x 4 www-rw www-w 4096 Feb 9 13:51 ..
$ ls -l /opt/spool/nginx
drwxrwxrwx 7 www-rw root 4096 Feb 9 22:46 client_temp
$ ls -l /opt/spool/nginx/client_temp
drwx------ 2 www-rw www-w 4096 Feb 9 22:28 5
客户:Cyberduck/6.3.3.27341
www-rw
内容nginx.conf
user www-rw www-w;
server {
location /www {
root /opt/share;
client_body_temp_path /opt/spool/nginx/client_temp 1;
dav_methods PUT DELETE MKCOL COPY MOVE;
dav_ext_methods PROPFIND OPTIONS;
# allow creating directories
create_full_put_path on;
dav_access user:rw group:r all:r;
autoindex on;
}
}
user nobody nogroup;
dav_access user:rw group:r all:r;
#autoindex ...
admin
我应该修复什么(在权限中?)以解决 Nginx dav 权限被拒绝错误?
2009 年 3 月 12 日 Denys Vlasenko 写道:
计划实现它——BASH 之类的数组支持——最终是的
ASH_BASH_COMPAT
,是的。需要有足够的空闲时间。(非常欢迎志愿者)
由于它的编译启用了哪个busybox
版本,包括类似数组的 BASH 支持?ash
ASH_BASH_COMPAT
(在 initramfs 内部)的一个古老版本ipconfig
要求其用户输入最多只能提供 7 个冒号分隔的元素,例如:
ip=client-ip:server-ip:gw-ip:netmask:hostname:device:autoconf
ipconfig
当用户确实提供超过 7 个元素时会导致错误。
因此额外的(2个DNS解析器)应该被砍掉。
这可以在subshell
with中完成cut
,例如:
validated_input=$(echo ${user_input} | cut -f1,2,3,4,5,6,7 -d:)
如何使用参数扩展/替换cut
来编写这样的内容?(b)ash
没有:
由于 (1) 速度,请参阅使用 bash 变量替换而不是 cut/awk和 (2) 学习。
换句话说:如何查找第 n 个(第 7 个)字符的出现并从那里删除/修剪所有内容,直到字符串结尾?
Arch Linux/usr/lib/initcpio/busybox
由 mkinitcpio-busybox 1.27.2-1 包拥有,并且配置为低功能,例如 CONFIG_FEATURE_USE_INITTAB 未设置。
在包含该busybox的自定义initramfs中,我设法获得了执行源代码/etc/profile
工作的ssh网络登录。在 VGA 显示器上还可以看到一个灰壳提示。
但是,“vga”外壳不是 source /etc/profile
。问:登录 Shell 和非登录 Shell 的区别?让我觉得这个 shell 不是登录 shell。该外壳由以下启动/init
:
exec setsid sh -c 'exec sh </dev/tty1 >/dev/tty1 2>&1'
回归:
exec setsid sh -c 'exec sh -i </dev/tty1 >/dev/tty1 2>&1'
exec setsid sh -c 'exec sh - </dev/tty1 >/dev/tty1 2>&1'
exec setsid sh -c 'exec -sh </dev/tty1 >/dev/tty1 2>&1'
如何使这个busybox
ash
shell 成为源/etc/profile
和/或使其成为(自动)登录 shell?
# btrfs filesystem defragment -r -v -czstd:15 /
ERROR: unknown compression type zstd:15
# btrfs filesystem defragment -r -v -czstd_15 /
ERROR: unknown compression type zstd_15
# btrfs filesystem defragment -r -v -czstd15 /
ERROR: unknown compression type zstd15
btrfs 手册页没有提供有关如何选择压缩级别的线索:
-c[算法]
碎片整理时压缩文件内容。可选参数选择压缩算法、zlib(默认)、lzo 或 zstd。目前无法选择不压缩。另见示例部分。
如何选择非默认的 zstd 压缩级别来重新压缩现有的 btrfs 文件系统?
注意:快照可能会导致更大的磁盘空间btrfs filesystem defragment
消耗:
警告:使用 Linux 内核版本 < 3.9 或 ≥ 3.14-rc2 以及 Linux 稳定内核版本 ≥ 3.10.31、≥ 3.12.12 或 ≥ 3.13.4 进行碎片整理将破坏 COW 数据的引用链接(例如文件使用 cp --reflink、快照或去重数据复制)。这可能会导致空间使用量的显着增加,具体取决于分解的引用链接。
这个问题与“触摸目录中的所有文件夹”问题相似。
如何将touch
目录中的所有内容,
..
和.
touch -h
和使用参考文件touch -r <file>
作为时间戳源
从shell 脚本中?