V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  codehz  ›  全部回复第 98 页 / 共 133 页
回复总数  2660
1 ... 94  95  96  97  98  99  100  101  102  103 ... 133  
@zhaojun1998 PC 端按返回键(后退)也是一样的效果
手机端点击文件后立刻返回‘会导致白屏
2019-12-31 22:59:04 +08:00
回复了 takemeh 创建的主题 分享创造 轻量级 webd 网盘更新了
@takemeh #85 username 是直接读 /etc/passwd 来的,和用户权限没有任何关系*( linux 只认数字 uid:gid,名字只是为了好记)
你那个启动方法还是折腾了点,最好的方法就是自始自终都不涉及 root 权限,避免某些人为因素导致的错误,利用 linux 的 user namespace 实现免 root chroot (内部看起来是 UID 0,实际权限只能在命名空间里用,mount 只能做 bind mount,不能 mount devtmpfs (也就是 /dev )以及任何挂载块设备(即没法直接挂载裸磁盘),chroot 之后就再也出不去了
2019-12-31 21:01:33 +08:00
回复了 takemeh 创建的主题 分享创造 轻量级 webd 网盘更新了
@takemeh #47 sudo chroot 的话,运行用户不就是 root 了么,这个问题很大,(意味着一旦攻击成功,虽然拿不到 shell,但是足够执行 mount 系统调用逃逸沙箱了。。。
另一个方式就是使用 user/mount/pid/ipc/cgroup namespace,这样做的沙箱不需要特权,也可以进行 chroot 的操作(然后如果没有其他方式获得父级目录的文件描述符的话就逃逸不出来了)(但是需要修改代码,可以参考我的 nsroot 项目( github.com/codehz/nsroot )非常简单粗暴实现基础容器隔离原语)*还能配合 seccomp 限制 syscall,再 prctl 丢掉获取新特权的能力
2019-12-30 13:31:04 +08:00
回复了 sandman511 创建的主题 Java Java 调用 cmd:请教一下 process.waitFor()机制
其实有一半时间是 win 的锅(当然并不是说 win 很烂,只能说设计目标不一样)
win 开进程就是要有一定的延迟(相比 linux/bsd 的 fork+exec
你的这种思路,就类似传统 CGI 思路,当时在传统*nix 系统上还能拼出几百甚至几千并发,到了 win 上就是低了一个数量级,当然了,上了 FastCGI,就差别不大了(一定不是 php 的锅!)
然后 FastCGI 才会顺利上位(
2019-12-28 14:55:06 +08:00
回复了 different 创建的主题 Linux 关于 websocket 协议,使用 cdn 加速的情况有问。
关于第一个问题,你可以试试用 curl 测试一下(别告诉我这玩意没实现 HTTP 服务器功能,直接裸 websocket
然后除此之外,连接上还得注意以下问题:在 cloudflare 后台把 websocket 功能打开( network 那个选项卡找一下
其次:发送升级请求的时候带上 Host 和 UA(或者去 cf 后台设置下防火墙等级,以及具体 UA 也可以在那里设置下白名单)
Host 的必须的,不然 CF 不知道到底是哪个用户的网站,也没法请求了(
2019-12-27 18:34:42 +08:00
回复了 Tengwait 创建的主题 宽带症候群 上海的 IP 不挂网站,解析都不行了
@no1xsyzy 需要实际访问记录,其实只要搞一个自定义 DNS,把 IP 地址编码到子域名里,然后写个脚本批量发请求)
这不是行为主义心理学的观点么(
不过要做到楼主的说法,起码得有观测手段收集全部历史信息吧
2019-12-26 13:59:18 +08:00
回复了 squancher 创建的主题 程序员 请问编程语言中阻塞机制在操作系统最底层是如何实现的?
@squancher 没有黑魔法,一切都是循环(
2019-12-26 13:36:56 +08:00
回复了 squancher 创建的主题 程序员 请问编程语言中阻塞机制在操作系统最底层是如何实现的?
其实不去实现操作系统也不是不能了解这个阻塞调用机制
你可以自己实现一个协程
然后看看不使用系统调用的情况下如何实现 timer
(是不是只能一个死循环,最多优化优化检查策略)
然后我这里就做了一个模仿操作系统的协程模型 https://github.com/codehz/ctxco
其中 poller 函数可以理解为系统调用的处理函数(然后自己实现如何将请求异步提交给系统,并返回调度具体协程)
2019-12-26 13:26:54 +08:00
回复了 squancher 创建的主题 程序员 请问编程语言中阻塞机制在操作系统最底层是如何实现的?
@squanche 内核也有线程,定时器会专门开一个线程管理,然后他就可以做一个操作:依次排列各个定时器事件,循环检查第一个定时器有没有触发,然后循环内每次检查后都主动放弃执行绪切到另一个内核线程处理别的事务(
2019-12-26 13:09:19 +08:00
回复了 squancher 创建的主题 程序员 请问编程语言中阻塞机制在操作系统最底层是如何实现的?
判断的过程有非常多的选项,对于同步的系统调用来说,最简单了,就是遍历一个候选列表,然后一个一个判断过去(没错,就是链表)
你以为的实时只是假象,看起来很快,但起码有个几千个时钟周期的“浪费”,根本不是实时的
2019-12-26 13:05:17 +08:00
回复了 squancher 创建的主题 程序员 请问编程语言中阻塞机制在操作系统最底层是如何实现的?
@squancher 中断是硬件实现,等于强行跳转到另一个执行逻辑(所谓中断处理函数,实际并不是手动调用过去的,而是硬件暴力跳转过去),软件层面无法改变也没法预测
2019-12-26 10:57:10 +08:00
回复了 squancher 创建的主题 程序员 请问编程语言中阻塞机制在操作系统最底层是如何实现的?
其实了解一些基本硬件提供的机制就可以理解这个问题了(当然要具体实现那是另一个问题)
首先我们知道硬件有中断,其中包括时钟中断和 IO 中断(和别的)
于是我们可以做什么呢,时钟中断可以用来切换运行中的线程(抢占式调度)
对应的 IO 中断就可以用来唤醒由于特定 IO 请求而睡眠的线程了!
(所以为什么要阻塞队列?因为有可能同时有好多线程有 IO 请求,总得设计一个结构去保存吧,然后请求来了就扫描一下看看谁可以被唤醒做事)
当然具体实现要复杂的多,比如 IO 中断怎么解析就是一个非常复杂的事情,解析好了也不是立即就唤醒的,除非是无阻塞 poll 模式,不然内核还要帮你把收到的数据填充到缓冲区(以 read 为例)
@Buges 但是 windows 安装器会拒绝在 legacy 模式下安装 UEFI 的 Windows
然后 legacy 模式下没法修改 UEFI 的相关记录,导致 Linux 即使装上了,也得修一下 UEFI 条目(
2019-12-21 14:33:08 +08:00
回复了 jackpot 创建的主题 Ubuntu 关于 WSL 下 Ubuntu 防火墙的问题
wsl 不支持 ufw.
2019-12-18 13:53:37 +08:00
回复了 CSGO 创建的主题 宽带症候群 除了 ping 以外还有什么方式可以探测服务器?
nmap?直接扫描端口
2019-12-15 17:00:39 +08:00
回复了 b00tyhunt3r 创建的主题 程序员 win10 怎么让键盘默认打出下划线 _ 而不是横杠 -
理论上可以修改键盘布局,这里有个官方提供的工具创建自定义键盘映射
https://www.microsoft.com/en-us/download/details.aspx?id=22339
但是我没用过,也不确定是否有效
有,用 proot 里面的模拟 mount bind 功能对文件进行 bind -b xxx:/etc/my.conf 原理是通过 ptrace 拦截系统调用
当然如果系统支持,也可以用 user namespace + mount bind 的方法(用我的 github.com/codehz/nsroot 理论上比 ptrace 要稳一点,性能影响也少一点
1 ... 94  95  96  97  98  99  100  101  102  103 ... 133  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2760 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 44ms · UTC 09:57 · PVG 17:57 · LAX 01:57 · JFK 04:57
Developed with CodeLauncher
♥ Do have faith in what you're doing.