sudo原理:運行命令時,系統檢查/etc/sudoers 配置文件,看這個用戶是否有執行sudo的權限,如果有權限,系統要求輸入用戶自己的密碼,如果密碼輸入正確,系統會以root身份運行 passwd xx命令。
一,直接修改配置文件(不推薦)
1. 先cd到/etc/sudoers目錄下
2. 由於sudoers文件為只讀權限,所以需要添加寫入權限,chmod u+w sudoers
3. vim sudoers
4. 找到root ALL = (ALL) ALL這一行,在下一行加入username ALL = (ALL) ALL。username指代你想加入sudo組的用戶名。
5. 把sudoers文件的權限修改回來。chmod u-w sudoers
6. 這樣普通用戶可以執行sudo命令了。
考慮到配置文件很重要,linux提供了visudo命令來修改文件,並且在保存時會自動檢測語法,防止配置錯誤導致沒辦法使用sudo命令。
二,visudo命令修改配置文件
[root@wc1 Desktop]# visudo .............省略.................. ## Allow root to run any commands anywhere root ALL=(ALL) ALL mysql ALL=(ALL) ALL #把上面root的行復制粘貼,把root改成mysql
含義是:
(1)用戶mysql(第1列),可以從任何地方登錄后(第2列),執行任何人的(第3列),任何命令(第4列)。
(2)還可以這么寫:%mysql ALL=(ALL) ALL,就是讓屬於mysql用戶組的用戶,從任何地方登錄,執行任何人的任何命令。
(3)如果不想輸入密碼,可以這么配置:%mysql ALL=(ALL) NOPASSWD: ALL,不過這樣不太安全。
(4)最好不要把最后一列設置為ALL,因為這樣相當於有了root的所有權限,可以按照需求來設置,比如mysql用戶需要關閉、重啟服務器的權限:
%mysql ALL=(ALL) NOPASSWD:/sbin/shutdown, /usr/bin/reboot
首先,新建用戶 user1:
[root@wc1 Desktop]# useradd user1
然后,mysql用戶用sudo來修改用戶user1的密碼,如果連續3次輸入mysql用戶的密碼都不對,那么sudo命令就不會執行:
[mysql@wc1 ~]$ sudo passwd user1 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 mysql: Sorry, try again. [sudo] password for mysql: Sorry, try again. [sudo] password for mysql: Sorry, try again. sudo:3 次錯誤密碼嘗試 [mysql@wc1 ~]$ sudo passwd user1 [sudo] password for mysql: 更改用戶 user1 的密碼 。 新的 密碼: 無效的密碼: 它基於字典單詞 無效的密碼: 過於簡單 重新輸入新的 密碼: passwd: 所有的身份驗證令牌已經成功更新。