如何使用受限shell來限制linux使用者可以做什麼

受限的shell限制了使用者帳戶在Linux上可以做什麼。受限使用者不能更改其目錄,您可以控制他們可以訪問哪些命令。下面介紹如何在Linux上設定受限shell。...

受限的shell限制了使用者帳戶在Linux上可以做什麼。受限使用者不能更改其目錄,您可以控制他們可以訪問哪些命令。下面介紹如何在Linux上設定受限shell。

受限炮彈

受限shell不是另一個shell。這是標準外殼的另一種模式。Bash、Korn、Fish和其他shell都可以在受限shell模式下啟動。在本文中,我們將使用Bash,但相同的原則也適用於其他shell。

因為受限shell只是使用標準shell的另一種方式,所以它們很容易設定。沒有什麼可安裝的,而且它們在Linux所在的任何地方都可用。

受限shell也可以應用於指令碼。這就確保瞭如果它們被錯誤地寫入,可能造成的任何損壞都被限制在它們的受限世界中,並且它們無法訪問您的整個計算機。

不過,請注意,受限炮彈並不是完全可以逃脫的。有足夠知識的人可以逃脫限制。它們非常適合為臨時使用者設定安全邊界,但不要依賴受限shell來實現生產系統的任何真實安全。

相關:Bash、Zsh和其他Linux shell之間有什麼區別?

限制重擊

當您將Bash作為受限shell執行時,使用者將從中刪除一些功能。具體來說,使用者不能:

  • 使用cd更改工作目錄。
  • 更改$PATH、$SHELL、$BASHèENV或$ENV環境變數的值(但它們可以讀取當前值)。
  • 讀取或更改$SHELLOPTS shell環境選項。
  • 重定向命令的輸出。
  • 呼叫需要路徑來定位它們的命令。也就是說,不能發出包含一個或多個正斜槓“/”的命令。
  • 呼叫exec來替換shell的另一個程序。
  • 使用指令碼中的任何限制功能。

您可以使用-r(restricted)選項來呼叫受限制的Bash shell。禁止嘗試執行更改工作目錄之類的簡單任務。一條簡短的訊息告訴您cd受到限制。

bash -r cd Documents

如何使用受限shell來限制linux使用者可以做什麼

Bash shell還可以檢測何時使用“rbash”而不是“Bash”呼叫它,這使得它也以受限shell的形式啟動。這提供了一種為特定使用者設定預設shell的方便方法,我們將很快使用它。

如果我們在Ubuntu上使用whereis命令來查詢rbash檔案,我們將看到可執行檔案位於“usr/bin”目錄中。手冊頁位於“/usr/share/man/man1”目錄中。

將ls命令與-l(long)選項一起使用,可以發現rbash實際上是bash的符號連結。

whereis rbash ls -l /usr/bin/rbash

如何使用受限shell來限制linux使用者可以做什麼

在Manjaro和Fedora上,必須建立rbash符號連結。這適用於兩種發行版:

whereis rbash sudo ln -s /bin/bash /bin/rbash whereis rbash

如何使用受限shell來限制linux使用者可以做什麼

第二次使用whereis命令時,它會在“/usr/bin”目錄中找到rbash。

限制使用者

讓我們建立一個名為“Minnie”的新使用者帳戶。我們將使用useradd命令的-s(shell)選項將shell設定為受限shell。我們還將使用asswd命令設定帳戶密碼,然後為它們建立主資料夾。

mkdir命令中的-p(parents)標誌告訴mkdir建立目標目錄以及它需要建立的任何父目錄。因此,透過建立“/home/minnie/bin”目錄,我們可以同時建立“/home/minnie”目錄。

sudo useradd minnie -s /bin/rbash sudo passwd minnie sudo mkdir -p /home/minnie/bin

如何使用受限shell來限制linux使用者可以做什麼

當敏妮登入時,她將在一個受限的外殼中執行。

cd

如何使用受限shell來限制linux使用者可以做什麼

她不能呼叫需要包含正斜槓“/”的命令:

/usr/bin/ping

如何使用受限shell來限制linux使用者可以做什麼

但是,她仍然可以執行在路徑中找到的命令。

ping

如何使用受限shell來限制linux使用者可以做什麼

這不是你所期望的行為,當然也不是我們想要的。為了進一步加強限制,我們需要更改minnie的shell用於查詢命令的路徑。

收緊限制

當我們建立minnie的home目錄“/home/minnie”時,我們還建立了一個“/home/minnie/bin”目錄。這就是目錄發揮作用的地方。

我們將編輯minnie的“.bash\u profile”檔案,並將她的路徑設定為僅指向該目錄。我們還將限制minnie的“.bash\u profile”檔案,以便只有root使用者可以編輯它。這意味著沒有其他使用者可以編輯該檔案並更改其路徑。

sudo gedit /home/minnie/.bash_profile

如何使用受限shell來限制linux使用者可以做什麼

編輯現有“PATH=”或新增以下行:

PATH=$HOME/bin

如何使用受限shell來限制linux使用者可以做什麼

儲存檔案。我們將使用chown命令將檔案的所有者更改為root,並使用chmod命令更改檔案許可權。只有根使用者才能編輯檔案。

sudo chown root:root /home/minnie/.bash_profile sudo chmod 755 /home/minnie/.bash_profile ls -l /home/minnie/.bash_profile

如何使用受限shell來限制linux使用者可以做什麼

下一次使用者minnie登入時,她的路徑指向一個資料夾。

如何使用受限shell來限制linux使用者可以做什麼

我們的受限使用者minnie只能使用Bash內建的命令,比如echo、alias和logout。她甚至不能用ls!

ls

如何使用受限shell來限制linux使用者可以做什麼

如果我們希望他們能做任何有用的事情,我們就需要放鬆一下我們的勒索。我們將建立一些符號連結,從minnie的“bin”目錄到我們希望minnie能夠使用的命令。

sudo ln -s /bin/ls /home/minnie/bin sudo ln -s /bin/top /home/minnie/bin sudo ln -s /bin/uptime /home/minnie/bin sudo ln -s /bin/pinky /home/minnie/bin

如何使用受限shell來限制linux使用者可以做什麼

當minnie下次登入時,她會發現她可以使用Bash內建命令,以及那些連結到的命令。

ls pinky dave uptime

如何使用受限shell來限制linux使用者可以做什麼

限制現有使用者

我們建立了一個新使用者minnie。要更改現有使用者的shell,可以使用usermod命令的-s(shell)選項。

sudo usermod -s /bin/rbash mary

如何使用受限shell來限制linux使用者可以做什麼

您可以在“/etc/passwd”檔案中使用less命令快速檢視將哪個shell設定為使用者的預設shell。

less /etc/passwd

如何使用受限shell來限制linux使用者可以做什麼

我們可以看到,使用者mary下次登入時將使用受限shell。

如何使用受限shell來限制linux使用者可以做什麼

記住將其他更改應用於$PATH環境變數,並設定希望使用者mary能夠執行的命令。

限制指令碼

常規的、不受限制的使用者可以啟動在受限shell中執行的指令碼。複製以下行並將其貼上到編輯器中。將檔案另存為“受限.sh“然後關閉編輯器。

#!/bin/bash # script starts in normal Bash shell echo "## In UNrestricted mode! ##" echo echo "Current directory: `pwd`" echo "Changing directory" cd /usr/share echo "Now in directory: `pwd`" echo "Changing to home directory" cd ~ echo "Now in directory: `pwd`" # Setting restricted mode set -r echo echo "## In restricted mode! ##" echo echo "Current directory: `pwd`" echo "Changing directory to /home/" cd /home echo "Still in directory: `pwd`" echo echo "Trying to start another shell" /bin/bash echo echo "Trying to redirect command output" ls -l $HOME > my_files.txt cat my_files.txt echo exit 0

我們需要使用chmod命令和+x(execute)標誌來使指令碼可執行。

chmod +x restricted.sh

如何使用受限shell來限制linux使用者可以做什麼

指令碼的第一部分在普通shell中執行。

./restricted.sh

如何使用受限shell來限制linux使用者可以做什麼

指令碼的第二部分是在受限shell中執行的“set-r”行之後的位。

如何使用受限shell來限制linux使用者可以做什麼

在指令碼的受限制部分中,沒有任何嘗試的操作成功。

透過在第一行新增-r,可以使整個指令碼在受限shell中執行:

!#/bin/bash -r

還記得胡迪尼嗎

受限炮彈是有用的,但並非完全無誤。一個足夠熟練的使用者可以逃脫他們。但如果使用得當,它們是為特定帳戶建立一組限制的有用方法。

  • 發表於 2021-03-31 10:57
  • 閱讀 ( 55 )
  • 分類:網際網路

你可能感興趣的文章

如何用ssh遠端管理linux伺服器

... …其中[遠端主機]是您正在訪問的IP地址。如果您的使用者名稱在遠端系統上不同,您可以透過輸入以下內容指定確切的使用者名稱: ...

  • 發佈於 2021-03-15 17:05
  • 閲讀 ( 53 )

如何在windows10上獲得linux bash shell

...2018年Windows 10週年更新中,並在秋季Creators更新中向所有使用者推出,它基本上可以讓您在Windows 10中執行Linux軟體。 ...

  • 發佈於 2021-03-21 11:48
  • 閲讀 ( 58 )

在linux中,“bash”是什麼意思?

... Bash是最流行的shell語言之一,以其強大功能和使用者友好命令的結合而聞名。這就是它在Linux發行版中如此豐富的原因。 ...

  • 發佈於 2021-03-28 13:14
  • 閲讀 ( 61 )

哪個linux shell最好?比較了5種常見的貝殼

... 這是Linux使用者中最流行的shell。如果沒有Bourne-Again-Shell(bash)作為等式的一部分,甚至很難想到Shell。許多Linux發行版附帶bash作為預設shell,因為bash是預設的gnushell。在1989年發行...

  • 發佈於 2021-03-30 18:45
  • 閲讀 ( 49 )

如何在linux上以彩色顯示手冊頁

...出顯示的文字。 向下滾動,您將看到頁面的不同元素是如何著色的。 多用與少用非常相似,但也有一些不同。在most中按H可檢視鍵繫結及其函式的列表。 用更少的顏色 如果你不想安裝另一個尋呼機或必須學習新的按鍵,有一...

  • 發佈於 2021-04-01 20:53
  • 閲讀 ( 41 )

如何使用chsh在linux上更改預設shell

...編寫的,並不是從任何其他shell家族派生的。它的目的是使用者友好。在它的許多其他特權中,fish根據您的歷史記錄和當前資料夾的內容為命令提供建議,類似於預測文字。 ksh:KornShell提供了一種特別強大的指令碼語言。 相關...

  • 發佈於 2021-04-02 06:04
  • 閲讀 ( 64 )

如何在linux上使用cd命令

...小又簡單。 在使用Linux計算機的第一個小時內,您將學習如何使用Bash和其他shell附帶的cd命令。也許您以前有在其他作業系統上使用它的經驗,不需要解釋。它會改變當前的工作目錄,對嗎?還有什麼要知道的? 好吧,比你想象...

  • 發佈於 2021-04-02 08:58
  • 閲讀 ( 65 )

如何使用linux的screen命令

...視窗推到後臺(稱為“分離”)。當你想看到你的程序是如何進行的,你可以把視窗拉到前臺(“重新連線”)並再次使用它。這對於您不希望透過關閉終端視窗意外終止的長程序來說非常有用。 一旦運行了螢幕會話,就可以...

  • 發佈於 2021-04-02 11:06
  • 閲讀 ( 49 )

如何在linux中向$path新增目錄

...Linux計算機後臺的靜默操縱器之一。它會悄悄地影響你的使用者體驗,但這並沒有什麼不好的地方。我們將解釋它的作用,以及如何調整它。 什麼是$path,它是如何工作的($path on linux, and how does it work)? 當您在終端視窗中鍵入...

  • 發佈於 2021-04-02 14:04
  • 閲讀 ( 42 )

如何在linux上使用at和batch來排程命令

...我們命令將在sh shell下執行。 第二行:我們看到命令將在使用者和組ID都為1000的情況下執行。這些是執行at命令的人的值。 第三行:收到任何電子郵件的人。 第四行:使用者掩碼是22。這是用於設定在此sh會話中建立的任何檔案...

  • 發佈於 2021-04-02 18:33
  • 閲讀 ( 67 )
uz59146
uz59146

0 篇文章

作家榜

  1. admin 0 文章
  2. 孫小欽 0 文章
  3. JVhby0 0 文章
  4. fvpvzrr 0 文章
  5. 0sus8kksc 0 文章
  6. zsfn1903 0 文章
  7. w91395898 0 文章
  8. SuperQueen123 0 文章

相關推薦