linux常用命令:sudo 命令
sudo命令用來以其他身份來執(zhí)行命令,預(yù)設(shè)的身份為root。
1.命令格式:
sudo ?[參數(shù)] ?[命令]
2.命令功能:
? ? 功能: ?sudo可以針對(duì)單個(gè)命令授予臨時(shí)權(quán)限。用戶也可以通過su切換到root用戶運(yùn)行命令,su啟動(dòng)一個(gè)root shell允許用戶運(yùn)行之后的所有的命令。
? ? 1)sudo與su的不同之處:sudo僅在需要時(shí)授予用戶權(quán)限,減少了用戶因?yàn)殄e(cuò)誤執(zhí)行命令損壞系統(tǒng)的可能性;sudo也可以用來以其他用戶身份執(zhí)行命令。此外,sudo可以記錄用戶執(zhí)行的命令,以及失敗的特權(quán)獲取。
? ? 2)提醒:在/etc/sudoers中設(shè)置了可執(zhí)行sudo指令的用戶。若其未經(jīng)授權(quán)的用戶企圖使用sudo,則會(huì)發(fā)出警告的郵件給管理員。用戶使用sudo時(shí),必須先輸入密碼,之后有5分鐘的有效期限,超過期限則必須重新輸入密碼。
? ? 3)[root@localhost etc]# cat sudoers ?查看/etc下的只有root才能打開的文件配置文件sudoers
[xiong@localhost ~]$ yum update mysql //yum的執(zhí)行需要root權(quán)限 已加載插件:fastestmirror, langpacks 您需要 root 權(quán)限執(zhí)行此命令。 [xiong@localhost ~]$ sudo yum update mysql //默認(rèn)情況下sudo獲得root用戶的權(quán)限 We trust you have received the usual lecture from the local System Administrator. It usually boils down to these three things:#1) Respect the privacy of others.#2) Think before you type.#3) With great power comes great responsibility.[sudo] password for xiong: xiong 不在 sudoers 文件中。此事將被報(bào)告?! ?/span>//此時(shí)sunmeng還沒有使用sudo的權(quán)限 View Code4)給普通用使用sudo命令的授權(quán):
## Sudoers allows particular users to run various commands as ## the root user, without needing the root password. ## 該文件允許特定用戶像root用戶一樣使用各種各樣的命令,而不需要root用戶的密碼 ## ## Examples are provided at the bottom of the file for collections ## of related commands, which can then be delegated out to particular ## users or groups. ## 在文件的底部提供了很多相關(guān)命令的示例以供選擇,這些示例都可以被特定用戶或 ## 用戶組所使用 ## ## This file must be edited with the 'visudo' command. ## 該文件必須使用"visudo"命令編輯## Host Aliases ## Groups of machines. You may prefer to use hostnames (perhaps using ## wildcards for entire domains) or IP addresses instead. ## 對(duì)于一組服務(wù)器,你可能會(huì)更喜歡使用主機(jī)名(可能是全域名的通配符) ## 、或IP地址,這時(shí)可以配置主機(jī)別名 # 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 ## 這并不很常用,因?yàn)槟憧梢酝ㄟ^使用組來代替一組用戶的別名 # User_Alias ADMINS = jsmith, mikem## Command Aliases ## These are groups of related commands... ## 指定一系列相互關(guān)聯(lián)的命令(當(dāng)然可以是一個(gè))的別名,通過賦予該別名sudo權(quán)限, ## 可以通過sudo調(diào)用所有別名包含的命令,下面是一些示例## Networking 網(wǎng)絡(luò)操作相關(guān)命令別名 # 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## Installation and management of software 軟件安裝管理相關(guān)命令別名 # Cmnd_Alias SOFTWARE = /bin/rpm, /usr/bin/up2date, /usr/bin/yum## Services 服務(wù)相關(guān)命令別名 # Cmnd_Alias SERVICES = /sbin/service, /sbin/chkconfig## Updating the locate database 本地?cái)?shù)據(jù)庫升級(jí)命令別名 # Cmnd_Alias LOCATE = /usr/bin/updatedb## Storage 磁盤操作相關(guān)命令別名 # Cmnd_Alias STORAGE = /sbin/fdisk, /sbin/sfdisk, /sbin/parted, /sbin/partprobe , /bin/mount, /bin/umount## Delegating permissions 代理權(quán)限相關(guān)命令別名 # Cmnd_Alias DELEGATING = /usr/sbin/visudo, /bin/chown, /bin/chmod, /bin/chgrp ## Processes 進(jìn)程相關(guān)命令別名 # Cmnd_Alias PROCESSES = /bin/nice, /bin/kill, /usr/bin/kill, /usr/bin/killall## Drivers 驅(qū)動(dòng)命令別名 # Cmnd_Alias DRIVERS = /sbin/modprobe# Defaults specification# # Disable "ssh hostname sudo <cmd>", because it will show the password in clear. # You have to run "ssh -t hostname sudo <cmd>". # 一些環(huán)境變量的相關(guān)配置,具體情況可見man soduers Defaults requiretty //設(shè)為默認(rèn)的目標(biāo)用戶,69行是系統(tǒng)自帶的,是對(duì)所有用戶的默認(rèn),如果設(shè)sunmeng為默認(rèn)目標(biāo)用戶,則語法為:Defaults:foobar runas_default=rene (冒號(hào)必不可少) Defaults env_reset Defaults env_keep = "COLORS DISPLAY HOSTNAME HISTSIZE INPUTRC KDEDIR LS_COLORS" Defaults env_keep += "MAIL PS1 PS2 QTDIR USERNAME LANG LC_ADDRESS LC_CTYPE" Defaults env_keep += "LC_COLLATE LC_IDENTIFICATION LC_MEASUREMENT LC_MESSAGES" Defaults env_keep += "LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER LC_TELEPHONE" Defaults env_keep += "LC_TIME LC_ALL LANGUAGE LINGUAS _XKB_CHARSET XAUTHORITY"Defaults secure_path = /sbin:/bin:/usr/sbin:/usr/bin## Next comes the main part: which users can run what software on ## which machines (the sudoers file can be shared between multiple ## systems). ## 下面是規(guī)則配置:什么用戶在哪臺(tái)服務(wù)器上可以執(zhí)行哪些命令(sudoers文件可以在多個(gè)系統(tǒng)上共享) ## Syntax(語法): ## ## user MACHINE=COMMANDS 用戶 登錄的主機(jī)=(可以變換的身份) 可以執(zhí)行的命令 ## ## The COMMANDS section may have other options added to it. ## 命令部分可以附帶一些其它的選項(xiàng) ## ## Allow root to run any commands anywhere ## 允許root用戶執(zhí)行任意路徑下的任意命令 root ALL=(ALL) ALL //第一個(gè)ALL是指網(wǎng)絡(luò)中的主機(jī),我們后面把它改成了主機(jī)名。第二個(gè)括號(hào)里的ALL是指目標(biāo)用戶,也就是以誰的身份去執(zhí)行命令。最后一個(gè)ALL當(dāng)然就是指命令名了。 ## Allows members of the 'sys' group to run networking, software, ## service management apps and more. ## 允許sys中戶組中的用戶使用NETWORKING等所有別名中配置的命令 # %sys ALL = NETWORKING, SOFTWARE, SERVICES, STORAGE, DELEGATING, PROCESSES, LOCATE , DRIVERS## Allows people in group wheel to run all commands ## 允許wheel用戶組中的用戶執(zhí)行所有命令 %wheel ALL=(ALL) ALL## Same thing without a password ## 允許wheel用戶組中的用戶在不輸入該用戶的密碼的情況下使用所有命令 # %wheel ALL=(ALL) NOPASSWD: ALL## Allows members of the users group to mount and unmount the ## cdrom as root ## 允許users用戶組中的用戶像root用戶一樣使用mount、unmount、chrom命令 # %users ALL=/sbin/mount /mnt/cdrom, /sbin/umount /mnt/cdrom## Allows members of the users group to shutdown this system ## 允許users用戶組中的用戶關(guān)閉localhost這臺(tái)服務(wù)器 # %users localhost=/sbin/shutdown -h now## Read drop-in files from /etc/sudoers.d (the # here does not mean a comment) ## 讀取放置在/etc/sudoers.d/文件夾中的文件(此處的#不意味著這是一個(gè)聲明) #includedir /etc/sudoers.d View Code??? 5)簡單的測試:
visudo后得到的格式為:賬戶名 主機(jī)名稱=(可切換的身份) 可用的指令//比如root賬戶root ALL=(ALL) ALL對(duì)于新增的賬戶就在下面加上test ALL=(root) ALL//允許test用sudo命令執(zhí)行root的所有命令 同理對(duì)于組使用者也是一個(gè),但是要加上%%testgroup ALL=(root) ALL需要注意的是:每次切換,你都需要密碼才可以,使用如下命令可以避免輸入密碼:test ALL=(root) NOPASSWD: ALL-------------------------------[root@localhost xiong]# visudo //這里的visudo不需要任何參數(shù),因?yàn)樗谴蜷_sudoers的專屬命令 //改過的地方 ## user MACHINE=COMMANDS ## ## The COMMANDS section may have other options added to it. ## ## Allow root to run any commands anywhere root ALL=(ALL) ALL xiong ALL=(ALL) ALL View Code [xiong@localhost ~]$ ls //當(dāng)前身份執(zhí)行命令 Desktop Documents Downloads Music Pictures Public Templates Videos [xiong@localhost ~]$ sudo ls //利用root身份執(zhí)行命令 Desktop Documents Downloads Music Pictures Public Templates Videos [xiong@localhost ~]$ yum update mysql //當(dāng)前身份執(zhí)行命令,提醒需要root身份 已加載插件:fastestmirror, langpacks 您需要 root 權(quán)限執(zhí)行此命令。 [xiong@localhost ~]$ sudo yum update mysql //以root身份執(zhí)行命令(在終端中第一次用這個(gè)命令時(shí)會(huì)提醒輸入密碼) 已加載插件:fastestmirror, langpacks base | 3.6 kB 00:00 extras | 3.4 kB 00:00 updates | 3.4 kB 00:00 Loading mirror speeds from cached hostfile* base: mirrors.cqu.edu.cn* extras: mirrors.cqu.edu.cn* updates: mirrors.cqu.edu.cn No packages marked for update View Code3.命令參數(shù):
? ? ? 1)?-b 在后臺(tái)運(yùn)行命令
?? 2)?-u user ?以指定用戶身份運(yùn)行命令(或編輯文件)
? ? ? 3) -l ?查看當(dāng)前用戶可以執(zhí)行的命令
? ? ? 4) -v ?更新用戶的時(shí)間戳而不執(zhí)行命令(注意:在輸入密碼之后,5分鐘內(nèi)執(zhí)行sudo不需要再次輸入密碼。)
? ? ? 5) -V 顯示sudo的版本信息
? ? ? 6) -i ?以目標(biāo)用戶登錄一個(gè)shell
4.使用實(shí)例:
示例1:指定用戶名
命令: sudo -u root yum install mysql-devel
[xiong@localhost Desktop]$ sudo -u root yum install mysql-devel -u參數(shù)比較有用的地方是在多用戶時(shí),可以臨時(shí)獲得權(quán)限打開用戶獨(dú)占的文件 已加載插件:fastestmirror, langpacks Loading mirror speeds from cached hostfile* base: mirrors.cqu.edu.cn* extras: mirrors.cqu.edu.cn* updates: mirrors.cqu.edu.cn 正在解決依賴關(guān)系 --> 正在檢查事務(wù) ...... --> 解決依賴關(guān)系完成 依賴關(guān)系解決 =============================================================================================================Package 架構(gòu) 版本 源 大小 ============================================================================================================= 正在安裝:mariadb-devel x86_64 1:5.5.47-1.el7_2 ...... 作為依賴被升級(jí):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命令結(jié)合使用的幾個(gè)例子
[xiong@localhost Desktop]$ sudo rpm -q MySQL-embedded-5.5.28-1.linux2.6.i386.rpm [sudo] password for xiong: 未安裝軟件包 MySQL-embedded-5.5.28-1.linux2.6.i386.rpm [xiong@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:列出用戶可以執(zhí)行的命令
命令:sudo -l
[xiong@localhost Desktop]$ sudo -l 匹配此主機(jī)上 xiong 的默認(rèn)條目:requiretty, !visiblepw, always_set_home, env_reset, env_keep="COLORS DISPLAY HOSTNAME HISTSIZE INPUTRCKDEDIR 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_NAMELC_NUMERIC LC_PAPER LC_TELEPHONE", env_keep+="LC_TIME LC_ALL LANGUAGE LINGUAS _XKB_CHARSET XAUTHORITY",secure_path=/sbin\:/bin\:/usr/sbin\:/usr/bin用戶 xiong 可以在該主機(jī)上運(yùn)行以下命令:(ALL) ALL?
示例4:以目標(biāo)身份登錄一個(gè)shell
命令:sudo -i
[root@localhost Desktop]# sudo -i [root@localhost ~]# sudo -i?
示例5:顯示詳細(xì)的sudo的版本信息
命令: sudo -V
1 [root@localhost ~]# sudo -V 2 Sudo 版本 1.8.6p7 3 當(dāng)前選項(xiàng):--build=x86_64-redhat-linux-gnu --host=x86_64-redhat-linux-gnu --program-prefix= --disable-dependency-tracking --prefix=/usr --exec-prefix=/usr --bindir=/usr/bin --sbindir=/usr/sbin --sysconfdir=/etc --datadir=/usr/share --includedir=/usr/include --libdir=/usr/lib64 --libexecdir=/usr/libexec --localstatedir=/var --sharedstatedir=/var/lib --mandir=/usr/share/man --infodir=/usr/share/info --prefix=/usr --sbindir=/usr/sbin --libdir=/usr/lib64 --docdir=/usr/share/doc/sudo-1.8.6p7 --with-logging=syslog --with-logfac=authpriv --with-pam --with-pam-login --with-editor=/bin/vi --with-env-editor --with-ignore-dot --with-tty-tickets --with-ldap --with-ldap-conf-file=/etc/sudo-ldap.conf --with-selinux --with-passprompt=[sudo] password for %p: --with-linux-audit --with-sssd 4 Sudoers 策略插件版本 1.8.6p7 5 Sudoers 文件語法版本 42 6 7 Sudoers 路徑:/etc/sudoers 8 nsswitch 路徑:/etc/nsswitch.conf 9 ldap.conf 路徑:/etc/sudo-ldap.conf 10 ldap.secret 路徑:/etc/ldap.secret 11 認(rèn)證方法: 'pam' 12 若使用了 syslog,用于記錄日志的 syslog 設(shè)施:authpriv 13 用戶認(rèn)證成功時(shí)使用的 syslog 優(yōu)先級(jí):notice 14 用戶認(rèn)證不成功時(shí)使用的 syslog 優(yōu)先級(jí):alert 15 忽略 $PATH 中的“.” 16 在用戶不在 sudoers 列表中時(shí)發(fā)送郵件 17 對(duì)每個(gè)用戶/終端組合使用獨(dú)立的時(shí)間戳 18 在用戶第一次運(yùn)行 sudo 時(shí)向他致辭 19 默認(rèn)要求用戶認(rèn)證 20 root 可以運(yùn)行 sudo 21 總是將 $HOME 設(shè)為目標(biāo)用戶的主目錄 22 允許收集一些信息,以提供有用的錯(cuò)誤消息 23 只允許擁有終端的用戶執(zhí)行 sudo 24 Visudo 將優(yōu)先考慮 EDITOR 環(huán)境變量 25 設(shè)置 LOGNAME 和 USER 環(huán)境變量 26 日志文件折行的長度(0 則不折行):80 27 認(rèn)證時(shí)間戳延時(shí):5.0 分鐘 28 密碼提示延時(shí):5.0 分鐘 29 輸入密碼的嘗試次數(shù):3 30 要使用的 umask,或 0777 使用用戶的:022 31 郵件程序路徑:/usr/sbin/sendmail 32 郵件程序標(biāo)志:-t 33 發(fā)送郵件的地址:root 34 郵件消息的主題行:*** SECURITY information for %h *** 35 密碼錯(cuò)誤消息:Sorry, try again. 36 認(rèn)證時(shí)間戳文件夾的路徑:/var/db/sudo 37 默認(rèn)密碼提示:[sudo] password for %p: 38 運(yùn)行命令的默認(rèn)用戶:root 39 覆蓋用戶的 $PATH 變量的值:/sbin:/bin:/usr/sbin:/usr/bin 40 visudo 所使用的編輯器的路徑:/bin/vi 41 何時(shí)為“l(fā)ist”偽命令請(qǐng)求密碼:any 42 何時(shí)為“verify”偽命令請(qǐng)求密碼:all 43 >= 3 的文件描述符將會(huì)在執(zhí)行命令前關(guān)閉 44 將環(huán)境重設(shè)為默認(rèn)的變量集 45 要檢查完整性的環(huán)境變量: 46 TERM 47 LINGUAS 48 LC_* 49 LANGUAGE 50 LANG 51 COLORTERM 52 要移除的環(huán)境變量: 53 RUBYOPT 54 RUBYLIB 55 PYTHONUSERBASE 56 PYTHONINSPECT 57 PYTHONPATH 58 PYTHONHOME 59 TMPPREFIX 60 ZDOTDIR 61 READNULLCMD 62 NULLCMD 63 FPATH 64 PERL5DB 65 PERL5OPT 66 PERL5LIB 67 PERLLIB 68 PERLIO_DEBUG 69 JAVA_TOOL_OPTIONS 70 SHELLOPTS 71 GLOBIGNORE 72 PS4 73 BASH_ENV 74 ENV 75 TERMCAP 76 TERMPATH 77 TERMINFO_DIRS 78 TERMINFO 79 _RLD* 80 LD_* 81 PATH_LOCALE 82 NLSPATH 83 HOSTALIASES 84 RES_OPTIONS 85 LOCALDOMAIN 86 CDPATH 87 IFS 88 要保留的環(huán)境變量: 89 XAUTHORITY 90 _XKB_CHARSET 91 LINGUAS 92 LANGUAGE 93 LC_ALL 94 LC_TIME 95 LC_TELEPHONE 96 LC_PAPER 97 LC_NUMERIC 98 LC_NAME 99 LC_MONETARY 100 LC_MESSAGES 101 LC_MEASUREMENT 102 LC_IDENTIFICATION 103 LC_COLLATE 104 LC_CTYPE 105 LC_ADDRESS 106 LANG 107 USERNAME 108 QTDIR 109 PS2 110 PS1 111 MAIL 112 LS_COLORS 113 KDEDIR 114 INPUTRC 115 HISTSIZE 116 HOSTNAME 117 DISPLAY 118 COLORS 119 解析 sudoers 時(shí)使用的區(qū)域設(shè)置:C 120 使用 zlib 壓縮 I/O 日志 121 用于保存輸入/輸出日志的目錄:/var/log/sudo-io 122 用于保存輸入/輸出日志的文件:%{seq} 123 在分配偽終端時(shí)向 utmp/utmpx 文件中添加一條記錄 124 125 本地 IP 地址和網(wǎng)絡(luò)掩碼對(duì): 126 192.168.0.15/255.255.255.0 127 fe80::20c:29ff:fe9f:bf8b/ffff:ffff:ffff:ffff:: 128 129 Sudoers I/O plugin version 1.8.6p7 View Code?
轉(zhuǎn)載于:https://www.cnblogs.com/shujuxiong/p/9013130.html
總結(jié)
以上是生活随笔為你收集整理的linux常用命令:sudo 命令的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 如何将freemarker文件转化为ht
- 下一篇: 解决Redis之MISCONF Redi