免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1018 | 回复: 0
打印 上一主题 下一主题

sudo用法 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-04-20 17:32 |只看该作者 |倒序浏览
sudo 的執行則僅需要自己的密碼即可! 甚至可以設定不需要密碼即可執行 sudo 呢!由於 sudo 可以讓你以其他用戶的身份執行指令 (通常是使用 root 的身份來執行指令),因此並非所有人都能夠執行 sudo , 而是僅有規範到 /etc/sudoers 內的用戶才能夠執行 sudo 這個指令喔!
sudo 的指令用法
建议首先看一下/etc/sudoers内的说明及举例
由於一開始系統預設僅有 root 可以執行 sudo ,因此底下的範例我們先以 root 的身份來執行,等到談到 visudo 時,再以一般使用者來討論其他 sudo 的用法吧!
[root@www ~]# sudo [-b] [-u 新使用者帳號] [-c 指令串 | 指令]
選項與參數:
-b  :將後續的指令放到背景中讓系統自行執行,而不與目前的 shell 產生影響
-u  :後面可以接欲切換的使用者,若無此項則代表切換身份為 root 。
-c  :若有一連續的指令 (&&, ||, ;) 欲執行,可用 -c "指令串" 處理。
範例一:你想要以 sshd 的身份在 /tmp 底下建立一個名為 mysshd 的檔案
[root@www ~]# sudo -u sshd touch /tmp/mysshd
[root@www ~]# ll /tmp/mysshd
-rw-r--r-- 1 sshd sshd 0 Feb 28 17:42 /tmp/mysshd
# 特別留意,這個檔案的權限是由 sshd 所建立的情況喔!
範例二:你想要以 vbird1 的身份建立 ~vbird/www 並於其中建立 index.html 檔案
[root@www ~]# sudo -u vbird1 sh -c "mkdir ~vbird1/www; cd ~vbird1/www; \
>  echo 'This is index.html file' > index.html"
[root@www ~]# ll -a ~vbird1/www
drwxr-xr-x 2 vbird1 vbird1 4096 Feb 28 17:51 .
drwx------ 5 vbird1 vbird1 4096 Feb 28 17:51 ..
-rw-r--r-- 1 vbird1 vbird1   24 Feb 28 17:51 index.html
# 要注意,建立者的身份是 vbird1 ,且我們使用 sh -c "一串指令" 來執行的!
sudo 可以讓你切換身份來進行某項任務,例如上面的兩個範例。範例一中,我們的 root 使用 sshd 的權限去進行某項任務! 要注意,因為我們無法使用『 su - sshd 』去切換系統帳號 (因為系統帳號的 shell 是 /sbin/nologin), 這個時候 sudo 真是他 X 的好用了!立刻以 sshd 的權限在 /tmp 底下建立檔案!查閱一下檔案權限你就瞭解意義啦! 至於範例二則更使用多重指令串 (透過分號 ; 來延續指令進行),使用 sh -c 的方法來執行一連串的指令, 如此真是好方便!
但是 sudo 預設僅有 root 能使用啊!為什麼呢?因為 sudo 的執行是這樣的流程:
  • 當使用者執行 sudo 時,系統於 /etc/sudoers 檔案中搜尋該使用者是否有執行 sudo 的權限;
  • 若使用者具有可執行 sudo 的權限後,便讓使用者『輸入使用者自己的密碼』來確認;
  • 若密碼輸入成功,便開始進行 sudo 後續接的指令(但 root 執行 sudo 時,不需要輸入密碼);
  • 若欲切換的身份與執行者身份相同,那也不需要輸入密碼。
    visudo 與 /etc/sudoers
    除了 root 之外的其他帳號,若想要使用 sudo 執行屬於 root 的權限指令,則 root 需要先使用 visudo 去修改 /etc/sudoers ,讓該帳號能夠使用全部或部分的 root 指令功能。為什麼要使用 visudo 呢?這是因為 /etc/sudoers 是有設定語法的,如果設定錯誤那會造成無法使用 sudo 指令的不良後果。因此才會使用 visudo 去修改, 並在結束離開修改畫面時,系統會去檢驗 /etc/sudoers 的語法就是了。
    單一使用者可進行 root 所有指令,與 sudoers 檔案語法:
    假如我們要讓 vbird1 這個帳號可以使用 root 的任何指令,那麼可以簡單的這樣進行修改即可:
    [root@www ~]# visudo
    ....(前面省略)....
    root    ALL=(ALL)       ALL  
    vbird1  ALL=(ALL)       ALL  
    ....(前面省略)....
    有趣吧!其實 visudo 只是利用 vi 將 /etc/sudoers 檔案呼叫出來進行修改而已,所以這個檔案就是 /etc/sudoerds 啦! 這個檔案的設定其實很簡單,如上面所示,如果你找到 76 行 (有 root 設定的那行) 左右,看到的資料就是:
    使用者帳號  登入者的來源主機名稱=(可切換的身份)  可下達的指令
    root                         ALL=(ALL)           ALL   
    那個 ALL 是特殊的關鍵字,代表任何身份、主機或指令的意思。所以,我想讓 vbird1 可以進行任何身份的任何指令, 就如同上表特殊字體寫的那樣,其實就是複製上述預設值那一行,再將 root 改成 vbird1 即可啊! 此時『vbird1 不論來自哪部主機登入,他可以變換身份成為任何人,且可以進行系統上面的任何指令』之意。 修改完請儲存後離開 vi,並以 vbird1 登入系統後,進行如下的測試看看:
    利用群組以及免密碼的功能處理 visudo
    root@www ~]# visudo  
    ....(前面省略)....
    %wheel     ALL=(ALL)    ALL
    # 在最左邊加上 % ,代表後面接的是一個『群組』之意!改完請儲存後離開
    [root@www ~]# usermod -a -G wheel pro1
    這樣理解群組了吧?如果你想要讓 pro3 也支援這個 sudo 的話,不需要重新使用 visudo ,只要利用
    usermod
    去修改 pro3 的群組支援,讓 wheel 也支援 pro3 的話,那他就能夠進行 sudo 囉! 簡單吧!不過,既然我們都信任這些 sudo 的用戶了,能否提供『不需要密碼即可使用 sudo 』呢? 就透過如下的方式:
    root@www ~]# visudo  
    ....(前面省略)....
    %wheel     ALL=(ALL)   NOPASSWD: ALL
    # 在最左邊加上 % ,代表後面接的是一個『群組』之意!改完請儲存後離開
  • 有限制的指令操作
    root@www ~]# visudo  
    myuser1        ALL=(root)  /usr/bin/passwd  @www ~]# visudo  
    myuser1        ALL=(root)  !/usr/bin/passwd, /usr/bin/paswd [A-Za-z]*, \
                        !/usr/bin/passwd root

    透過別名建置 visudo:
    root@www ~]# visudo
      
    User_Alias ADMPW = pro1, pro2, pro3, myuser1, myuser2
    Cmnd_Alias ADMPWCOM = !/usr/bin/passwd, /usr/bin/passwd [A-Za-z]*, \
                          !/usr/bin/passwd root
    ADMPW   ALL=(root)  ADMPWCOM




    本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u2/88611/showart_1904616.html
  • 您需要登录后才可以回帖 登录 | 注册

    本版积分规则 发表回复

      

    北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
    未成年举报专区
    中国互联网协会会员  联系我们:huangweiwei@itpub.net
    感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

    清除 Cookies - ChinaUnix - Archiver - WAP - TOP