Latest News

Home » 網站架設網頁設計教學(軟體集中營) » OB2D主機伺服器使用【SUDO】,那什麼是:【SUDO】呢?

OB2D主機伺服器使用【SUDO】,那什麼是:【SUDO】呢?

OB2D主機伺服器使用【SUDO】,那什麼是:【SUDO】呢?

SUDO是一個可以讓某些人暫時以root的身分執行某些經過允許的指令,也可說像是指派使用者至不同的群組給予特殊的檔案權限。
無論如何,他允許使用者於機器上使用特殊的指令,可以有效指派特殊權限的方法。

第一步,拿到SUDO軟體。

可以到Debian下載(副檔名.deb)於ftp://ftp.debian.org、或下"apt-get ins
tall sudo"

或於http://www.rpmfind.net/RPM尋得。

如果上面都行不通,到http://www.courtesan.com/sudo/拿Tar壓縮檔。

配置SUDO允許執行的使用者

現在SUDO裝好,我們於/etc找一個叫sudoers檔案編輯。
如果上面都行不通,到http://www.courtesan.com/sudo/拿Tar壓縮檔。

配置SUDO允許執行的使用者

現在SUDO裝好,我們於/etc找一個叫sudoers檔案編輯。

話說在前,你還要一個visudo軟體,他已置入SUDO軟體內,它提供安全檢查,
核對sudoers 的語法及斷句的錯誤,及禁止修改文件。

Visudo要Bash的VISUAL參數,設定文字編輯器的環境,請跟我下這個指令:

export VISUAL="pico -w"

在此,我們用PICO來做為文字編輯器的環境,我們現在輸入visudo,現在它打
開了/etc/sudoers供我們編輯。
在這,你會看到像這樣幾行的字:

注意:這是Debian的安裝方式,這裡有些參數我沒有著墨,我們是用預設值,
引以為例。這份是Sudo基本安裝指南,你可以輸入"man sudoers"或"man sudo
"看看我沒寫的地方。

#主機群列表

#使用群列表

#使用命令群

#設定某人能使用某命令
root    ALL=(ALL) ALL

以下為範例,純屬虛構。不過你聽完我這一席話,你就知道設定的方法。
主機名稱,就是可以使用Sudo的主機或簡易機主機名,在這裡可以指定一個或
多群主機,看看下面設法:

I.主機群列表
這一部分為主機的名稱。格式為:

Host_Alias 主機群名稱 = 主機一,主機二,其他…

第一類就是設定使用群的定義,如果只有一台要用Sudo,就不用設定。

II.使用群列表

這一部分為使用者群組的名稱。格式為:

User_Alias 使用群名稱 = 使用者一,使用者二,其他…
II.使用群列表

這一部分為使用者群組的名稱。格式為:

User_Alias 使用群名稱 = 使用者一,使用者二,其他…

我們來試看看,設定三個群組:ADMINS、PARTTIME及LINUXGROUP,也可以包含
不同組別的使用者。

User_Alias      ADMINS = netman, harrier, master
User_Alias      PARTTIME = jalala, sonar , huge
User_Alias      LINUXGROUP = lyte, SirPlaya

III.使用命令群

這一部分跟上面兩種格式相同:
User_Alias      ADMINS = netman, harrier, master
User_Alias      PARTTIME = jalala, sonar , huge
User_Alias      LINUXGROUP = lyte, SirPlaya

III.使用命令群

這一部分跟上面兩種格式相同:

Cmnd_Alias 命令群  = 命令一,命令二,其他…

如果要加入特別參數,可以用[]通用參數使用指令,舉個例子,USERS 這群使
用/usr/sbin/adduser [A-z]*,後面可使用一至多個參數。

Cmnd_Alias      BROWSE = /bin/ls, /bin/cd, /bin/cat
Cmnd_Alias      KILL = /bin/kill
Cmnd_Alias      USERS = /usr/sbin/adduser [A-z]*,/usr/sbin/userdel –
r [A-z]*

IV.設定某人能使用某命令

下面這行就是全部的指令都能執行,不過有個麻煩是「他什麼都能做」。

root    ALL=(ALL) ALL

下一行就是設定ADMINS群組裡面的netman、harrier及master,給予權限。

ADMINS ALL=ALL

下一行就比較有趣了喔,我們來設定PARTTIME裡的這三位臨時工jalala、sonar
及huge,可以在所有伺服器中,使用USERS、KILL及BROWSE這三群指令,還可以
執行/usr/bin/passwd,可是我們現在不想讓他改密碼( 因為我怕他們信用太低
把我的主機吞了 ),那有什麼方法,來!看看我下面怎麼變魔術:

PARTTIME ALL=USERS,KILL,BROWSE,/usr/bin/passwd [A-z]*, !/usr/bin/pass
wd root

看到了嗎,我在/usr/bin/passwd我加了一個"!",這樣就Ok拉。

djg DJNET=ALL

那這一行又是什麼,就是讓DJNET主機群來的djg「開放所有權限」。

最後快大功告成了,我們來設定LINUXGROUP內的lyte及SirPlaya 執行KILL,USE
RS, and BROWSE命令群內,本機的www 使用者能用的指令表,讓LINUXHELP(lin
group1及lingroup2這兩台)使用。該使用者可暫時使用Root 身份執行該指令。

LINUXGROUP LINUXHELP=(www) ALL (root) KILL,USERS,BROWSE

好了,現在/etc/sudoers經過適當調整後,存檔並離開visudo,如果語法錯錯誤
他還會提示您。
使用SUDO

現在看看我怎麼用Sudo:

djg@localhost:~ $ sudo -l
Password:   (在這輸入您的密碼)

如此一來,djg 就會按照/etc/sudoers的規則,來分配指令。

djg@localhost:~ $ sudo -u 使用者可以執行的指令 commandhere
Password:   (在這輸入您的密碼)
(如果無誤就會執行「使用者可以執行的指令」)

如果您使用root指令,-u參數會為預設值,通常這不需要,最簡單的用法:

djg@localhost:~ $ sudo commandhere

sudo於五分鐘之內,不需重新輸入密碼。

About

發佈留言