歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> Linux基礎——sudoers文件的寫法

Linux基礎——sudoers文件的寫法

日期:2017/2/28 14:47:39   编辑:Linux教程

概述

sudoers文件的作用是控制用戶可以執行哪些指令。它是Linux系統管理員的重要一課喔。

文件的組成

sudoers文件由三部分組成:

  • sudoers的默認配置,主要設置sudo的一些缺省值(本文不會對這些默認配置進行介紹,若有興趣可以自己man 5 sudoers然後搜defaults)
  • alias(別名),可以看作是變量的定義啦,本文也會全面的說說別名的定義。
  • 規則定義,sudoers文件的重點啦,本文會著重說明規則的定義。

Alias(別名)

一共有四種類型的別名,這些類型可以看作它們是數據類型啦哈。
  • User_Alias
  • Runas_Alias
  • Host_Alias
  • Cmnd_Alias
那麼要如何定義這些Alias呢?語法如下: User_Alias NAME=User_List Runas_Alias NAME=Runas_List Host_Alias NAME=Host_List Cmnd_Alias NAME=Cmnd_List 這裡的NAME就可以看作是變量名咯。注意,NAME必須是要以大寫字母開頭,而且只能包含有大寫字母,數字,下劃線呢。那麼User_List,Runas_List,Host_List,Cmnd_List又是什麼呢?其實就是以“,"分隔的一個數組啦,只不過這四個別名表示的數組內容都會不同啦。 現在分別看看User_List,Runas_List,Host_List,Cmnd_List的每個數組元素可以是些什麼值吧! User:[!][username |#uid |%groupname | +netgroup |%:nonunix_group |User_Alias] Runas:[!][username|#uid |%groupname | +netgroup |Runas_Alias] Host:[!][hostname | ip_addr | network(/netmask)? | netgroup | Host_Alias] Cmnd:[!][commandname| directory| "sudoedit" | Cmnd_Alias] 看看上面的元素名就可以知道大概什麼意思了吧?這裡著重拿些可能有疑問的出來說說。 歎號'!'表示取反的意思啦。 每個元素都可以是之前定義過的別名變量啦,所以會有User_List,Runas_List,Host_List,Cmnd_List這些元素啦。 directory表示有可以進入該目錄並執行命令的權限啦 "sudoedit"表示允許用戶使用sudo -e選項。 如果還沒搞懂的話,可以看下面的別名定義的例子: User_Alias USER_TEST=tim,#501,%svn,+webgroup,%:nonunix,!nouser Runas_Alias RUNAS_TEST=tim,#501,%svn,!+webgroup Host_Alias HOST_TEST=!www.baidu.com,localhost,127.0.0.1 Cmnd_Alias CMND_TEST=Cmnd_Alias CMDS=/bin/passwd,/bin/ls,/home/svn

User Specification(用戶規則)

用戶規則定義的語法如下: User_List Host_List=(Runas_List1:Runas_List2) SELinux_Spec Tag_Spec Cmnd_List,... 下面對上面的語法進行說明一下: User_List(必填項):指的是該規則是針對哪些用戶的。 Host_List(必填項):指的是該規則針對來自哪些主機的用戶。 Runas_List1(可選項):表示可以用sudo -u來切換的用戶 Runas_List2(可選項):表示可以用sudo -g來切換的用戶組 SELinux_Spec(可選項):表示SELinux相關的選項,可選值為ROLE=role 或 TYPE=type。本人對SELinux不太熟,以後再補充這裡吧。 Tag_Spec(可選項):用於控制後面Cmnd_List的一些選項啦,可選值有下面這些,具體自己man一下吧,這裡就不啰嗦了。

'NOPASSWD:' | 'PASSWD:' | 'NOEXEC:' | 'EXEC:' | 'SETENV:' | 'NOSETENV:' | 'LOG_INPUT:' | 'NOLOG_INPUT:' | 'LOG_OUTPUT:' | 'NOLOG_OUTPUT:'

...(可選項):表示可以有多個(Runas_List1:Runas_List2) SELinux_Spec Tag_Spec Cmnd_List段的意思了。

Notice:如果Runas_List1和Runas_List2都沒填的話,默認是以root用戶執行

如果不是很理解的話,可以對比著文章後面舉的例子來看下,應該難不倒聰明的我們!

Copyright © Linux教程網 All Rights Reserved