bindbn, я собирался опубликовать ту же ссылку :-), но я читал сам, поскольку я новичок в материалах Unix / Linux!
Рихатум
2
На 64-битном дистрибутиве вы можете использовать /lib64/ld-linux-x86-64.so.2вместо этого. ldd /bin/chmodдолжен точно указать, какой компоновщик запустить.
goldPseudo 11.10.10
Я бы написал минимальную программу, которая использует chmod (2), но это круче
adamo
1
@Stefan: From man ld-linux.so: «ld.so [и ld-linux.so] загружает общие библиотеки, необходимые программе, подготавливает программу к запуску и затем запускает ее». ( ld.soдля a.outформатируемых исполняемых файлов и ld-linux.soдля формата ELF.)
Приостановлено до дальнейшего уведомления.
1
@Stefan: Ядро на самом деле не знает, как загружать и выполнять динамически связанные исполняемые файлы, потому что оно очень сложное и следует glibc, а не ядру. ld-linux.soявляется своего рода гибридом исполняемых файлов / библиотек, является статически связанным, работает в пользовательском пространстве и отвечает за загрузку динамически связанных исполняемых файлов и всех их зависимостей, а затем их запуск.
Джулиано
18
Используйте Python:
# python
Python> import os
Python> os.chmod("/bin/chmod",0755)
И, как один вкладыш:python -c "import os; os.chmod('/bin/chmod', 0755)"
Танатос
18
Это основывается на том факте, что права доступа к файлу назначения сохраняются, а не к исходному файлу при его копировании. Мы «заимствуем» разрешения ls:
Установка umask 000 не даст разрешения на выполнение файла при его создании. В лучшем случае он получит разрешения rw-rw-rw-.
Барри Браун
2
@Barry: На самом деле это зависит от режима, переданного creat (2) / open (2) / mkdir (2) / etc. Если umask == 0 и системному вызову, который создает файл, дается 0777 для режима, то в файле будут включены биты выполнения. Например, компоновщики / компиляторы пропускают 0777 при записи «исполняемого файла» (например, (umask 000;gcc -o foo foo.c)создаст fooрежим 777). Однако многие (большинство?) Оболочек проходят 0666, когда открывают / создают файлы для перенаправления, что означает, что этот ответ не будет работать под многими оболочками.
chmod
!Ответы:
В Linux:
http://www.slideshare.net/cog/chmod-x-chmod
источник
/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 -c "import os; os.chmod('/bin/chmod', 0755)"
Это основывается на том факте, что права доступа к файлу назначения сохраняются, а не к исходному файлу при его копировании. Мы «заимствуем» разрешения
ls
:источник
cp
должен иметь флаг -pcp
запуска исполняемого файла я простоcat
поместил содержимоеchmod
во временный файл.Использование Perl:
источник
setfacl -m u::rx /bin/chmod
... предоставит владельцу разрешения на выполнение.
Но
/lib/ld-linux.so.2
уловка аккуратна. :)источник
Это странно ... Я видел что-то подобное несколько дней назад через чей-то твит ...
http://www.slideshare.net/cog/chmod-x-chmod
источник
Если вы находитесь в системе, которая
/bin/chmod
не может быть загружена динамическим компоновщиком:Это работает в моей системе MacOS X.
источник
/ rescue / chmod 555 / bin / chmod
Я думаю, что вы также можете использовать mtree.
источник
Я подозреваю, что это не настоящий вопрос: http://www.slideshare.net/cog/chmod-x-chmod
источник
создайте новый chmod и используйте его для оригинала
источник
(umask 000;gcc -o foo foo.c)
создастfoo
режим 777). Однако многие (большинство?) Оболочек проходят 0666, когда открывают / создают файлы для перенаправления, что означает, что этот ответ не будет работать под многими оболочками.