Linux系統的sudo命令是切換用戶身份的命令。下面由學習啦小編為大家整理了每天一個Linux命令之sudo命令詳解,希望對大家有幫助!
每天一個Linux命令之sudo命令詳解
sudo命令用來以其他身份來執行命令,預設的身份為root。在/etc/sudoers中設置了可執行sudo指令的用戶。若其未經授權的用戶企圖使用sudo,則會發出警告的郵件給管理員。用戶使用sudo時,必須先輸入密碼,之後有5分鐘的有效期限,超過期限則必須重新輸入密碼。
語法
sudo(選項)(參數)
選項
-b:在後台執行指令;
-h:顯示幫助;
-H:將HOME環境變量設為新身份的HOME環境變量;
-k:結束密碼的有效期限,也就是下次再執行sudo時便需要輸入密碼;。
-l:列出目前用戶可執行與無法執行的指令;
-p:改變詢問密碼的提示符號;
-s:執行指定的shell;
-u<用戶>:以指定的用戶作為新的身份。若不加上此參數,則預設以root作為新的身份;
-v:延長密碼有效期限5分鐘;
-V :顯示版本信息。
參數
指令:需要運行的指令和對應的參數。
每天一個Linux命令之sudo命令特點
sudo扮演的角色注定了它要在安全方面格外謹慎,否則就會導致非法用戶攫取root權限。同時,它還要兼顧易用性,讓系統管理員能夠更有效,更方便地使用它。sudo設計者的宗旨是:給用戶盡可能少的權限但仍允許完成他們的工作。所以,sudo
有以下特點:
# 1. sudo能夠限制指定用戶在指定主機上運行某些命令。
# 2. sudo可以提供日志,忠實地記錄每個用戶使用sudo做了些什麼,並且能將日志傳到中心主機或者日志服務器。
# 3. sudo為系統管理員提供配置文件,允許系統管理員集中地管理用戶的使用權限和使用的主機。它默認的存放位置是/etc/sudoers。
# 4.sudo使用時間戳文件來完成類似“檢票”的系統。當用戶執行sudo並且輸入密碼後,用戶獲得了一張默認存活期為5分鐘的“入場券”(默認值可以在編譯的時候改變)。超時以後,用戶必須重新輸入密碼。
每天一個Linux命令之sudo命令實例
1)[sunmeng@localhost Desktop]$ sudo -u root yum install mysql-devel 指定用戶名
[sunmeng@localhost Desktop]$ sudo -u root yum install mysql-devel -u參數比較有用的地方是在多用戶時,可以臨時獲得權限打開用戶獨占的文件
已加載插件:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
* base: mirrors.cqu.edu.cn
* extras: mirrors.cqu.edu.cn
* updates: mirrors.cqu.edu.cn
正在解決依賴關系
--> 正在檢查事務
......
--> 解決依賴關系完成
依賴關系解決
=============================================================================================================
Package 架構 版本 源 大小
=============================================================================================================
正在安裝:
mariadb-devel x86_64 1:5.5.47-1.el7_2
......
作為依賴被升級:
krb5-libs.x86_64 0:1.13.2-12.el7_2 krb5-workstation.x86_64 0:1.13.2-12.el7_2
openssl.x86_64 1:1.0.1e-51.el7_2.5 openssl-libs.x86_64 1:1.0.1e-51.el7_2.5
pcre.x86_64 0:8.32-15.el7_2.1 zlib.x86_64 0:1.2.7-15.el7
完畢!
2)sudo命令與rpm命令結合使用的幾個例子
[sunmeng@localhost Desktop]$ sudo rpm -q MySQL-embedded-5.5.28-1.linux2.6.i386.rpm
[sudo] password for sunmeng:
未安裝軟件包 MySQL-embedded-5.5.28-1.linux2.6.i386.rpm
[sunmeng@localhost Desktop]$ sudo rpm -qpR MySQL-embedded-5.5.28-1.linux2.6.i386.rpm
MySQL-devel
libaio.so.1
libaio.so.1(LIBAIO_0.1)
libaio.so.1(LIBAIO_0.4)
libc.so.6
libc.so.6(GLIBC_2.0)
libc.so.6(GLIBC_2.1)
libc.so.6(GLIBC_2.1.3)
libc.so.6(GLIBC_2.2)
libc.so.6(GLIBC_2.3)
libc.so.6(GLIBC_2.3.3)
libcrypt.so.1
libcrypt.so.1(GLIBC_2.0)
libdl.so.2
libdl.so.2(GLIBC_2.0)
libdl.so.2(GLIBC_2.1)
libm.so.6
libm.so.6(GLIBC_2.0)
libm.so.6(GLIBC_2.1)
libncurses.so.5
libpthread.so.0
libpthread.so.0(GLIBC_2.0)
libpthread.so.0(GLIBC_2.1)
libpthread.so.0(GLIBC_2.2)
libpthread.so.0(GLIBC_2.3.2)
librt.so.1
librt.so.1(GLIBC_2.2)
rpmlib(CompressedFileNames) <= 3.0.4-1
rpmlib(PayloadFilesHavePrefix) <= 4.0-1
3)[sunmeng@localhost Desktop]$ sudo -l 列出用戶可以執行的命令
[sunmeng@localhost Desktop]$ sudo -l
匹配此主機上 sunmeng 的默認條目:
requiretty, !visiblepw, always_set_home, env_reset, env_keep="COLORS DISPLAY HOSTNAME HISTSIZE INPUTRC
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
用戶 sunmeng 可以在該主機上運行以下命令:
(ALL) ALL
4[root@localhost Desktop]# sudo -i 以目標身份登錄一個shell
[root@localhost Desktop]# sudo -i
[root@localhost ~]# sudo -i