Linux环境下提升普通用户权限(sudo)
一. Linux環(huán)境下提升普通用戶權(quán)限(sudo)
用sudo讓普通用戶獲得超級用戶的一部分權(quán)利,能夠做超級用戶才能做的事情,還能夠?qū)ζ胀ㄓ脩羯矸葑鲆恍┫拗?#xff0c;指定某一個或某幾個人來做,并且普通用戶不需要知道超級用戶的密碼,就能夠完成超級用戶才能完成的任務(wù)。
環(huán)境:管理員root和普通用戶redhat
1. 授權(quán)之前測試:
# /etc/init.d/httpd restart? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? root執(zhí)行
Stopping httpd:? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? [? OK? ]
Starting httpd:? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? [? OK? ]
$ /etc/init.d/httpd restart? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? redhat執(zhí)行
rm: cannot remove `/var/run/httpd.pid': Permission denied? [FAILED]
Starting httpd:
touch: cannot touch `/var/lock/subsys/httpd': Permission denied
可以看出redhat用戶執(zhí)行httpd腳本重啟的時候,被拒絕。
2. 超級用戶為普通用戶授權(quán),讓redhat可以做這件事情。
讓redhat這個用戶使用sudo調(diào)用這個腳本并且執(zhí)行。
$ sudo /etc/init.d/httpd resart? ? ? ? ? ? ? ? ? ? ? ? ? 為授權(quán)之前用sudo
We trust you have received the usual lecture from the local System
Administrator. It usually boils down to these two things:
? ? ? ? #1) Respect the privacy of others.
? ? ? ? #2) Think before you type.
Password:
redhat is not in the sudoers file.? This incident will be reported.
可以看出,由于redhat用戶還沒有被超級用戶授權(quán),所以會出現(xiàn)這樣的錯誤,就算輸如root用戶密碼也是不行的,因為在sudoers文件里沒有給予權(quán)利。
3. root用戶修改 /etc/目錄下的sudoers文件。
root用戶可以手工修改/etc目錄下的sudoers,這個文件權(quán)限的默認值是4 4 0,其他用戶無權(quán)訪問。
(兩 種方法修改,第一種:chmod 660 /etc/shdoers? 改成可以寫的權(quán)限,然后用vi 編輯即可,改完之后在把權(quán)限改回去。第二種:用visudo, visudo會把這個文件保存到一個臨時文件里面去,它不是真正的配置文件,改完后這個內(nèi)容會保存在內(nèi)存里,退出visudo后才會寫進真正的 sudoers文件。)
# ls -l /etc/sudoers
-r--r-----? 1 root root 580 Oct? 4? 2004 /etc/sudoers
# visudo
在 root? ? ALL=(ALL) ALL 下面添加一行:redhat? ALL=(ALL) /etc/init.d/httpd? 表示:redhat用戶可以在任何主機上變成任何人去行/etc/init.d 目錄下的httpd 腳本。
例如:
root? ? ALL=(ALL) ALL
redhat? ALL=(ALL) /etc/init.d/httpd?
# more /etc/sudoers? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 確認一下有沒有錯誤
4. 測試:redhat 執(zhí)行/etc/init.d/httpd 腳本,讓它重啟,
$ sudo /etc/init.d/httpd restart
Password:? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 此處輸入的是redhat自己的密碼
Stopping httpd:? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? [? OK? ]
Starting httpd:? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? [? OK? ]
可以看出經(jīng)過root授權(quán)后,Redhat成功執(zhí)行了該腳本。
按照這個規(guī)律,可以定義很多常見的一些命令給普通用戶執(zhí)行。
(2). 讓redhat用戶不用輸入密碼就能直接執(zhí)行service。
# visudo
redhat? ALL=(ALL) NOPASSWD:/sbin/service? ? ? ? ? ? ? ? ? ? 表示用戶不需要輸密碼? ? ? ?
# more /etc/sudoers
測試:
$ sudo /sbin/service iptables restart? ? ? ? ? ? ? ? ? ? 重啟防火墻,不需要輸入密碼。
(3). 讓redhat用戶在執(zhí)行命令是必須輸入密碼。
# visudo
redhat? ALL=(ALL) PASSWD:/sbin/service? ? ? ? ? ? ? ? ? 表示用戶需要輸如自己的密碼? ? ?
測試:?
$ sudo /sbin/service httpd restart
在輸入密碼5分鐘之內(nèi),可以任意使用sudo,不用輸密碼,5分鐘之后,在執(zhí)行就需要輸入密碼。
用到的命令:
$ sudo -l? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 查看本人在這臺主機上擁有那些權(quán)利
# man sudo? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 更多用法查看幫助
詳解sudoers文件:
root? ? ALL=(ALL) ALL? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 默認為root用戶定義好的
可分成4個字段來理解:
第一個字段指定的是用戶,可以是用戶名,也可以是別名。
第 二個字段指定的是用戶所在的主機,可以是ip,也可以是主機名,限制的一般都是本機,也就是限制使用這個文件的主機,如果指定 為:192.168.1.88= 表示這個文件只有在這臺主機上生效,如果拷貝到別的機子上是不起作用的,一般都指定為:ALL 表示所有的主機,不管文件拷到那里都可以用。
第三個字段括號里指定的也是用戶,比如說 (tom,redhat) 可以是一個或多個,ALL 表示所有用戶。
第四個字段指定的是執(zhí)行的命令。
例如:
root? ? ALL=(ALL) ALL? ? ? ? ? ? 表示:root用戶可以在這臺主機上以所有人的身份去執(zhí)行所有命令。
redhat? ALL=(lake)? /bin/ls? 表示:redhat用戶可以在這臺主機上變成lake身份去執(zhí)行l(wèi)s。
[redhat@localhost ~]$ sudo -u lake ls ~lake? ? ? ? redhat以lake的身份查看lake的目錄內(nèi)容
?
?
from:http://bbs.tech.ccidnet.com/read.php?tid=596898
轉(zhuǎn)載于:https://www.cnblogs.com/Podevor/archive/2011/06/23/2788185.html
《新程序員》:云原生和全面數(shù)字化實踐50位技術(shù)專家共同創(chuàng)作,文字、視頻、音頻交互閱讀總結(jié)
以上是生活随笔為你收集整理的Linux环境下提升普通用户权限(sudo)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: POWER-BI开发版功能简介
- 下一篇: 80客团队博客建设的思路