因为权限问题没法在目录下编译生成可执行文件( OSX )
敲入上面这句神奇命令后,sudo bash,一切限制都不复存在只留下原地懵逼的我
有大佬能一个词一个词的讲解一下这句神秘指令的原理吗?
1
reus 2019-10-08 16:09:46 +08:00 via Android
难道不是 sudo 的效果?
sudo bash 是进入 root shell,具有所有权限 |
2
b00tyhunt3r OP @reus 我也很费解 但确实和 sudo 无关
|
3
ysc3839 2019-10-08 18:19:54 +08:00
```
$ export ARCHFLAGS='-arch i386 -arch x86_64' $ env | grep ARCH ARCHFLAGS=-arch i386 -arch x86_64 $ sudo bash # env | grep ARCH # ``` sudo 并不会保留环境变量。 |
4
momocraft 2019-10-08 18:52:58 +08:00
你怎样得知和 sudo 无关
|
5
b00tyhunt3r OP @momocraft
因为我不键入神奇指令 export ARCHFLAGS='-arch i386 -arch x86_64'的情况下, 只简单执行 sudo bash 依然 permission denied |
6
b00tyhunt3r OP @ysc3839
大佬可以多说几句吗? |
7
momocraft 2019-10-08 20:05:15 +08:00
你能寫出一個在別人機器復現此問題的步驟嗎
|
8
b00tyhunt3r OP |
9
nyanyh 2019-10-08 22:19:51 +08:00
/Library/WebServer/CGI-Executables
❯ clang++ ./sort.cpp -o sort -std=c++11 ld: can't open output file for writing: sort, errno=13 for architecture x86_64 clang: error: linker command failed with exit code 1 (use -v to see invocation) /Library/WebServer/CGI-Executables ❯ sudo clang++ ./sort.cpp -o sort -std=c++11 (此处编译成功) /Library/WebServer/CGI-Executables ❯ sudo bash The default interactive shell is now zsh. To update your account to use zsh, please run `chsh -s /bin/zsh`. For more details, please visit https://support.apple.com/kb/HT208050. bash-3.2# ls sort sort.cpp bash-3.2# clang++ ./sort.cpp -std=c++11 bash-3.2# 我认为你这个问题不能复现的概率接近 100%,sudo 不保留环境变量,这个目录单纯是因为没有权限才导致的无法编译,和环境变量没有关系 |
10
nyanyh 2019-10-08 22:21:25 +08:00
除非是你的编译脚本里有额外操作,直接用 clang 编译我觉得不会出任何问题……
|