sudo配置 sudoers配置文件

来源:https://www.cnblogs.com/xytotem/archive/2018/04/08/8747962.html
-Advertisement-
Play Games

在linux系統中, 普通用戶的許可權很低, 比如shutdown關機, 或者yum install安裝軟體等很多命令都需要root用戶許可權來運行. 普通用戶想要執行這些命令, 要麼使用su命令切換為root用戶, 而使用su命令需要輸入root密碼, 當伺服器很多人共同管理, 所有管理員都需要知道r ...


在linux系統中, 普通用戶的許可權很低, 比如shutdown關機, 或者yum install安裝軟體等很多命令都需要root用戶許可權來運行. 普通用戶想要執行這些命令, 要麼使用su命令切換為root用戶, 而使用su命令需要輸入root密碼, 當伺服器很多人共同管理, 所有管理員都需要知道root密碼, 是很不安全的; 要麼使用sudo命令臨時獲取root許可權, 而執行sudo命令只需要用戶自己的密碼, 甚至可以免密碼, 而且只有通過配置的特殊用戶才具有sudo特權, 只要許可權分配合理, 安全性會更有保障. 

普通用戶是否具有sudo特權, 由sudoers配置文件來指定, 可通過"man sudo"來確認配置文件位於"/etc/sudoers". 先用su命令切換到root用戶, 再用vim打開文件, 用普通用戶打開的話看不到文件內容:

[xy@localhost ~]$ su
Password:
[root@localhost xy]# vim /etc/sudoers

閱讀文件內容,在第8行有說請用visudo命令編輯文件:

## This file must be edited with the 'visudo' command.

用"ll /etc/sudoers"查看文件屬性也可發現該文件為只讀文件,退出vim重新用visudo打開文件

[root@localhost xy]# visudo

 

1,最基礎無腦的配置:

root       ALL=(ALL)        ALL

大概位於98行上下,其所代表的含義分別是:

用戶帳號,也就是我們想要配置的讓哪個系統帳號可以使用sudo命令

允許用戶從哪些地方連接到這台主機,linux作為伺服器,管理員是有可能從別的主機遠程連接過來的

允許切換的身份,

允許執行的命令

照葫蘆畫瓢,在下麵增加一行

root   ALL=(ALL)   ALL
xy    ALL=(ALL)    ALL

當xy用戶使用sudo執行的時候,就可以像root那樣為所欲為了。

 

2,根據用戶組及無密碼的配置:

## Allows people in group wheel to run all commands
%wheel    ALL=(ALL)    ALL

## Same thing without a password
# %wheel    ALL=(ALL)    NOPASSWD: ALL

跟第一種配置方式相比,也就在前面多了一個“%”,用來表示用戶組。最前面的“#”表示註釋, 把"#"去掉即可生效; 而後面的"NOPASSWD:"即表示不需要輸入密碼就可以執行命令

設置了某個用戶組具有sudo許可權之後,只需要使用usermod命令把相應的用戶添加到該用戶組就可以了:

usermod -a -G wheel xyuser

3,有限制的命令操作:

%users     ALL=(root)     /usr/bin/passwd

允許users用戶組的用戶以root許可權修改其他用戶的密碼。

當用戶以"sudo passwd"或者"sudo passwd root"方式運行命令的時候,可以直接把root用戶的密碼改掉,這真是太危險了,必須要把這兩條命令禁止調,在命令前面加上"!"來表示不可執行的命令,如下所是:

%users      ALL=(root)     !/usr/bin/passwd, /usr/bin/passwd [A-Za-z]*, !/usr/bin/passwd root

4,通過別名問題來設置,有命令別名,賬戶別名,主機別名等,具體參考sudoers文件提供的例子: 

## Host Aliases
## Groups of machines. You may prefer to use hostnames (perhaps using
## wildcards for entire domains) or IP addresses instead.
# Host_Alias FILESERVERS = fs1, fs2
# Host_Alias MAILSERVERS = smtp, smtp2

## User Aliases
## These aren't often necessary, as you can use regular groups
## (ie, from files, LDAP, NIS, etc) in this file - just use %groupname
## rather than USERALIAS
# User_Alias ADMINS = jsmith, mikem
## Command Aliases
## These are groups of related commands...

## Networking
# Cmnd_Alias NETWORKING = /sbin/route, /sbin/ifconfig, /bin/ping, /sbin/dhclient, /usr/bin/net, /sbin/iptables, /usr/bin/rfcomm, /usr/bin/wvdial, /sbin/iwconfig, /sbin/mii-tool  

5,在sudoers文件的最後面有如下幾行,利用include引入/etc/sudoers.d目錄下的配置文件,

## Read drop-in files from /etc/sudoers.d (the # here does not mean a comment)
#includedir /etc/sudoers.d

sudo與su的聯合使用

當使用第1種方式賦予普通用戶sudo許可權之後,用戶是可以通過“sudo su-”或者“sudo su root”命令輸入自己的密碼而切換為root用戶的,這在一定程度上來說也是很危險的,最好是禁止sudo與su聯用的;而對於一些系統管理員賬號來說,會需要用到root許可權執行大量命令,老是用sudo也是挺麻煩,至少沒有直接切換回root用戶來的方便,又是需要保留sudo與su聯用的

最好的解決方式自然是在給普通用戶分配sudo特權的時候,利用別名,有限制的命令操作等,儘量合理的給賬戶分配許可權,比如如下模式:

root ALL=(ALL) ALL # 利用賬戶別名功能創建一個別名NORMAL, 之後把只需要賦予部分root特權的賬戶都往裡添加
User_Alias NORMAL = xy, user1, user2, user3
# 分配許可權
NORMAL ALL=(ALL) ALL, !/bin/su, !/usr/bin/passwd, /usr/bin/passwd [A-Za-z]*, !/usr/bin/passwd root

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ConsoleApplicationl { class Program { static void Main ...
  • 本文介紹了 C# 如何使用 GDI+ 為圖片添加文字,並且可以使文字字體大小自適應。 ...
  • c#的三個高級參數ref out 和Params 前言:在我們學習c#基礎的時候,我們會學習到c#的三個高級的參數,分別是out .ref 和Params,在這裡我們來分別的講解一下,在這裡的我們先不做具體的解釋,我會通過幾個例子來做分別的解釋。 一:out參數 1.首先我先給大家一個題:我們來寫一 ...
  • 這篇文章主要介紹了C#中is與as的區別,較為詳細的分析了is與as的原理與特性及用法區別,具有很好的學習借鑒價值,需要的朋友可以參考下 本文實例分析了C#中is與as的區別,分享給大家供大家參考。具體分析如下: 一、C#類型的轉換 在c#中類型的轉換分兩種:顯式和隱式,基本的規則如下: 1、基類對 ...
  • 因為對錶達式樹有點興趣,出於練手的目的,試著寫了一個深拷貝的工具庫。支持.net standard2.0或.net framework4.5及以上。 GitHub地址https://github.com/blurhkh/DeepCopier nuget地址https://www.nuget.org/ ...
  • 從剛剛開始接觸ORM到現在已有超過八年時間,用過了不少ORM框架也瞭解了不少ORM框架,看過N種關於ORM框架的相關資料與評論,各種言論讓人很難選擇。在ORM的眾多問題中最突出的問題是關於性能方面的問題,因此我在看了國外的一遍文章(Dapper vs Entity Framework vs ADO. ...
  • 假期剛剛搭完,先寫個提綱,今晚寫完: 1.申請一個月的免費的雲伺服器ECS; 2.在雲伺服器上安裝Java開發環境+Sql Server+Tomcat; 3.購買功能變數名稱並認證,綁定伺服器共有IP地址; 4.其它註意事項. ...
  • 出現類似提示: Failed to connect to the database: could not connect to server: Connection refused Is the server running on host "localhost" (::1) and accepti ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...