日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

【Linux】一步一步学Linux——sudo命令(105)

發(fā)布時間:2024/4/21 linux 49 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【Linux】一步一步学Linux——sudo命令(105) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

00. 目錄

文章目錄

    • 00. 目錄
    • 01. 命令概述
    • 02. 命令格式
    • 03. 常用選項
    • 04. 參考示例
    • 05. 附錄

01. 命令概述

sudo - 以其他用戶身份執(zhí)行一條命令

sudo命令用來以其他身份來執(zhí)行命令,預設(shè)的身份為root。在/etc/sudoers中設(shè)置了可執(zhí)行sudo指令的用戶。若其未經(jīng)授權(quán)的用戶企圖使用sudo,則會發(fā)出警告的郵件給管理員。用戶使用sudo時,必須先輸入密碼,之后有5分鐘的有效期限,超過期限則必須重新輸入密碼。

sudo 是一種權(quán)限管理機制,管理員可以給一些普通用戶授權(quán)去執(zhí)行一些 root 執(zhí)行的操作,而不需要知道 root 的密碼。

sudo 允許一個已授權(quán)用戶以超級用戶或者其它用戶的角色運行一個命令。當然,能做什么不能做什么都是通過安全策略來指定的。sudo 支持插件架構(gòu)的安全策略,并能把輸入輸出寫入日志。第三方可以開發(fā)并發(fā)布自己的安全策略和輸入輸出日志插件,并讓它們無縫的和 sudo 一起工作。默認的安全策略記錄在 /etc/sudoers 文件中。而安全策略可能需要用戶通過密碼來驗證他們自己。也就是在用戶執(zhí)行 sudo 命令時要求用戶輸入自己賬號的密碼。如果驗證失敗,sudo 命令將會退出。

02. 命令格式

usage: sudo -h | -K | -k | -V usage: sudo -v [-AknS] [-g group] [-h host] [-p prompt] [-u user] usage: sudo -l [-AknS] [-g group] [-h host] [-p prompt] [-U user] [-u user][command] usage: sudo [-AbEHknPS] [-r role] [-t type] [-C num] [-g group] [-h host] [-pprompt] [-u user] [VAR=value] [-i|-s] [<command>] usage: sudo -e [-AknS] [-r role] [-t type] [-C num] [-g group] [-h host] [-pprompt] [-u user] file ...

03. 常用選項

選項:-A, --askpass 使用助手程序進行密碼提示-b, --background 在后臺運行命令-C, --close-from=num 關(guān)閉所有 >= num 的文件描述符-E, --preserve-env 在執(zhí)行命令時保留用戶環(huán)境-e, --edit 編輯文件而非執(zhí)行命令-g, --group=group 以指定的用戶組或 ID 執(zhí)行命令-H, --set-home 將 HOME 變量設(shè)為目標用戶的主目錄。-h, --help 顯示幫助消息并退出-h, --host=host 在主機上運行命令(如果插件支持)-i, --login 以目標用戶身份運行一個登錄shell;可同時指定一條命令-K, --remove-timestamp 完全移除時間戳文件-k, --reset-timestamp 無效的時間戳文件-l, --list 列出用戶權(quán)限或檢查某個特定命令;對于長格式,使用兩次-n, --non-interactive 非交互模式,不提示-P, --preserve-groups 保留組向量,而非設(shè)置為目標的組向量-p, --prompt=prompt 使用指定的密碼提示-r, --role=role 以指定的角色創(chuàng)建 SELinux 安全環(huán)境-S, --stdin 從標準輸入讀取密碼-s, --shell 以目標用戶運行shell;可同時指定一條命令-t, --type=type 以指定的類型創(chuàng)建 SELinux 安全環(huán)境-U, --other-user=user 在列表模式中顯示用戶的權(quán)限-u, --user=user 以指定用戶或 ID運行命令(或編輯文件)-V, --version 顯示版本信息并退出-v, --validate 更新用戶的時間戳而不執(zhí)行命令-- 停止處理命令行參數(shù)

04. 參考示例

4.1 查看此用戶擁有的權(quán)限

[deng@itcast ~]$ sudo -l 匹配 %2$s 上 %1$s 的默認條目:!visiblepw, always_set_home, match_group_by_gid, env_reset,env_keep="COLORS DISPLAY HOSTNAME HISTSIZE KDEDIR LS_COLORS",env_keep+="MAIL PS1 PS2 QTDIR USERNAME LANG LC_ADDRESS LC_CTYPE",env_keep+="LC_COLLATE LC_IDENTIFICATION LC_MEASUREMENT LC_MESSAGES",env_keep+="LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER LC_TELEPHONE",env_keep+="LC_TIME LC_ALL LANGUAGE LINGUAS _XKB_CHARSET XAUTHORITY",secure_path=/sbin\:/bin\:/usr/sbin\:/usr/bin用戶 deng 可以在 itcast 上運行以下命令:(ALL) ALL [deng@itcast ~]$

4.2 結(jié)束密碼有效期

[deng@itcast ~]$ sudo -k [deng@itcast ~]$ sudo useradd test1 [sudo] deng 的密碼:

有效期結(jié)束后,執(zhí)行特殊命令,需重新驗證密碼

4.3 指定用戶執(zhí)行命令

[deng@itcast ~]$ sudo -u tom ls /home/tom [deng@itcast ~]$

4.4 以root賬戶來建一個文件file,為空默認是root用戶

[deng@itcast ~]$ sudo touch file [deng@itcast ~]$ ls -l file -rw-r--r-- 1 root root 0 8月 3 17:10 file [deng@itcast ~]$

4.5 以root權(quán)限執(zhí)行上一條命令

[deng@itcast ~]$ sudo !! sudo ls bak oracle_client_11gR2.tar.gz share test.cpp 圖片 桌面 bj34 oradiag_deng sz12 公共 文檔 file projects test 模板 下載 instantclient_11_2 scott_data.sql test.c 視頻 音樂 [deng@itcast ~]$

4.6 顯示版本信息并退出

[deng@itcast ~]$ sudo -V Sudo 版本 1.8.19p2 Sudoers 策略插件版本 1.8.19p2 Sudoers 文件語法版本 45 Sudoers I/O plugin version 1.8.19p2 [deng@itcast ~]$

4.7 將tom用戶設(shè)置為擁有所有權(quán)限

[root@itcast ~]# visudo

仿照現(xiàn)有root的例子就行,我們在下面加一行(最好用tab作為空白)

91 ## Allow root to run any commands anywhere92 root ALL=(ALL) ALL93 tom ALL=(ALL) ALL

第一個ALL是指網(wǎng)絡(luò)中的主機。第二個括號里的ALL是指目標用戶,也就是以誰的身份去執(zhí)行命令。最后一個ALL當然就是指命令名了。

保存退出后,切換到deng用戶測試

[deng@itcast ~]$ ls /root ls: 無法打開目錄/root: 權(quán)限不夠 [deng@itcast ~]$ sudo ls /root [sudo] deng 的密碼: anaconda-ks.cfg openssl-1.1.1-pre6-dev.zip test.cpp 圖片 桌面 bak openssl-master 公共 文檔 initial-setup-ks.cfg oracle_client_11gR2.tar.gz 模板 下載 instantclient_11_2 share 視頻 音樂 [deng@itcast ~]$

4.8 限制tom用戶的權(quán)限

限制一下tom的權(quán)限。比如我們只想讓他像root那樣使用執(zhí)行l(wèi)astb,把那一行改為:

91 ## Allow root to run any commands anywhere92 root ALL=(ALL) ALL93 tom localhost=/usr/bin/lastb

測試

[deng@itcast ~]$ lastb lastb: /var/log/btmp: Permission denied [deng@itcast ~]$ sudo lastb root pts/2 Sat Aug 3 19:15 - 19:15 (00:00) root pts/2 Sat Aug 3 15:52 - 15:52 (00:00) root pts/1 Fri Aug 2 21:00 - 21:00 (00:00) root pts/1 Thu Aug 1 21:27 - 21:27 (00:00) btmp begins Thu Aug 1 21:27:11 2019 [deng@itcast ~]$

4.9 其它相關(guān)配置

例如,我們想讓tom用戶在linux主機上以deng或itcast的身份執(zhí)行kill命令,這樣編寫配置文件:

tom linux=(deng,itcast) /bin/kill

但這還有個問題,tom到底以deng還是itcast的身份執(zhí)行?這時我們應該想到了sudo -u了,它正是用在這種時候。 tom可以使用sudo -u deng kill PID或者sudo -u itcast kill PID,但這樣挺麻煩,其實我們可以不必每次加-u,把deng或itcast設(shè)為默認的目標用戶即可。再在上面加一行:

Defaults:foobar runas_default=itcast

Defaults后面如果有冒號,是對后面用戶的默認,如果沒有,則是對所有用戶的默認。就像配置文件中自帶的一行:

Defaults env_reset

另一個問題是,很多時候,我們本來就登錄了,每次使用sudo還要輸入密碼就顯得煩瑣了。我們可不可以不再輸入密碼呢?當然可以,我們這樣修改配置文件:

tom localhost=NOPASSWD: /bin/cat, /bin/ls

4.10 日志與安全

sudo為安全考慮得很周到,不僅可以記錄日志,還能在有必要時向系統(tǒng)管理員報告。但是,sudo的日志功能不是自動的,必須由管理員開啟。

touch /var/log/sudo vi /etc/syslog.conf

在syslog.conf最后面加一行(必須用tab分割開)并保存:

local2.debug /var/log/sudo

重啟日志守候進程

ps aux grep syslogd

把得到的syslogd進程的PID(輸出的第二列是PID)填入下面

kill –HUP PID

sudo就可以寫日志了:

[deng@localhost ~]$ sudo ls /rootanaconda-ks.cfg Desktop install.log install.log.syslog $cat /var/log/sudoJul 28 22:52:54 localhost sudo: deng : TTY=pts/1 ; pwd=/home/deng ; USER=root ; command=/bin/ls /root

sudo 有自己的方式來保護安全。以root的身份執(zhí)行sudo-V,查看一下sudo的設(shè)置。因為考慮到安全問題,一部分環(huán)境變量并沒有傳遞給sudo后面的命令,或者被檢查后再傳遞的,比如:PATH,HOME,SHELL等。當然,你也可以通過sudoers來配置這些環(huán)境變量。

05. 附錄

參考:【Linux】一步一步學Linux系列教程匯總

總結(jié)

以上是生活随笔為你收集整理的【Linux】一步一步学Linux——sudo命令(105)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。