除非奇怪地配置,否則sudo
需要在運行時驗證。它通常意味着交互式運行。
假設腳本/glassfish3 /斌/ asadmin的由根擁有,你可以設置它的文件權限設置爲6755.這做什麼你大概意思sudo
做。當然,它也可能是危險的,可能是安全風險。
(@jcomeau_ictx是正確的,順便說一下,您應檢查日誌,他建議。)
更新檔案的好處:以上回答幸運似乎已經解決了OP的迫在眉睫的問題,所以我們我會把它留在那。但是,由於這個答案將會保留,而其他人可能會在稍後查看它,所以我應該補充一些。
一個可以將任何可執行文件的文件權限更改爲6755,但這並不總是一種好的做法。這些權限的效果是(a)讓任何人以(b)可執行文件所有者的全部特權運行可執行文件。有時候,這正是你想要的,但是請看:在OP的情況下,具有這種權限的/glassfish3/bin/asadmin
現在可以被任何人用任何參數調用,並具有完全的root權限。如果這不是你想要的,那麼你必須採取一些額外的照顧。
可以採取幾種額外照顧的方式。一個如下。
- 離開可執行文件權限755
- 編寫和編譯一個小包裝,它採用的
execv()
unistd.h中啓動可執行的程序。
- 如果切實可行,請不要讓包裝帶有任何爭議;否則,讓它的論點儘可能地受到限制和僵化。讓包裝嚴格控制傳遞給可執行文件的參數。
- 讓包裝由根,擁有,但使用
chown
爲其分配一個合適的組,其成員不包括用戶。您可能更願意爲此目的創建一個新組,但如果您掃描系統上的/etc/group
文件,則不太可能找到適合的現有組。作爲參考,您可以通過ls -l /bin /usr/bin | grep -vE '^([^[:space:]]+[[:space:]]+){2}(root[[:space:]]+){2}'
等列出已屬於系統上特殊用途組的命令。
- 給包裝文件權限6754,從而使其不可執行,除了有問題的組。
- 承認調用腳本到組,並給調用腳本文件的權限2755
如果調用腳本已經屬於一個集團,你可能只需要使用相同的組貫穿始終。
該技術的幾種變體是可能的,並且您不太可能使用上面列出的一種,但是如果您閱讀chown
命令的手冊頁和/或信息條目並瞭解文件權限的詳細信息,如果您嘗試了一點,您應該能夠制定出適合您的解決方案,而不會產生安全風險。
來源
2012-03-31 04:14:25
thb
你檢查你的日誌?沒有什麼興趣? – 2012-03-31 04:10:10
(如果運行Debian或Ubuntu,順便說一句,您使用'update-rc.d'命令在* /etc/init.d, *中安裝腳本,而不是手工完成是非常有序的。) – thb 2012-03-31 04:20:03
@jcomeau_ictx信息會記錄在哪裏? – 2012-03-31 04:33:20