【Linux】一步一步学Linux——sudo配置文件详解(106)
00. 目錄
文章目錄
- 00. 目錄
- 01. sudo的配置文件
- 02. sudo命令別名規則
- 03. sudo命令授權規則
- 04. 實戰演練
- 05. 附錄
01. sudo的配置文件
sudo默認配置文件是**/etc/sudoers** ,一般使用Linux指定編輯工具visudo ,此工具的好處是可以進行錯誤檢查。在添加規則不符合語法規則時,保存退出時會提示給我們錯誤信息;配置好后,可以用切換到您授權的普通用戶下,通過sudo -l來查看哪些命令是可以執行的或禁止的;
/etc/sudoers 文件中每行是一個規則,前面帶有#號可以當作是注釋的內容,并不執行;如果規則很長,可以寫在多列上,可以用\號來續行。
/etc/sudoers 的規則可分為兩類;一類是授權規則,另一類是別名定義;別名定義并不是必須的,但授權規則是必須的;
[root@itcast ~]# cat /etc/sudoers ## 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. ## 在文件的底部提供了很多相關命令的示例以供選擇,這些示例都可以被特定用戶或 ## ## 用戶組所使用 ## This file must be edited with the 'visudo' command. ## 該文件必須使用"visudo"命令編輯## Host Aliases #主機別名 ## Groups of machines. You may prefer to use hostnames (perhap using ## wildcards for entire domains) or IP addresses instead. ## 對于一組服務器,你可能會更喜歡使用主機名(可能是全域名的通配符) ## 或IP地址代替,這時可以配置主機別名# 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... ## 指定一系列相互關聯的命令(當然可以是一個)的別名,通過賦予該別名sudo權限, ## 可以通過sudo調用所有別名包含的命令,下面是一些示例## 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## Installation and management of software #軟件安裝管理相關命令別名 Cmnd_Alias SOFTWARE = /bin/rpm, /usr/bin/up2date, /usr/bin/yum## Services #服務相關命令別名 Cmnd_Alias SERVICES = /sbin/service, /sbin/chkconfig## Updating the locate database #本地數據庫升級命令別名 Cmnd_Alias LOCATE = /usr/sbin/updatedb## Storage #磁盤操作相關命令別名 Cmnd_Alias STORAGE = /sbin/fdisk, /sbin/sfdisk, /sbin/parted, /sbin/partprobe, /bin/mount, /bin/umount## Delegating permissions #代理權限相關命令別名 Cmnd_Alias DELEGATING = /usr/sbin/visudo, /bin/chown, /bin/chmod, /bin/chgrp## Processes #進程相關命令別名 Cmnd_Alias PROCESSES = /bin/nice, /bin/kill, /usr/bin/kill, /usr/bin/killall## Drivers #驅動命令別名 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>". # Defaults requirettyDefaults env_reset Defaults env_keep = "COLORS DISPLAY HOSTNAME HISTSIZE INPUTRC KDEDIR \LS_COLORS MAIL PS1 PS2 QTDIR USERNAME \LANG LC_ADDRESS LC_CTYPE LC_COLLATE LC_IDENTIFICATION \LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC \LC_PAPER LC_TELEPHONE LC_TIME LC_ALL LANGUAGE LINGUAS \_XKB_CHARSET XAUTHORITY"## Next comes the main part: which users can run what software on ## which machines (the sudoers file can be shared between multiple ## systems). ## 下面是規則配置:什么用戶在哪臺服務器上可以執行哪些命令(sudoers文件可以在多個系統上共享) ## Syntax: ##語法 ## user MACHINE=COMMANDS ## 用戶 登錄的主機=(可以變換的身份) 可以執行的命令 ## ## The COMMANDS section may have other options added to it. ## 命令部分可以附帶一些其它的選項 ## ## Allow root to run any commands anywhere ## 允許root用戶執行任意路徑下的任意命令 root ALL=(ALL) ALL## Allows members of the 'sys' group to run networking, software, ## service management apps and more. # %sys ALL = NETWORKING, SOFTWARE, SERVICES, STORAGE, DELEGATING, PROCESSES, LOCATE, DRIVERS ## 允許sys中戶組中的用戶使用NETWORKING等所有別名中配置的命令## Allows people in group wheel to run all commands # %wheel ALL=(ALL) ALL ## 允許wheel用戶組中的用戶執行所有命令 ## 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 localhost=/sbin/shutdown -h now ## 允許users用戶組中的用戶像root用戶一樣使用shutdown命令02. sudo命令別名規則
別名規則定義格式如下
Alias_Type NAME = item1, item2, ...或者Alias_Type NAME = item1, item2, item3 : NAME = item4, item5別名類型(Alias_Type):別名類型包括如下
- Host_Alias 定義主機別名;
- User_Alias 用戶別名,別名成員可以是用戶,用戶組(前面要加%號)
- Runas_Alias 用來定義runas別名,這個別名指定的是“目的用戶”,即sudo 允許切換至的用戶;
- Command_Alias 定義命令別名;
別名規則格式解析
NAME 就是別名了,NMAE的命名是包含大寫字母、下劃線以及數字,但必須以一個大寫字母開頭,比如SYNADM、SYN_ADM或SYNAD0是合法的,sYNAMDA或1SYNAD是不合法的;
item 按中文翻譯是項目,在這里我們可以譯成成員,如果一個別名下有多個成員,成員與成員之間,通過半角逗號分隔;成員在必須是有效并事實存在的。什么是有效的呢?比如主機名,可以通過w查看用戶的主機名(或ip地址),如果您只是本地機操作,只通過hostname 命令就能查看;用戶名當然是在系統中存在 的,在/etc/paswd中必須存在;對于定義命令別名,成員也必須在系統中事實存在的文件名(需要絕對路徑);
item成員受別名類型 Host_Alias、User_Alias、Runas_Alias、Command_Alias 制約,定義什么類型的別名,就要有什么類型的成員相配。我們用Host_Alias定義主機別名時,成員必須是與主機相關相關聯,比如是主機名(包括遠程登錄的主機名)、ip地址(單個或整段)、掩碼等; 當用戶登錄時,可以通過w命令來查看登錄用戶主機信息;用User_Alias和 Runas_Alias定義時,必須要用系統用戶做為成員;用 Cmnd_Alias 定義執行命令的別名時,必須是系統存在的文件,文件名可以用通配符表示,配置Cmnd_Alias時命令需要絕對路徑;
其中 Runas_Alias 和User_Alias 有點相似,但與User_Alias 絕對不是同一個概念,Runas_Alias 定義的是某個系統用戶可以sudo 切換身份到Runas_Alias 下的成員;我們在授權規則中以實例進行解說;
別名規則是每行算一個規則,如果一個別名規則一行容不下時,可以通過\來續行;同一類型別名的定義,一次也可以定義幾個別名,他們中間用:號分隔,
主機別名參考示例
Host_Alias FILESERVERS = fs1, fs2 Host_Alias MAILSERVERS = smtp, smtp2 #注:定義主機別名HT01,通過=號列出成員 Host_Alias HT01=localhost,st05,st04,10,0,0,4,255.255.255.0,192.168.1.0/24 #注:主機別名HT02,有兩個成員; Host_Alias HT02=st09,st10 #注:上面的兩條對主機的定義,可以通過一條來實現,別名之間用:號分割; Host_Alias HT01=localhost,st05,st04,10,0,0,4,255.255.255.0,192.168.1.0/24:HT02=st09,st10溫馨提示: 我們通過Host_Alias 定義主機別名時,項目可以是主機名、可以是單個ip(整段ip地址也可以),也可以是網絡掩碼;如果是主機名,必須是多臺 機器的網絡中,而且這些機器得能通過主機名相互通信訪問才有效。那什么才算是通過主機名相互通信或訪問呢?比如 ping 主機名,或通過遠程訪問主機名 來訪問。在我們局域網中,如果讓計算機通過主機名訪問通信,必須設置/etc/hosts, /etc/resolv.conf ,還要有DNS做解析, 否則相互之間無法通過主機名訪問;在設置主機別名時,如果項目是中某個項目是主機名的話,可以通過hostname 命令來查看本地主機的主機名,通過w 命令查來看登錄主機是來源,通過來源來確認其它客戶機的主機名或ip地址;對于主機別名的定義,看上去有點復雜,其實是很簡單。
如果您不明白Host_Alias 是怎么回事,也可以不用設置主機別名,在定義授權規則時通過ALL來匹配所有可能出現的主機情況。
用戶別名參考示例
官方參考
User_Alias ADMINS = jsmith, mikem #注:定義用戶別名,下有四個成員;要在系統中確實在存在的; User_Alias SYSAD=beinan,linuxsir,bnnnb,lanhaitun #注:定義用戶別名NETAD ,我想讓這個別名下的用戶來管理網絡,所以取了NETAD的別名; User_Alias NETAD=beinan,bnnb #注:定義用戶別名WEBMASTER,我想用這個別名下的用戶來管理網站; User_Alias WEBMASTER=linuxsir #注:上面三行的別名定義,可以通過這一行來實現 User_Alias SYSAD=beinan,linuxsir,bnnnb,lanhaitun:NETAD=beinan,bnnb:WEBMASTER=linuxsir命令別名參考示例
官方參考
## 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## Installation and management of software # Cmnd_Alias SOFTWARE = /bin/rpm, /usr/bin/up2date, /usr/bin/yum## Services # Cmnd_Alias SERVICES = /sbin/service, /sbin/chkconfig, /usr/bin/systemctl start, /usr/bin/systemctl stop, /usr/bin/systemctl reload, /usr/bin/systemctl restart, /usr/bin/systemctl status, /usr/bin/systemctl enable, /usr/bin/systemctl disable## Updating the locate database # Cmnd_Alias LOCATE = /usr/bin/updatedb## Storage # Cmnd_Alias STORAGE = /sbin/fdisk, /sbin/sfdisk, /sbin/parted, /sbin/partprobe, /bin/mount, /bin/umount## Delegating permissions # Cmnd_Alias DELEGATING = /usr/sbin/visudo, /bin/chown, /bin/chmod, /bin/chgrp ## Processes # Cmnd_Alias PROCESSES = /bin/nice, /bin/kill, /usr/bin/kill, /usr/bin/killall溫馨提示:命令別名下的成員必須是文件或目錄的絕對路徑;
Cmnd_Alias USERMAG=/usr/sbin/adduser,/usr/sbin/userdel,/usr/bin/passwd [A-Za-z]*,/bin/chown,/bin/chmodCmnd_Alias DISKMAG=/sbin/fdisk,/sbin/parted Cmnd_Alias NETMAG=/sbin/ifconfig,/etc/init.d/network Cmnd_Alias KILL = /usr/bin/kill Cmnd_Alias PWMAG = /usr/sbin/reboot,/usr/sbin/halt#注:這行定義命令別名有點長,可以通過 \ 號斷行; Cmnd_Alias SHELLS = /usr/bin/sh, /usr/bin/csh, /usr/bin/ksh, \/usr/local/bin/tcsh, /usr/bin/rsh, \/usr/local/bin/zshCmnd_Alias SU = /usr/bin/su,/bin,/sbin,/usr/sbin,/usr/bin#在上面的例子中,有KILL和PWMAG的命令別名定義,我們可以合并為一行來寫,也就是等價行; #注:這一行就代表了KILL和PWMAG命令別名,把KILL和PWMAG的別名定義合并在一行寫也是可以的; Cmnd_Alias KILL = /usr/bin/kill:PWMAG = /usr/sbin/reboot,/usr/sbin/haltRunas_Alias別名示例
Runas_Alias OP = root, operator#注:這行是上面兩行的等價行 Runas_Alias DBADM=mysql:OP = root, operator03. sudo命令授權規則
授權規則是分配權限的執行規則,我們前面所講到的定義別名主要是為了更方便的授權引用別名;如果系統中只有幾個用戶,其實下放權限比較有限的話,可以不用定義別名,而是針對系統用戶直接直接授權,所以在授權規則中別名并不是必須的;
授權規則并不是無章可尋,我們只說基礎一點的,比較簡單的寫法,如果您想詳細了解授權規則寫法的,請參看
man sudoers格式:授權用戶 主機=命令動作
這三個要素缺一不可,但在動作之前也可以指定切換到特定用戶下,在這里指定切換的用戶要用括號括起來,如果不需要密碼直接運行命令的,應該加NOPASSWD參數
04. 實戰演練
4.1 示例一
deng ALL=/bin/chown,/bin/chmod如果我們在/etc/sudoers 中添加這一行,表示deng可以在任何可能出現的主機名的系統中,可以切換到root用戶下執行 /bin/chown 和/bin/chmod 命令,通過sudo -l 來查看deng在這臺主機上允許和禁止運行的命令;
[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 上運行以下命令:(root) /bin/chown, /bin/chmod(ALL) ALL [deng@itcast ~]$值得注意的是,在這里省略了指定切換到哪個用戶下執行/bin/shown 和/bin/chmod命令;在省略的情況下默認為是切換到root用戶下執行;同時也省略了是不是需要deng用戶輸入驗證密碼,如果省略了,默認為是需要驗證密碼。
為了更詳細的說明這些,我們可以構造一個更復雜一點的公式;
授權用戶 主機=[(切換到哪些用戶或用戶組)] [是否需要密碼驗證] 命令1,[(切換到哪些用戶或用戶組)] [是否需要密碼驗證] [命令2],[(切換到哪些用戶或用戶組)] [是否需要密碼驗證] [命令3]......注解:
凡是[ ]中的內容,是可以省略;命令與命令之間用,號分隔;通過本文的例子,可以對照著看哪些是省略了,哪些地方需要有空格;
在[(切換到哪些用戶或用戶組)] ,如果省略,則默認為root用戶;如果是ALL ,則代表能切換到所有用戶;注意要切換到的目的用戶必須用()號括起來,比如(ALL)、(deng)
4.2 示例二
deng ALL=(root)/bin/chown,/bin/chmod如 果我們把第一個實例中的那行去掉,換成這行;表示的是deng可以在任何可能出現的主機名的主機中,可以切換到root下執行 /bin/chown ,可以切換到任何用戶招執行/bin/chmod 命令,通過sudo -l 來查看deng在這臺主機上允許和禁止運行 的命令;
4.3 示例三
deng ALL=(root) NOPASSWD:/bin/chown,/bin/chmod表示的是deng可以在任何可能出現的主機名的主機中,可以切換到root下執行 /bin/chown ,不需要輸入 deng用戶的密碼;并且可以切換到任何用戶下執行/bin/chmod 命令,但執行chmod時需要deng輸入自己的密碼;通過sudo -l 來查看beinan 在這臺主機上允許和禁止運行的命令;
關于一個命令動作是不是需要密碼,我們可以發現在系統在默認的情況下是需要用戶密碼的,除非特加指出不需要用戶需要輸入自己密碼,所以要在執行動作之前加入NOPASSWD: 參數;
4.4 示例四
[deng@itcast ~]$ more /etc/shadow /etc/shadow: 權限不夠 [deng@itcast ~]$這時我們可以用sudo more /etc/shadow 來讀取文件的內容;就就需要在/etc/soduers中給deng授權
deng ALL=/usr/bin/more測試
[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 上運行以下命令:(root) /bin/more(ALL) ALL [deng@itcast ~]$ sudo more /etc/passwd還能看到只有root權限下才能看到的其它文件的內容
對于deng用戶查看和讀取所有系統文件中,我只想把/etc/shadow 的內容可以讓他查看;可以修改如下.
deng ALL=/usr/bin/more /etc/shadow可能有疑問的是我通過su 切換到root用戶就能看到所有想看的內容了。但如果主機上有多個用戶并且不知道root用戶的密碼,但又想查看某些他們看不到的文件,這時就需要管理員授權了;這就是sudo的好處了。
4.5 示例五
如果用戶組出現在/etc/sudoers 中,前面要加%號,比如%deng,中間不能有空格
%deng ALL=/usr/sbin/*,/sbin/*如果我們在 /etc/sudoers 中加上如上一行,表示deng用戶組下的所有成員,在所有可能的出現的主機名下,都能切換到root用戶下運行 /usr/sbin和/sbin目錄下的所有命令;
4.6 示例六
取消程序某類程序的執行,要在命令動作前面加上!號; 在本例中也出現了通配符的*的用法;
#注:把這行規則加入到/etc/sudoers中;但您得有deng這個用戶組,并且deng也是這個組中的才行; deng ALL=/usr/sbin/*,/sbin/*,!/usr/sbin/fdisk本規則表示deng用戶在所有可能存在的主機名的主機上運行/usr/sbin和/sbin下所有的程序,但fdisk 程序除外
[deng@localhost ~]$ sudo -l Password: 注:在這里輸入deng用戶的密碼; User deng may run the following commands on this host: (root) /usr/sbin/* (root) /sbin/* (root) !/sbin/fdisk[deng@localhost ~]$ sudo /sbin/fdisk -l Sorry, user beinan is not allowed to execute '/sbin/fdisk -l' as root on localhost.4.7 示例七
假 如我們就一臺主機localhost,能通過hostname 來查看,我們在這里就不定義主機別名了,用ALL來匹配所有可能出現的主機名;并且有 deng、tom、itcast用戶;主要是通過小例子能更好理解;sudo雖然簡單好用,但能把說的明白的確是件難事;最好的辦 法是多看例子和man soduers ;
User_Alias SYSADER=deng,tom,%itcast User_Alias DISKADER=tom Runas_Alias OP=root Cmnd_Alias SYDCMD=/bin/chown,/bin/chmod,/usr/sbin/adduser,/usr/bin/passwd [A-Za-z]*,!/usr/bin/passwd root #注:定義命令別名DSKCMD,下有成員parted和fdisk ; Cmnd_Alias DSKCMD=/sbin/parted,/sbin/fdisk SYSADER ALL= SYDCMD,DSKCMD DISKADER ALL=(OP) DSKCMD解釋:
第一行:定義用戶別名SYSADER 下有成員 deng,tom,%itcast用戶組下的成員,用戶組前面必須加%號;
第二行:定義用戶別名 DISKADER ,成員有tom
第三行:定義Runas用戶,也就是目標用戶的別名為OP,下有成員root
第四行:定義SYSCMD命令別名,成員之間用,號分隔,最后的!/usr/bin/passwd root 表示不能通過passwd 來更改root密碼;
第五行:定義命令別名DSKCMD,下有成員parted和fdisk ;
第 六行: 表示授權SYSADER下的所有成員,在所有可能存在的主機名的主機下運行或禁止 SYDCMD和DSKCMD下定義的命令。更為明確遙說, deng,tom,itcast用戶組下的成員能以root身份運行 chown 、chmod 、adduser、passwd,但不能 更改root的密碼;也可以以root身份運行 parted和fdisk 。
本條規則的等價規則是;
deng,tom,%itcast ALL=/bin/chown,/bin/chmod,/usr/sbin/adduser,/usr/bin/passwd [A-Za-z]*,!/usr/bin/passwd root,/sbin/parted,/sbin/fdisk第七行:表示授權DISKADER 下的所有成員,能以OP的身份,來運行 DSKCMD ,不需要密碼;更為明確的說 tom能以root身份運行 parted和fdisk 命令;其等價規則是:
tom ALL=(root) /sbin/parted,/sbin/fdisk可能有人會說我想不輸入用戶的密碼就能切換到root并運行SYDCMD和DSKCMD 下的命令,那應該把把NOPASSWD:加在哪里為好?理解下面的例子吧,能明白的;
SYSADER ALL= NOPASSWD: SYDCMD, NOPASSWD: DSKCMD4.8 其它參考
實例1:讓普通用戶fieldyang具有/etc/init.d/nagios腳本重啟的權限,可以在/etc/sudoers添加如下設置:[root@test ~]# visudofieldyang ALL=NOPASSWD:/etc/init.d/nagios restart實例2:讓普通用戶fieldyang具有所有超級用戶的權限而又不用輸入密碼[root@test ~]# visudo fieldyang ALL=(ALL)NOPASSWD:ALL [fieldyang@test ~]#sudo su - [fieldyang@test ~]#pwd /root實例3:針對MySQL數據庫的設置,讓test組中的test用戶具備/etc/init.d/mysqld的權限 ######################## mysql ################ 1. [root@test ~]# groupadd test [root@test ~]# useradd -g test -m -d /home/test -s /bin/bash test [root@test ~]# passwd test 2. [root@test ~]# visudo # test ALL=(ALL) NOPASSWD: /etc/init.d/mysqld test ALL=(ALL) /etc/init.d/mysqld 3. start/stop mysql3.1) start mysqllogin test [root@test ~]# su test [test@test ~]$ sudo /etc/init.d/mysqld start3.2) stop mysqllogin test [root@test ~]# su test [test@test ~]$ sudo /etc/init.d/mysqld stop實例4:針對tomcat的設置,讓test組中的test用戶具備tomcat操作的權限 ######################## tomcat ################ 1. [root@test ~]# groupadd test [root@test ~]# useradd -g test -m -d /home/test -s /bin/bash test [root@test ~]# passwd test 2. [root@test ~]# visudo# test ALL=(ALL) /usr/local/tomcat/bin/shutdown.sh,/usr/local/tomcat/bin/startup.shtest ALL=(ALL) NOPASSWD: /usr/local/tomcat/bin/shutdown.sh,/usr/local/tomcat/bin/startup.sh 3. [root@test ~]# vim /usr/local/tomcat/bin/catalina.sh### JDK export JAVA_HOME=/usr/local/jdkexport JRE_HOME=$JAVA_HOME/jre 4. start/stop tomcat4.1) start tomcatlogin test [root@test ~]# su test [test@test ~]$ sudo /usr/local/tomcat/bin/startup.sh [test@test ~]$ ss -ntlup | grep java [test@test ~]$ curl -I http://localhost:80804.2) stop tomcatlogin test [root@test ~]# su test [test@test ~]$ sudo /usr/local/tomcat/bin/shutdown.sh此部分參考:https://www.cnblogs.com/liujiacai/p/8179994.html
05. 附錄
參考:【Linux】一步一步學Linux系列教程匯總
參考:https://blog.51cto.com/fuwenchao/1340722
參考:https://blog.csdn.net/yongchaocsdn/article/details/78680085
總結
以上是生活随笔為你收集整理的【Linux】一步一步学Linux——sudo配置文件详解(106)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【Linux】一步一步学Linux——g
- 下一篇: 【Linux】一步一步学Linux——l