Кроме того, sudo
единственный другой метод, о котором я знаю, должен использовать setuid., это - механизм, встроенный в Unixes, где можно установить немного на программе на диске так, чтобы каждый раз, когда кто-то выполняет его, исполняемый файл был выполнен как владелец файлов а не пользователь, пытающийся выполнять его.
Но это средство обычно не работает со сценариями или программами, которые требуют хижины (#!/bin/...
) наверху их. Если файлу включат этот бит, то он обнаружится как это в файловой системе:
-rws------ 1 saml saml 3354099 Oct 28 16:07 someapp
Можно установить программу с этим битом, включенным как это:
$ chmod u+s someapp
Но даже когда этот бит включен, он может часто быть проигнорирован и свести пользователей с ума, которые не понимают, что это дизайном. Часто из соображений безопасности, для не разрешения сценариев оболочки или программ, которые используют хижину для выполнения этим способом.
Страницы справочника (credentials
& capabilities
) покройте часть этого.
Таким образом, в целом наилучший вариант, даже при том, что Вы не хотите слышать это, состоит в том, чтобы использовать sudo
.
] из [] man page[]:[
] [When used in a function, declare makes each name local, as with the local command, unless the ‘-g’ option is used.
]
[]Пример:[
] [$ function FUNCtst() { declare -gA astr; astr=([a]="1k" [b]="2k" ); declare -p astr; };FUNCtst;declare -p astr
declare -A astr='([a]="1k" [b]="2k" )'
declare -A astr='([a]="1k" [b]="2k" )'
]