Answers:
/lib64/ld-linux-x86-64.so.2
。 ldd /bin/chmod
应该确切列出要运行的链接器。
man ld-linux.so
:“ ld.so [和ld-linux.so]加载程序所需的共享库,准备运行该程序,然后运行它。” (ld.so
用于a.out
格式可执行文件,ld-linux.so
用于ELF格式。)
ld-linux.so
是某种可执行文件/库混合文件,是一种静态链接的文件,在用户空间中运行,负责加载动态链接的可执行文件及其所有依赖项,然后运行它们。
使用python:
# python
Python> import os
Python> os.chmod("/bin/chmod",0755)
python -c "import os; os.chmod('/bin/chmod', 0755)"
这取决于复制目标文件时保留目标文件而不是源文件的权限的事实。我们正在“借用”以下对象的权限ls
:
cp /bin/ls /tmp/chmod.tmp
cp /bin/chmod /tmp/chmod.tmp
mv /tmp/chmod.tmp /bin/chmod
cp
需要打开-p标志
cp
执行了可执行文件之后,我只是cat
将其内容chmod
放入了临时文件中。
setfacl -m u::rx /bin/chmod
...将授予所有者执行权限。
但是,/lib/ld-linux.so.2
诀窍很巧妙。:)
我怀疑这不是一个真正的问题:http : //www.slideshare.net/cog/chmod-x-chmod
创建一个新的chmod并将其用于原始
umask 000
cat chmod > ~/my-chmod
~/my-chmod a+x chmod
(umask 000;gcc -o foo foo.c)
将产生foo
777模式)。但是,许多(大多数?)shell在打开/创建用于重定向的文件时会通过0666,这意味着此答案在许多shell下都行不通。
chmod
!