咱們信任您已經從系統管理員那裏瞭解了平常注意事項。
總結起來無外乎這三點:
#1) 尊重別人的隱私。
#2) 輸入前要先考慮(後果和風險)。
#3) 權力越大,責任越大。
sudo權限的做用是:使普通用戶能夠臨時以 root 用戶的身份和權限執行系統命令sudo權限的操做對象是系統命令shell
visudo
visudo 命令實際修改的是
/etc/sudoers
文件
/etc/sudoers
配置文件[root/etc]# cat /etc/sudoers ... 省略部份內容 ... ## 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」用戶組的成員運行 網絡、軟件、服務管理應用等命令。 # %sys ALL = NETWORKING, SOFTWARE, SERVICES, STORAGE, DELEGATING, PROCESSES, LOCATE, DRIVERS ## Allows people in group wheel to run all commands ## 容許「wheel」用戶組的成員運行全部命令 %wheel ALL=(ALL) ALL ## Allows people in group wheel to run all commands without a password ## 容許「wheel」用戶組的成員運行全部命令,且運行時不須要輸入密碼 # %wheel ALL=(ALL) NOPASSWD: ALL ## Allows members of the users group to mount and unmount the cdrom as root ## 容許「users」組的成員運行 掛載、卸載光盤的命令 # %users ALL=/sbin/mount /mnt/cdrom, /sbin/umount /mnt/cdrom ## Allows members of the users group to shutdown this system ## 容許「users」組的成員在本機運行 /sbin/shutdown -h now 命令 # %users localhost=/sbin/shutdown -h now ## Read drop-in files from /etc/sudoers.d (the # here does not mean a comment) ## 讀取 /etc/sudoers.d 目錄下全部文件的內容做爲配嵌入到此配置文件 ## 注意,下面的 # 後面並非註釋 #includedir /etc/sudoers.d
[用戶名] [被管理主機的IP]=([可使用的身份]) [NOPASSWD: ][受權的命令]
[被管理主機的IP]
、[可使用的身份]
、[受權的命令]
均可以使用ALL
來表示不限制。
添加[NOPASSWD: ]
選項可使用戶在使用sudo權限時不須要輸入密碼。
[受權的命令]
要使用絕對路徑,多條命令之間可用逗號(,
)分隔。
## Allow root to run any commands anywhere ## 容許root在任何地方運行任何命令 root ALL=(ALL) ALL
%[組名] [被管理主機的IP]=([可使用的身份]) [NOPASSWD: ][受權的命令]
[被管理主機的IP]
、[可使用的身份]
、[受權的命令]
均可以使用ALL
來表示不限制。
添加[NOPASSWD: ]
選項可使用戶在使用sudo權限時不須要輸入密碼。
用戶組 與 用戶 的惟一區別是用戶組前有個%
## 容許「wheel」用戶組的成員運行全部命令,且運行時不須要輸入密碼 %wheel ALL=(ALL) NOPASSWD: ALL
[受權的命令]
設置得越具體,用戶得到的權限越小。/usr/bin/passwd
、/usr/bin/vi
、/usr/bin/su
、/usr/bin/bash
命令的權限,擁此權限的用戶能夠修改root用戶密碼,而後隨心所欲。sudo [命令]
:以 root 身份來執行命令用戶必須有相應命令的sudo權限
[vagrant~]$ sudo less /root/.bash_history cat report.md | grep -v ID | awk '$4 >= 99 {print $2}' cat report.md | grep -v ID | awk '$4 <= 99 {print $2}' cat report.md | grep -v ID | awk '$4 == 100 {print $2}' sed -n '2p' report.md sed -n '2,4p' report.md sed '2,4d' report.md cat -n report.md sed '1a Begin' report.md sed '1i Begin' report.md sed '1a Begin' report.md sed '1a End' report.md sed '1c Hello World' report.md sed '5c Hello World' report.md ... 省略 ...
sudo su
:切換到root用戶用戶必須有/usr/bin/su
命令的sudo權限
一旦切換成功,用戶能夠以root身份執行任何命令
[vagrant/tmp]$ sudo su [root/tmp]# passwd 更改用戶 root 的密碼 。 新的 密碼: 無效的密碼: 密碼少於 8 個字符 從新輸入新的 密碼: passwd:全部的身份驗證令牌已經成功更新。
sudo -s <shell>
:切換到root用戶的shell能夠不加<shell>
,會使用默認 shell
用戶必須有相應shell命令的sudo權限,例如/usr/bin/bash
一旦切換成功,用戶能夠以root身份執行任何命令
sudo -s /usr/bin/bash
命令切換到 root 的shell,而後修改root用戶的密碼[vagrant/tmp]$ sudo -s /usr/bin/bash [root/tmp]# passwd 更改用戶 root 的密碼 。 新的 密碼: 無效的密碼: 密碼少於 8 個字符 從新輸入新的 密碼: passwd:全部的身份驗證令牌已經成功更新。
<shell>
,會使用默認 shell[vagrant/tmp]$ sudo -s [root/tmp]# exit
sudo -l
:列出目前用戶可用的sudo權限的指令[vagrant~]$ sudo -l ...省略部份內容... 用戶 vagrant 能夠在本機上運行如下命令: (ALL) /usr/bin/bash, /usr/bin/su, /usr/bin/less
visudo
,而後添加以下內容user1 ALL=(ALL) /sbin/shutdown -r now
[user1@10 ~]$ sudo -l ...省略部份內容... 用戶 user1 能夠在 10 上運行如下命令: (ALL) /sbin/shutdown -r now
要想添加其餘用戶,必須擁有添加用戶和設置密碼的權限,即 /usr/sbin/useradd
和 /usr/bin/passwd
兩個命令的sudo權限安全
若用戶徹底擁有 /usr/bin/passwd
的sudo權限,則能夠經過 sudo passwd
命令或者 sudo passwd root
命令修改 root 密碼,這樣就會變得很是不安全。bash
所以,須要嚴格限制用戶對 /usr/bin/passwd
的權限:服務器
user ALL=(ALL) /usr/bin/passwd [A-Za-z]*, !/usr/bin/passwd "", !/usr/bin/passwd root
/usr/bin/passwd [A-Za-z]*
表示 passwd 命令後附加的第一個字符只能是大小寫字母。 !/usr/bin/passwd ""
表示 passwd 命令後不能什麼都不加。 !/usr/bin/passwd root
表示 passwd 命令後不能加 root。網絡
三條語句的缺一不可,且順序不能顛倒。app
visudo
,而後添加以下內容user1 ALL=(ALL) /usr/sbin/useradd user1 ALL=(ALL) /usr/bin/passwd [A-Za-z]*, !/usr/bin/passwd "", !/usr/bin/passwd root
[user1@10 ~]$ sudo -l ...省略部份內容... 用戶 user1 能夠在 10 上運行如下命令: (ALL) /usr/sbin/useradd (ALL) /usr/bin/passwd [A-Za-z]*, !/usr/bin/passwd \"\", !/usr/bin/passwd root
[user1@10 ~]$ sudo useradd user2 [user1@10 ~]$ sudo passwd user2 更改用戶 user2 的密碼 。 新的 密碼: 無效的密碼: 密碼是一個迴文 從新輸入新的 密碼: passwd:全部的身份驗證令牌已經成功更新。 [user1@10 ~]$ grep user2 /etc/passwd user2:x:1006:1007::/home/user2:/bin/bash
passwd
和 passwd root
兩種方式修改 root 用戶的密碼,所有失敗[user1@10 ~]$ sudo passwd 對不起,用戶 user1 無權以 root 的身份在 10.0.2.15 上執行 /bin/passwd。 [user1@10 ~]$ sudo passwd root 對不起,用戶 user1 無權以 root 的身份在 10.0.2.15 上執行 /bin/passwd root。
/usr/bin/passwd [A-Za-z]*
決定 passwd 命令後附加的第一個字符只能是大小寫字母。[user1@10 ~]$ sudo useradd 2_user [user1@10 ~]$ sudo passwd 2_user 對不起,用戶 user1 無權以 root 的身份在 10.0.2.15 上執行 /bin/passwd 2_user。