
1 honus 2024-06-20 08:47:31 +08:00 养成日常不用 root 用户的习惯吧 |
2 lstz 2024-06-20 08:51:06 +08:00 via Android 上 zsh |
3 abcde123456789 2024-06-20 08:51:25 +08:00 终于理解为啥不推荐用 root 了 |
4 SayHelloHi 2024-06-20 08:52:49 +08:00 借楼问下 有没有检查安全更新的脚本 可以一键安装安全更新包 求一个 |
5 smdbh OP @abcde123456789 ,不是 root , 在制作 rootfs ,sudo 了, 两个目录没分清 |
6 xmai 2024-06-20 08:54:40 +08:00 搞个函数包装一下原始命令,比如包装一下 rm 命令, ``` rm() { echo “Are you sure you want to delete? (y/n)” read answer if [ “$answer” == “y” ]; then command rm “$@” else echo “Delete aborted!” fi } ``` 执行 rm 命令之前,添加了一个询问用户是否确认删除的逻辑。只有在用户确认删除时,才会执行原始的 rm 命令。 |
7 smdbh OP @lstz ,就是 zsh ,是有啥插件吗,默认和 bash 没区别,都直接执行 |
8 xmai 2024-06-20 09:02:33 +08:00 你硬要上插件,也是有解决方案,这个插件可以拦截任何有风险的 shell 命令(默认或由您定义)并提示进行双重验证 https://github.com/kaplanelad/shellfirm |
9 Jinnrry 2024-06-20 09:02:39 +08:00 via Android 我们公司 ssh 服务器要经过跳板机,跳板机会记录所有操作命令,同时会做命令审计,如果你敲个 rm /或者导出敏感文件日志啥的,立马就中断要求提审批单 |
10 Jiceburger 2024-06-20 09:02:41 +08:00 via Android @xmai 额,也许 alias rm="rm -i" 更简单一些? |
11 xubeiyou 2024-06-20 09:13:18 +08:00 让运维隔段时间做备份。。。我当前小公司就这么做的 |
12 huangmingyou 2024-06-20 09:27:34 +08:00 我现在习惯把危险命令写到临时文件 file, 检查确认后用 bash file 执行。 |
13 villivateur 2024-06-20 09:30:00 +08:00 $ rm --help Usage: rm [OPTION]... [FILE]... Remove (unlink) the FILE(s). -f, --force ignore nonexistent files and arguments, never prompt -i prompt before every removal -I prompt once before removing more than three files, or when removing recursively; less intrusive than -i, while still giving protection against most mistakes --interactive[=WHEN] prompt according to WHEN: never, once (-I), or always (-i); without WHEN, prompt always --one-file-system when removing a hierarchy recursively, skip any directory that is on a file system different from that of the corresponding command line argument --no-preserve-root do not treat '/' specially --preserve-root[=all] do not remove '/' (default); with 'all', reject any command line argument on a separate device from its parent -r, -R, --recursive remove directories and their contents recursively -d, --dir remove empty directories -v, --verbose explain what is being done --help display this help and exit --version output version information and exit 我觉得 -I 的那一坨够用了 |
14 smdbh OP @xmai @villivateur , 是个方法,但我这次翻车的是 chmod ,把权限搞崩了,导致 sudo 等命令没法用了 |
15 llh880808 2024-06-20 09:37:36 +08:00 我一直在推荐同事修改键入 rm 命令的顺序,比如 rm -rf /some/nouse/path ,常规顺序是从左到右,我建议先输入/some/nouse/path ,然后 ctrl-a 回到开头再输入 rm -rf 从左到右的顺序,我一直担心路径还没输入完,就不小心按到回车的事情发生 |
16 chenjiasange 2024-06-20 09:48:08 +08:00 我犯贱的时候,不小心直接把整个 rm / 整个删除了。。。。 |
17 A4l1CteRQHlG1Bs8 2024-06-20 10:29:58 +08:00 举例子类似 rm 给 alias 到 trash 命令. cp alias 到 cp -i 这种.. 另外别用 root..后患无穷 |
18 zhenwang 2024-06-20 10:41:44 +08:00 更加推荐 rm 别名到 cp 等,把删除的内容放到临时目录下。至于 rm 加上确认 prompt ,可能短期有用,但是长期很容易养成一路 yes 的习惯,实际上没啥大用处。 |
22 hefish 2024-06-20 10:54:14 +08:00 有没有能防止 rm -i -rf / 命令,误按 y 的办法? |
24 kneo 2024-06-20 11:05:45 +08:00 via Android 相信我,什么安全措施都没用,最后都会被你巧妙的绕过。 |
25 chendl111 2024-06-20 11:27:26 +08:00 没有,linux 就是把自主权交给你,除非你用 windows |
26 proxychains 2024-06-20 13:19:03 +08:00 即便是简单的 echo , 使用不当也是灾难的. echo > /etc/nginx/nginx.conf |
27 proxychains 2024-06-20 13:20:22 +08:00 |
30 jcdv2 2024-06-20 14:54:18 +08:00 更危险的是藏在脚本里的吧?遇到不符合预期的输入的时候,拦截不一定起效 |
32 llh880808 2024-06-20 19:02:02 +08:00 @wenxueywx 嗯,也是一个很好的建议。不过我觉得 rm -rf 即使不连用也也有风险,因为修改顺序是防止文件名/路径输入完之前就误按回车确认,尤其是同一个目录下,有多个前缀类似的文件/目录的时候,比如./foo 和 ./foobar 这种,很有可能想删 foobar 误删了 foo |
33 llh880808 2024-06-20 19:04:35 +08:00 @mark2025 我的重点是,先确保想删的文件路径都输入完成,再去执行删除,即使-rf 放后面,在没有 alias rm=rm -i 的环境下,仍然可能误删文件的 |
34 llh880808 2024-06-20 19:05:38 +08:00 @proxychains 同意,我的本意是强调文件路径完整,只是刚好举了个根目录的例子;当然,不要从根目录开始会更安全 |
35 48y1951r9G8k7Zou 2024-06-20 19:51:33 +08:00 @codehz #23 如果用的是 coreutils 的 ls ,它是走 libc 的 getopt() 来处理参数的。而某些 libc (比如 glibc )的 getopt() 实现有 shuffle 参数的默认行为 参考: https://www.man7.org/linux/man-pages/man3/getopt.3.html (搜索 POSIXLY_CORRECT ) |
37 Foxii 2024-06-20 23:11:22 +08:00 via Android 定期自动高频快照,低频备份。二次确认什么的再多也都有概率翻车的,本就是因为脑子慢了,手比脑子快,二次确认也没用 |
38 HankAviator 2024-06-20 23:44:35 +08:00 @aycclm 让别名随机生成验证码,需要删除则输入 4 位字母数字,哈哈哈哈 |
39 Int100 2024-06-21 04:17:06 +08:00 @proxychains #27 > 我们内部规定是不允许使用绝对路径进行删除, 而是 cd 到目标路径然后再删除. rm -fr /data/useless cd data rm -fr ./useless 很好的建议,我一直是这么操作的,而且这样很符合直觉 |
40 netabare 2024-06-21 05:10:07 +08:00 光怼 rm 没用吧,不安全的命令也不是只有 rm 。mv 也能把文件和文件夹搞飞。 |
41 aragakiyuii 2024-06-21 06:14:48 +08:00 via Android 我记得之前有人说根节点下面放个全一点的 node_modules |
42 orioleq 2024-06-21 07:21:55 +08:00 via iPhone 危险的从来都不是工具,而是人。 |
43 GoodRui 2024-06-21 07:27:40 +08:00 via Android 以前一直对这种低级误操作嗤之以鼻,认为这人得多 sb 才会出现这种低级错误。直到有一次手滑 rm -rf / path/to/del .../ 后面手滑打了个空格... |
44 qilme 2024-06-21 07:51:29 +08:00 via Android @aragakiyuii 前几天误用脚本删了家目录,最后卡在了 `.bun` 才发现,检查后发现只删掉了 `.aria2` 目录 |
45 msg7086 2024-06-21 07:59:41 +08:00 我主机 zsh 有语法高亮插件,临时做的 rootfs 里一般只有 bash ,所以肯定不会搞错。 楼上说的目录里手滑加空格的情况在我这也不是问题,因为存在的文件项有下划线,两个文件项中间有空格的话下划线就断开了,一眼就能看出是两个项目。 危险命令归根结底就是要养成执行危险操作前双手离开键盘盯着命令看 5 秒,想清楚了再执行,而不是依靠各种 alias 或者 sudo 权限这种东西。总有一天你会上手一台没有 alias 的机器,总有一天你会顺手打出 sudo rm ,就算 rm 被 alias 了,总有一天你会习惯性打出-rf ,又或者打出 chown/chmod -R 。你会习以为常地认为系统会保护你,不让你执行危险操作。这种精神麻痹是非常危险的。 |
46 msg7086 2024-06-21 08:03:04 +08:00 我之前也误删过数据,不过不是你们想的那种误删。我误删是在部署一个程序项目的时候,要回滚一个数据库结构变更记录,本来应该输入 VERSION=20xxxxxx 的,结果我不小心打了 STEP=20xxxxxx ,结果直接把数据库滚没了。 所以归根结底还是要危险操作多留心,多检查,然后就是多备份。别的都是假的。 |
47 rulagiti 2024-06-21 08:37:05 +08:00 safe-rm |
48 busuzhike 2024-06-21 08:44:11 +08:00 牢记任何改动之前,先做备份 |
49 DefoliationM 2024-06-21 08:53:56 +08:00 via Android alias rm=trash-put |
50 v2exchen 2024-06-21 09:04:15 +08:00 制作 rootfs 不一定要用 sudo ,有试过 fakeroot 吗 |
51 jheroy 2024-06-21 09:11:17 +08:00 via Android 删东西重来不是直接删,都是先 mv xxx xxx.bak 没问题再删,做危险操作前都要二次检查命令,并且保证有恢复手段 |
52 635925926 2024-06-21 09:24:05 +08:00 我记得 centos 是不支持直接 rm /的,会有报错提示 |
53 chenliangngng 2024-06-21 10:54:20 +08:00 @llh880808 感觉有点像函数式编程,行为放最后,如果有对应插件那就太好了 |
54 yoqu 2024-06-21 11:16:50 +08:00 |
55 ladeo 2024-06-21 11:49:15 +08:00 多用绝对路径,少用相对路径吧 |
57 MrUser 2024-06-21 13:09:35 +08:00 1. 不要直接使用 root 用户; 2. 所有需要 sudo 的都是危险命令; |
58 leon2023 2024-06-21 16:33:59 +08:00 没办法,sudo 很多时候都必须用,只能是小心小心再小心 |
61 yoqu 2024-06-22 11:11:26 +08:00 @oneisall8955 因为以前太年轻了 |
62 julyclyde 2024-06-22 16:29:03 +08:00 |