2013-03-12 63 views
0

重新啓動後,我忽略SUID位被忽略的問題。這個問題很可能與我對SUID位的理解有關。我需要提升目錄中python文件的權限,因爲它們執行的功能。這就是我所做的。重新啓動時忽略SUID位

sudo find dir -type f -exec chmod u + s {} \;這是通過使用pexpect提供密碼的python腳本完成的。但是當通過命令行完成時我遇到了同樣的問題。

,如果我再運行的ls -l -h給出瞭如下(我得到的時候,這是一個重啓後做了相同的輸出)

-rwsrwxrwx 1根根。 。 。 filename.py

-rwsrwxrwx 1 root root。 。 。 filename.py〜

-rwSr - r-- 1個用戶用戶。 。 。 filename.pyc

在會話中設置SUID可以工作,但一旦發生重新啓動,SUID位仍然存在但似乎被忽略。現在我認爲通過chmod設置SUID位意味着用戶使用root權限提升權限運行程序,並且chmodding通過重新啓動持久化。

我的問題是有沒有辦法讓一個SUID位在重啓後生存下來並且不被忽略?

任何幫助將是巨大的

乾杯

回答

1

-rwsrwxrwx 1根根。 。 。 filename.py

真的嗎?即使這是一個嚴重的防火牆工作站,沒有其他人有物理訪問權限,而且您是唯一的物理用戶,將其留在您的文件系統上是一個非常糟糕的主意。

sudo find dir -type f -exec chmod u + s {} \;

這就是這樣。

使用Pexpect的供給密碼

...這意味着根密碼是由非根用戶存儲在明文文件可讀?

我很懷疑你的分析。我經常使用setuid程序(雖然不是python腳本 - 我期望然後behave like any other setuid scripts - 儘管這would not explain爲什麼他們有史以來工作作爲setuid),並從來沒有遇到過這樣的問題。你認爲在重新啓動時會發生什麼變化?根據你的帖子,權限不會改變 - 所以如果他們真的停止以root用戶身份運行,這意味着別的東西正在跟蹤它是否可以將這些腳本作爲一個不同的用戶來運行 - 並且這樣做的方式不會生存重啓 - 故事越來越不可能。

無論解決我提到的所有問題的方式,也可能解決您的問題是刪除setuid位並通過sudo調用程序。

+0

其中pexpect用戶輸入密碼立即用於執行sudo命令然後開除。使用SUID的目的是爲了避免每次需要完成某些功能時都必須讓用戶輸入sudo密碼。不過,你可能是對的,應該尋找另一條路線。乾杯 – Lipwig 2013-03-12 17:07:30

+2

'是爲了避免讓用戶輸入sudo的password' - 這就是須藤的NOPASSWD配置選項是 - http://serverfault.com/questions/160581/how-to-setup-passwordless-sudo-on- Linux的 – symcbean 2013-03-12 21:31:35