sudo的使用和配置

2021-09-08 12:31:27 字數 3005 閱讀 5318

sudo是unix/linux平台上的乙個非常有用的工具,它允許系統管理員分配給普通使用者一些合理的「權利」,讓他們執行一些只有超級使用者或其他特許使用者才能完成的任務,比如:執行一些像mount,halt,su之類的命令,或者編輯一些系統配置檔案,像/etc/mtab, /etc/samba/smb.conf等。這樣以來,就不僅減少了root使用者的登陸次數和管理時間,也提高了系統安全性。

sudo設計者的宗旨是:給使用者盡可能少的許可權但仍允許完成他們的工作。所以,sudo有以下特點:

who host=(runas)  tag:command

樣例: 

oracle all=(root) nopasswd:/usr/sbin/useradd, passwd:/usr/sbin/userdel

注:上面的意思就是:oracle使用者可以在任何地方以root身份無密碼執行useradd有密碼執行usermod。

此外sudo還支援別名的定義,我們通過引用定義好的別名可以提供工作效率:

who                      user_alias

which_hosts          host_alias

runas                    runas_alias

command             cmnd_alias

user_alias

host_alias

runas_alias

cmnd_alias

使用者名稱主機名

使用者名稱命令路徑(全路徑)

組名(%)

ip 位址

組名(%)

目錄其他user_alias

網路位址

其他runas_alias

其他cmnd_alias

其他host_alias

雖然我們可以使用vim直接來編輯sudo的配置檔案,但sudo提供了更加智慧型的編輯命令visudo,它能在編輯配置檔案的同時幫我們檢查語法錯誤,並在錯誤時提供快捷的返回功能,相當nice。

注意在你使用visudo命令前,你有必要設定下editor=vim來替換預設的vi,可以開啟的時候語法高亮,看起來起來舒服多了。

[root@centos74 ~]$ vim ~/.bash_profile                   #編輯profile檔案

# 新增如下行

export editor=vim

[root@centos74 ~]$ source ~/.bash_profile # 讓其立即生效

/etc/sudoers是sudo的主配置檔案,如果我們想設定sudo設定,建議在/

etc/sudoers.d/下面建立檔案編輯。

[root@centos74 sudoers.d]$ visudo  -f /etc/sudoers.d/oracle2          # 這裡我給oracle2使用者一些sudo許可權,命令會在sudoers.d目錄下建立乙個檔案的。這個檔名貌似使用.conf結尾貌似不可以的。

關於時間戳這個東西。我們預設使用sudo執行命令的時候,第一次是需要輸入密碼的,短時間內再次執行sudo命令是不需要再次輸入密碼的。這個時間是有時間戳控制的。我們可以指定-k修改時間戳為元年,下次在sudo執行命令就必須輸入密碼。

3.5.1 oracle使用者可以在任何地點以任何的身份執行所有命令,等同於root。

oracle all=(all)        all

3.5.2 oracle2使用者可以在任何地點以root的身份執行命令useradd(無需密碼)和usermod(需要密碼).

oracle2 all=(root) nopasswd:/usr/sbin/useradd, passwd:/usr/sbin/userdel

這樣oracle2就可以免密碼useradd,有密碼(密碼為oracle2的自身密碼)使用userdel。

使用方式如下

[oracle2@centos74 ~]$ useradd test001                               # 直接使用命令是不可以的。

-bash: /usr/sbin/useradd: permission denied

[oracle2@centos74 ~]$ sudo

useradd test001 # 必須加sudo

[oracle2@centos74 ~]$ id

test001 # 檢視新增的使用者資訊

uid=1031(test001) gid=1032(test001) groups=1032(test001)

3.5.3 oracle3使用者只能在192.168.1.120主機遠端登入並以root身份執行ifconfig eth0命令。

cmnd_alias netcmnd = /sbin/ifconfig

eth0

oracle3

192.168.1.120 = (root) nopasswd:netcmnd

3.5.4 oracle4使用者可以執行/usr/sbin下的所有命令除了/usr/sbin/userdel

oracle4 all=(all) /usr/sbin/,!/usr/sbin/userdel

3.5.5 oracle5使用者可以cat /var/log/secure*的檔案

oracle5 all=(all) /bin/cat /var/log/secure*,!/bin/cat /var/log/secure* *

注意這個如果不加!後面的內容,使用者可以執行如下命令cat /var/log/secure /etc/shadow 這樣的命令隨便檢視系統的檔案。很危險。

為了能夠明確的追究責任,sudo還提供了人性化的日誌功能,在/var/log/secure日誌檔案中可以檢視到,用於記錄所有sudo類使用者的所有動作。

Linux授權中的sudo配置和使用教程

sudo是openbsd的一部分,其作者是 todd c.miller。在 freebsd 中可以使用 ports 或 package 來安裝。在linux中預設是安裝好的。下面就來看看如何配置sudo授權。1 配置sudo sudo的配置檔案在 usr local etc sudoers裡面。su...

su和sudo的使用

普通使用者執行 su 命令的時候,會索要root使用者的密碼切換到root使用者。root使用者擁有最高許可權,就可以為所欲為的做了。su命令預設是請求切換到root使用者,如果使用 su 使用者 方式則可以切換到指定使用者。注意 su並不會真正切換使用者身份,也就是環境變數不變 只有 su 使用者...

sudo配置教程

1 sudo配置檔案是 etc sudoers 另外會自動包含 etc sudoers.d目錄下的檔案 etc sudoers檔案最後有一句 includedir etc sudoers.d 其中的 不是注釋不用取消 2 etc sudoers預設許可權440 r r 如果是要編緝要切換到root然...