Centos
禁止使用者與系統進行任何互動
我正在尋找一種將使用者與系統完全隔離的方法,只允許使用者登錄系統並與打開的程序進行互動。
我可以實現這一點的一種方法是剝離每個文件夾和/或文件的所有權限。
我的目標是讓使用者登錄到我的系統,並且只允許使用者訪問一個 Java 執行檔,然後使用者可以啟動它並進行互動。
有沒有更好的方法來做到這一點?
謝謝
您可能希望將這些使用者的預設 shell 設置為
/bin/rbash
–restricted bash (bash -r
)。見man rbash
。這可以通過命令來完成chsh -s /bin/rbash {USER}
。為了防止他們執行您想要的以外的其他命令,請將他們的 PATH 變數環境設置為僅包含您希望他們在其執行的執行檔的文件夾
~/.bash_profile
:export PATH="$HOME/bin"
編輯:
此時,攻擊者仍有可能突破 rbash。實際上,
ssh
允許執行遠端命令。他們仍然可以執行類似的操作ssh ... cp /bin/bash bin
,將 bash 添加到他們可以執行的命令集中。問題是當直接從 ssh 執行時,似乎 bash(或 rbash)不讀取.bash_profile
, nor.profile
, nor/etc/profile
。連結(2)提出了這個問題的解決方案。
man sshd_config
描述了所有可以設置的選項/etc/ssh/sshd_config
。顯然,腳本~/.ssh/rc
(以及/etc/sshrc
參見連結(4))在我們需要時執行 - 每當使用者 ssh 一些命令時。但是我沒有測試過。在這一點上,使用
scp
.此外,您需要在
/etc/ssh/sshd_config
. 這是通過註釋以下行來完成的:Subsystem sftp /usr/lib/openssh/sftp-server
連結:
- (0) https://stackoverflow.com/questions/402615/how-to-restrict-ssh-users-to-a-predefined-set-of-commands-after-login
- (1) https://serverfault.com/questions/28858/is-it-possible-to-prevent-scp-while-still-allowing-ssh-access
- (2) https://serverfault.com/questions/133242/disabling-all-commands-over-ssh
- (3) https://access.redhat.com/solutions/65822
- (4) https://docstore.mik.ua/orelly/networking_2ndEd/ssh/ch08_04.htm