L44.linux命令每日一练 -- 第七章 Linux用户管理及用户信息查询命令 -- su和visudo
7.9 su:切換用戶
7.9.1 命令詳解
? 【命令星級】 ★★★★★
? 【功能說明】
? su命令用戶將當前用戶切換到指定用戶或者以指定用戶的身份執行命令或程序
? 【語法格式】
su [option] [user] su [選項] [用戶名]? 說明:
? 1)在su命令以及后面的選項和用戶名里,每個元素直接都至少要有一個空格。
? 2)若命令后面的用戶名省略了,則默認切換為root用戶。
? 3)從root用戶切換到普通用戶時,不需要任何密碼,從普通用戶切換到root用戶時,則需要輸入root密碼。
? 【選項說明】
? 表7-11針對該命令的參數選項進行了說明。
? 表7-11 su命令的參數選項及說明
7.9.2 使用范例
? **范例7-19:**由普通用戶neteagle切換到root用戶。
[C:\~]$ ssh neteagle@10.0.0.201Connecting to 10.0.0.201:22... Connection established. To escape to local shell, press 'Ctrl+Alt+]'.WARNING! The remote SSH server rejected X11 forwarding request. Last login: Sat Oct 17 20:44:31 2020 Wellcome to Linux! [neteagle@centos7 ~]$ whoami #當前登錄的用戶為普通用戶neteagle。 neteagle [neteagle@centos7 ~]$ su root #切換用戶,若切換的用戶為root,則可以省略不寫。 Password: #這里當然就是root用戶的密碼了。[root@centos7 /home/neteagle]# env |egrep "USER|MAIL|PWD|LOGNAME" #查看當前登錄用戶root的環境變量。 USER=neteagle MAIL=/var/spool/mail/neteagle PWD=/home/neteagle #已經登錄到root了,為什么家目錄還是/home/neteagle呢? LOGNAME=neteagle? 細心的讀者應該已經看到了,如果使用su而不加上“-”這個參數,那么切換前的用戶的環境信息還會存在,這會引起很多麻煩,甚至還會出現意想不到的結果。因此,切換用戶時,最好是"su - 用戶名"。這是生產場景中標準的切換用戶的操作方法。
? 退出到普通用戶重新測試,命令如下:
[root@centos7 /home/neteagle]# exit [neteagle@centos7 ~]$ su - root #第二種切換用戶的方式,使用參數"-",root可省略。 Password: Last login: Sun Oct 18 16:32:33 CST 2020 on pts/1 [root@centos7 ~]# env |egrep "USER|MAIL|PWD|LOGNAME" #再次查看環境變量。 USER=root MAIL=/var/spool/mail/root PWD=/root LOGNAME=root? 這回環境變量的內容都已經切換到root下了,這里需要提醒一下的是,不只是切換到root,切換到其他用戶也是一樣。
? 從上面的范例可以得出如下結論。
-
"su 用戶名"雖然能夠切換到對應用戶,但是登錄后的環境變量信息有些還是切換前用戶的環境變量信息。
-
“su - 用戶名”不但能切換到相應的用戶,還能將登錄后的環境變量一并切換,這是標準規范的操作方法。
-
? **范例7-20:**如何讓系統在每次開機時自動以普通用戶身份啟動指定服務腳本?
[neteagle@centos7 ~]$ tail -1 /etc/rc.local #在開機啟動文件/etc/rc.local中寫入啟動命令。 su - neteagle -c '/bin/sh /server/scripts/deploy.sh' #以普通用戶身份執行腳本,但并不是在用戶的下面。? **提示:**除此之外還有很多方法,例如,可以進入到普通用戶下再執行該腳本。
? 通過普通用戶運行服務是一個很好的提升系統安全性的辦法,在生產環境中,大多數服務都可以通過普通用戶啟動(不使用特權端口),而不用root用戶啟動。這樣就可以使系統的安全性又提高一個等級,同時使用普通用戶管理就可以了,管理者不需要具體root權限。
7.9.3 su命令總結
- 普通用戶切換到root用戶,可使用su -或su - root,但必須輸入root密碼才能完成切換。
- root用戶切換到普通用戶,可使用“su - 普通用戶名”的寫法。不需要輸入任何密碼就能完成切換。在CentOS 5.X系統中,切換到普通用戶后,在執行一些命令如ifconfig時,可能會遇到環境變量PATH路徑問題,也會因此找不到某些命令(一般是/sbin、/usr/sbin等下面的命令),這時就需要使用全路徑執行或者調整配置普通用戶的PATH變量內容,CentOS 6和CentOS 7不存在這方面的問題。
- 如果僅希望在某用戶下執行命令,而不直接切換到該用戶下操作,則可以使用"su - 用戶名 -c 命令"的方式。
7.10 visudo:編輯sudoers文件
7.10.1 命令詳解
? 【命令星級】 ★★★★★
? 【功能說明】
? visudo命令是專門用來編輯/etc/sudoers這個文件的,同時它還提供了語法檢查等功能。/etc/sudoers文件是sudo命令(見下文)的配置文件。
? 【語法格式】
visudo [option] visudo [選項]? **說明:**在visudo命令以及后面的選項和用戶名里,每個元素直接都至少要有一個空格。
? 【選項說明】
? 表7-12針對該命令的參數選項進行了說明。
? 表7-12 visudo命令的參數選項及說明
7.10.2 使用范例
? **范例7-21:**執行visudo對普通用戶neteagle和younggirl授權的例子。
? 執行如下visudo命令,即可打開sudo的配置文件進行編輯:
[root@centos7 ~]# visudo #相當于直接執行vim /etc/sudoers編輯,但使用命令方式更安全,推薦此種方式。? 在/etc/sudoers文件的大約第100行下面添加需要提升為root權限的普通用戶名及對應權限,格式如下:
neteagle ALL=(ALL) ALL#此行是第100行,將neteagle提權為root身份。 younggirl ALL=(ALL) /usr/sbin/useradd,/usr/sbin/userdel #授權younggirl使其可以以root身份添加和刪除用戶權限。 #分別對neteagle和younggirl兩個用戶做不同的授權,如上。 :wq? 其中,visudo或者vim /etc/sudoers,可在100行下面加入,也可以在其他位置加入。
? 上述授權內容對應的說明見表7-13。
? 表7-13 sudo提權配置說明
| user | MACHINE= | COMMANDS |
| neteagle | ALL=(ALL) | /usr/sbin/useradd,/usr/sbin/userdel |
? **提示:**如果younggirl用戶被授予上述權限,那么它可以在所有的機器上以所有的角色運行useradd、userdel命令,而neteagle用戶則會擁有與root相同的權限,并且可以切換到root賬戶。
? 如果是針對用戶組,則對應的授權命令如下:
? %用戶組 機器=(授權使用哪個角色的權限) /usr/sbin/useradd
? 通過sudo命令進行系統的授權管理的目的是,既能讓運維人員正常工作,又不會威脅到系統的安全,還可以審計用戶使用sudo的提權操作命令,默認的用戶時無法獲取root權限的。、
? 為了管理方便,工作中可以為neteagle授權ALL權限,neteagle既可管理整個系統,平時也可以使用neteagle用戶處理工作,而不使用root用戶。
? **范例7-22:**檢查sudoers文件語法的例子。
? 有的時候,用戶并不是使用visudo(保存時會自動檢查語法)編輯的sudoers文件,而是使用vim或者echo等命令編輯的sudoers文件,此時就需要執行如下命令檢查編輯文件的語法是否正確,如果語法不正確,則可能會導致授權無法生效的問題。
? 例如,工作中若有批量管理用戶的需求,那么使用快速操作命令增加sudo授權,就 需要單獨執行語法檢查,快速操作命令如下:
[root@centos7 ~]# \cp /etc/sudoers /etc/sudoers.ori [root@centos7 ~]# echo "neteagle ALL=(ALL) NOPASSWD: ALL" >>/etc/sudoers [root@centos7 ~]# tail -1 /etc/sudoers neteagle ALL=(ALL) NOPASSWD: ALL? 上述操作是直接追加內容到sudoers文件,并沒有進行語法檢查,因此需要單獨執行語法檢查命令:
[root@centos7 ~]# visudo -c #使用-c選項進行語法檢查。 /etc/sudoers: parsed OK總結
以上是生活随笔為你收集整理的L44.linux命令每日一练 -- 第七章 Linux用户管理及用户信息查询命令 -- su和visudo的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: html图片慢慢消失的事件,[Web前端
- 下一篇: 笔记本移动硬盘linux系统安装教程,移