實戰演練su命令與sudo服務

  • su和su-

      • 切換方式

      • 實例:

    sudo 提權

      • sudo的特色功能

      • sudo命令的常用參數

      • 注意

      • 案例1——允許zhanghe用戶執行所有命令:

      • 案例2——僅允許linuxprobe用戶以root用戶身份執行cat命令。

      • 案例3——允許linuxprobe用戶以任意身份執行命令,且每次都不需要密碼驗證。

su命令與sudo服務

在工作生產環境中不要去使用root用戶身份,因為一旦執行了錯誤的命令后可能直接讓系統崩潰。但因為許多的系統管理命令和服務為了安全所以只有超級用戶才可以使用,因此這也無疑讓普通用戶受到更多的權限束縛,而su命令則是用于便捷的變更使用者的身份,能夠讓使用者在不注銷的情況下順暢的切換至其他用戶。

切換方式

root用戶切換到其他用戶時無需輸入密碼 
普通用戶再切換用戶需要輸入對方帳戶密碼才可以 
su user shell環境依然是root身份或者當前用戶身份 
su – user 完全切換,shell環境變成切換過去的環境了

實例:

[root@localhost ~]# echo $PATH
/usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
[root@localhost ~]# su zhanghe
[zhanghe@localhost root]$ echo $PATH
/usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
shell 環境變量沒有切換過去
[root@localhost ~]# su - zhanghe
[zhanghe@localhost ~]$ echo $PATH
/usr/lib64/qt-3.3/bin:/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/zhanghe/bin
shell 環境變量切換成 zhanghe用戶的環境變量了

sudo 提權

sudo服務用于給普通用戶提供額外權利來完成原本超級用戶才能完成的任務,格式為:“sudo [參數] 命令名稱”。


雖然上面的su命令允許普通用戶完全變更為root用戶身份,但這也無疑會暴露了超級管理員的密碼,使得系統增添很多的安全隱患,因此我們可以使用sudo程序來僅將特定命令的執行權限賦予給指定的用戶,這樣即可保證了正常工作的同時也避免了過度使用root身份。只要合理的配置sudo服務便可以合理的兼顧系統的安全性和用戶便捷性,原則也很簡單,即在保證普通用戶完成工作的前提下,盡可能少的給予額外的權限。

sudo的特色功能

1:限制用戶執行指定的命令。 
2:記錄用戶執行的每一條命令。 
3:配置文件(/etc/sudoers)提供集中的管理用戶、權限與主機等參數。 
4:驗證過密碼后5分鐘(默認值)內無須再讓用戶驗證密碼,更加的方便。

sudo命令的常用參數

參數 作用 
-h 列出幫助信息。 
-l列出當前用戶可執行的命令。 
-u 用戶名或UID值 以指定的用戶身份執行命令。 
-k 清空安全時間,下次執行sudo時需要再次密碼驗證。 
-b 在后臺執行指定的命令。 
-p 更改詢問密碼的提示語。

只用超級用戶才可以使用visudo命令編輯sudo程序的配置文件(/etc/sudoers), 
visudo命令的優勢: 
防止多個用戶同時修改sudo配置文件。 
對sudo程序配置文件的語法檢查。

注意

visudo會調用vi編輯器來修改配置文件,而如果語法有報錯則會報錯:

visudo: >>> /etc/sudoers: syntax error near line 111 <<<
What now?
Options are:
(e)dit sudoers file again
(x)it without saving changes to sudoers file
(Q)uit and save changes to sudoers file (DANGER!)
//此時可以敲擊"e鍵"來修正內容,敲擊"x鍵"直接退出不保存還可敲擊"Q鍵"強制保存退出(sudo程序將不能被啟動)。

案例1——允許zhanghe用戶執行所有命令:

//使用visudo命令編輯sudo程序的配置文件,在第99行添加參數允許linuxprobe用戶能夠從任意主機執行任意命令的參數。
//格式為:允許使用sudo服務用戶 來源主機=(以誰的身份執行命令)  可執行命令的列表
[root@localhost ~]# visudo
zhanghe ALL=(ALL) ALL
//將上面的配置文件保存退出后切換至zhanghe用戶:
[root@localhost ~]# su - zhanghe
//查看zhanghe用戶可以使用那些sudo執行的命令(此處驗證執行用戶的密碼):
[zhanghe@localhost ~]$ sudo -l
[sudo] password for zhanghe:
Matching Defaults entries for zhanghe on this host:
   !visiblepw, always_set_home, env_reset, env_keep="COLORS DISPLAY HOSTNAME HISTSIZE INPUTRC
   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
//告知zhanghe用戶能夠執行的命令有“所有”:
User zhanghe may run the following commands on this host:
   (ALL) ALL
[zhanghe@localhost ~]$ ls /root/
ls: cannot open directory /root/: Permission denied
//使用ls命令查看/root目錄內的文件提示權限拒絕:
[zhanghe@localhost ~]$ sudo ls /root/
anaconda-ks.cfg  install.log  install.log.syslog
//使用sudo命令以root用戶身份執行則正常瀏覽:

案例2——僅允許linuxprobe用戶以root用戶身份執行cat命令。

使用visudo命令編輯sudo程序的配置文件,將前面實驗的參數刪除(第99行)。然后在第112行追加允許linuxprobe用戶只能以root用戶身份執行cat命令的參數:

[root@localhost ~]# visudo
zhanghe ALL=(root) /bin/cat
//切換至zhanghe用戶
[root@localhost ~]# su - zhanghe
[zhanghe@localhost ~]$ cat /etc/shadow
cat: /etc/shadow: Permission denied
//使用cat命令查看密碼文件后提示權限不足
[zhanghe@localhost ~]$ sudo cat /etc/shadow
root:$6$CGsqab6d$Cd.PnnWtlL5XZAyr9J2zoMqyJH1QodcDp1pQp0uZ1f0Cq4eq9.TMkSQU6IfpvYZEYc32.lmF0lKuQwavnC49a0:17007:0:99999:7:::
//使用sudo命令來運行cat命令后獲得了root權限后查看成功

案例3——允許linuxprobe用戶以任意身份執行命令,且每次都不需要密碼驗證。

使用visudo命令編輯sudo程序的配置文件,將前面實驗的參數刪除(第112行)后在此行追加下面的參數

[root@localhost ~]# visudo
zhanghe ALL=NOPASSWD: ALL
[root@localhost ~]# su - zhanghe
//切換至zhanghe用戶
[zhanghe@localhost ~]$ sudo -k
//清空安全時間
[zhanghe@localhost ~]$ sudo ifconfig
eth0      Link encap:Ethernet  HWaddr 00:0C:29:55:1F:A0  
         inet addr:10.1.252.97  Bcast:10.1.255.255  Mask:255.255.0.0
         inet6 addr: fe80::20c:29ff:fe55:1fa0/64 Scope:Link
         UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
         RX packets:3194 errors:0 dropped:0 overruns:0 frame:0
         TX packets:759 errors:0 dropped:0 overruns:0 carrier:0
         collisions:0 txqueuelen:1000
         RX bytes:282479 (275.8 KiB)  TX bytes:95037 (92.8 KiB)

lo        Link encap:Local Loopback  
         inet addr:127.0.0.1  Mask:255.0.0.0
         inet6 addr: ::1/128 Scope:Host
         UP LOOPBACK RUNNING  MTU:65536  Metric:1
         RX packets:2 errors:0 dropped:0 overruns:0 frame:0
         TX packets:2 errors:0 dropped:0 overruns:0 carrier:0
         collisions:0 txqueuelen:0
         RX bytes:98 (98.0 b)  TX bytes:98 (98.0 b)
//執行sudo后不再需要密碼驗證

原創文章,作者:M20_he,如若轉載,請注明出處:http://www.www58058.com/43427

(0)
M20_heM20_he
上一篇 2016-09-05
下一篇 2016-09-05

相關推薦

  • N22-第九周作業

    1、寫一個腳本,判斷當前系統上所有用戶的shell是否為可登錄shell(即用戶的shell不是/sbin/nologin);分別這兩類用戶的個數;通過字符串比較來實現; #!/bin/bash # declare -i count1=0 declare -i count2=0 for i in $(awk -F : '{print $7}&#03…

    Linux干貨 2016-10-17
  • shell之變量總結

    1 什么是shell變量 按照定義來說,變量是存儲設備中的一些可讀寫的存儲單元.變量可以定制用戶本身的工作環境。使用變量可以保存有用信息,使系統獲知用戶相關設置。變量也用 于保存暫時信息。例如:一變量為EDITOR,系統中有許多編輯工具,但哪一個適用于系統呢?將此編輯器名稱賦給EDITOR,這樣,在使用cron或其 他需要編輯器的應用時,這就是你將一直使用的…

    Linux干貨 2016-08-15
  • 馬哥教育網絡21期+第三周練習博客

    馬哥教育網絡21期+第三周練習博客 一.回顧第二周的學習內容 1,Linux上的文件管理類的命令: mkdir:創建目錄: [root@localhost ~]# mkdir /tmp/fstab2222 [root@localhost ~]# ls -l /tmp/ total&nbsp…

    Linux干貨 2016-07-16
  • Homework Week-11 加密、CA及DNS

    1、詳細描述一次加密通訊的過程,結合圖示最佳。 ——————————————————————&#…

    Linux干貨 2016-11-01
  • vim編輯器

    在使用Linux的管理過程中有很多的工作就是要修改或設置某些重要軟件的配置文件,這些配置文件都是以ASCLL的純文本格式存在的,所以能夠學好一個文本編輯器就至關重要了,vim作為高級版的vi編輯器不僅可以用不同的顏色來高亮顯示某些重要關鍵字或字符還能進行如shell腳本的編寫,c程序的編輯等功能。 vim編輯器和nano編輯器是一個全屏的編輯器。vim打開文…

    Linux干貨 2016-12-20
  • 決不放棄

    堅持到底!

    Linux干貨 2017-11-17
欧美性久久久久