visudo使用筆記


目錄
前言
一、介紹
二、配置文件簡介
三、實戰配置

 

前言:
    su 的確為管理帶來方便,通過切換到root下,能完成所有系統管理工具,只要把root的密碼交給任何一個普通用戶,他都能切換到root來完成所有的系統管理工作;但通過su切換到root后,也有不安全因素;比如系統有10個用戶,而且都參與管理。如果這10個用戶都涉及到超級權限的運用,做為管理員如果想讓其它用戶通過su來切換到超級權限的root,必須把root權限密碼都告訴這10個用戶;如果這10個用戶都有root權限,通過root權限可以做任何事,這在一定程度上就對系統的安全造成了威協。因此sudo產生了。
    我們可以把sudo理解成是系統管理員有針對性地把權限下放,也就是“放權”,因此,被“授權”的用戶如果想要以root的身份執行某些命令/操作,只需要輸入該用戶的密碼即可,無需知曉我們的root密碼是多少,當執行完成后,直接退回到當前用戶。這樣子的約束大大地提高了系統管理的安全性。
    當然,這一切的大前提就是通過sudo的配置文件/etc/sudoers來進行授權。

 

 

一、介紹:
    sudo的配置文檔是/etc/sudoers ,我們能夠用他的專用編輯工具visudo對其進行編輯 ,此工具的好處是在添加規則有誤時,保存退出會提示給我們錯誤信息;

附注:如果沒有visudo命令 需要 yum install -y sudo

    配置完畢后,如果想知道哪些命令是您當前用戶能夠執行或禁止的,可通過切換至該用戶身份,然后通過sudo -l 查看;

    如果不太熟悉用戶身份切換的可參考以下鏈接:Linux系統用戶及用戶組管理

 

 

二、配置文件簡介:
    /etc/sudoers 文件有其書寫格式,其中有別名類型以及“放權格式”,下面我們來一一介紹。

別名類型包括如下四種:
Host_Alias  定義主機名別名;
User_Alias  用戶別名,別名成員能夠是用戶,用戶組(前面要加%號)
Runas_Alias 用來定義runas別名,這個別名指定的是“目的用戶”,即sudo 允許轉換至的用戶;
Cmnd_Alias  定義命令別名;

需要注意的是:
1.在每一種Alias后面定義的別名 NAME 可以是包含大寫字母、下划線連同數字,但必須以一個大寫字母開頭
2.配置文件中的 Default env_reset 表示重置(就是去除)用戶定義的環境變量,也就是說,當你用sudo執行一個命令的時候,你當前用戶設置的所有環境變量都是無效的。
放權格式授權用戶/組    主機名=(允許轉換至的用戶)   NOPASSWD:命令動作
紅色標注的三個要素缺一不可,但在動作之前也能夠指定轉換到特定用戶下,在這里指定轉換的用戶要用( )號括起來,
假如無需密碼直接運行命令的,應該加NOPASSWD:參數,不需要時方可省略,下面介紹中會有NOPASSWD的使用示例。

 

 

三、實戰配置:
    說了這么多,進入正題吧。我們先把配置放出來,然后通過注釋了解上面內容的使用方法

User_Alias SYSADER=beinan,linuxsir,%beinan

User_Alias DISKADER=lanhaitun

Runas_Alias OP=root

Cmnd_Alias SYDCMD=/bin/chown,/bin/chmod,/usr/sbin/adduser,/usr/bin/passwd [A-Za-z]*,!/usr/bin/passwd root(注意這里的!)

Cmnd_Alias DSKCMD=/sbin/parted,/sbin/fdisk 注:定義命令別名DSKCMD,下有成員parted和fdisk ;
   
   SYSADER  ALL= SYDCMD,DSKCMD
   DISKADER ALL= (OP) DSKCMD

注解:

第一行:定義用戶別名SYSADER 下有成員 beinan、linuxsir和beinan用戶組下的成員,用戶組前面必須加%號;

第二行:定義用戶別名 DISKADER ,成員有lanhaitun

第三行:定義Runas用戶,也就是目標用戶的別名為OP,下有成員root

第四行:定義SYSCMD命令別名,成員之間用,號分隔,最后的!/usr/bin/passwd root 表示不能通過passwd 來更改root密碼;

第五行:定義命令別名DSKCMD,下有成員parted和fdisk ;

第六行:表示授權SYSADER下的任何成員,在任何可能存在的主機名的主機下運行或禁止 SYDCMD和DSKCMD下定義的命令。
        更為明確遙說,beinan、linuxsir和beinan用戶組下的成員能以root身份運行 chown 、chmod 、adduser、passwd,但不能更改root的密碼;
        也能夠以root身份運行 parted和fdisk ,
        本條規則的等價規則是;
        
    beinan,linuxsir,%beinan ALL=/bin/chown,/bin/chmod,/usr/sbin/adduser,/usr/bin/passwd [A-Za-z]*,!/usr/bin/passwd root,/sbin/parted,/sbin/fdisk

第七行:表示授權DISKADER 下的任何成員,能以OP的身份,來運行 DSKCMD ,無需密碼;更為明確的說 lanhaitun 能以root身份運行 parted和fdisk 命令;其等價規則是:

    lanhaitun ALL=(root) /sbin/parted,/sbin/fdisk

       如果我想不輸入用戶的密碼就能轉換到root並運行 SYDCMD 和 DSKCMD 下的命令,那應該把把NOPASSWD:加在哪里為好?參考下面例子;

    SYSADER ALL= NOPASSWD: SYDCMD, NOPASSWD: DSKCMD

 

    至此,基本用法的介紹已經到此結束了,但是visudo的配置遠遠不止如此,詳細的可以參考以下鏈接:

Sample /etc/sudoers file.

Linux用戶配置sudo權限(visudo)

一篇關於su和sudo以及visudo很好的介紹文檔


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM