แทนที่ต้องล็อกอินด้วย root หรือใช้คำสั่ง su – root แล้วต้องระบุรหัสผ่านของ root เพื่อที่แก้ไขไฟล์หรือรันคำสั่งที่จำเป็นต้องใช้สิทธิ์ root ในการดำเนินการ
แนะนำให้ใช้ sudo ในการกำหนดสิทธิ์ผู้ใช้งานบางคน ให้มีสิทธิ์เทียบเท่า root ดำเนินการแทนได้ โดยไม่จำเป็นต้องระบุรหัสผ่านของ root แต่อย่างใด
ที่จริงคุณสมบัติ sudo นี้มีใน CentOS มานานแล้ว แต่เพิ่งจะมีออปชันให้เลือกตอนติดตั้ง CentOS 7 ในขั้นตอนสร้างผู้ใช้งาน (CREATE USER)
ตัวอย่างหน้าจอ CREATE USER ตอนติดตั้ง CentOS 7
ในหน้าจอ CREATE USER หากต้องการให้ User name ที่สร้างนี้ สามารถใช้ sudo เพื่อมีสิทธิ์เทียบเท่า root ได้ ก็ให้คลิกเลือก
[x] Make this user administrator
ถ้าลองคลิกปุ่ม Advanced ด้านล่าง จะมีหน้าจอแสดงรายละเอียดว่าผู้ใช้หรือ user ที่สร้างนี้ จะถูกกำหนดให้เป็นสมาชิกกลุ่ม wheel ซึ่งเป็นชื่อกลุ่มที่สมาชิกสามารถใช้ sudo เพื่อรันคำสั่งเทียบเท่า root ได้
หลังติดตั้ง CentOS 7 เสร็จเรียบร้อย ล็อกอินด้วย user ที่สร้างไว้ ในตัวอย่างนี้คือ alice
ทดลองรันคำสั่ง id เพื่อดูข้อมูลผู้ใช้งาน
[alice@cent7 ~]$ id
uid=1000(alice) gid=1000(alice) groups=1000(alice),10(wheel) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
วิธีใช้ sudo
วิธีการใช้ sudo คือพิมพ์ sudo แล้วตามด้วยคำสั่งที่จะรัน
เช่นรัน sudo ตามด้วยคำสั่ง id
[alice@cent7 ~]$ sudo id
[sudo] password for alice:
uid=0(root) gid=0(root) groups=0(root) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
การใช้ sudo ครั้งแรก หรือไม่ได้ใช้มาเกินระยะเวลาหนึ่ง (ดีฟอลต์ 5 นาที) ต้องใส่รหัสผ่าน (password) แต่รหัสผ่านในที่นี้คือรหัสผ่านของผู้ใช้งานเอง ไม่ใช่ของ root
ถ้าใส่รหัสผ่านถูกต้อง sudo จะรันคำสั่งที่ระบุด้วยสิทธิ์ root
ผลลัพธ์จากคำสั่ง id สังเกตค่า uid จะเป็น 0 หรือสิทธิ์เทียบเท่า root นั่นเอง
หากไม่ได้พิมพ์ sudo นำหน้าคำสั่ง ก็จะเป็นการรันคำสั่งด้วยสิทธิ์ผู้ใช้งานตามปกติ
ตัวอย่างการรันคำสั่ง ที่ไม่ได้พิมพ์ sudo นำหน้า
[alice@cent7 ~]$ cat /etc/sudoers cat: /etc/sudoers: Permission denied
ตัวอย่างการรันคำสั่ง ที่มี sudo นำหน้า
[alice@cent7 ~]$ sudo cat /etc/sudoers ## Sudoers allows particular users to run various commands as ## the root user, without needing the root password. ## ## Examples are provided at the bottom of the file for collections ## of related commands, which can then be delegated out to particular ## users or groups. ## ## This file must be edited with the 'visudo' command. ...
หากพิมพ์คำสั่ง sudo ซ้ำอีกครั้งภายในเวลาไม่เกิน 5 นาที ไม่ต้องระบุรหัสผ่านอีกครั้ง ระบบจะจำไว้
หรือถ้ายังคุ้นเคยกับการ su เพื่อเป็น root ก็สามารถทำได้โดยใช้ sudo su – (ไม่แนะนำ)
[alice@cent7 ~]$ sudo su - Last login: Fri Jun 19 09:59:43 ICT 2015 from 192.168.5.1 on pts/0 [root@cent7 ~]#
การเพิ่มสิทธิ์ sudo ให้กับผู้ใช้อื่นๆ
ผู้ใช้อื่นๆ ที่ไม่มีสิทธิ์ ถ้ารัน sudo จะไม่สามารถรันได้
[bob@cent7 ~]$ sudo id bob is not in the sudoers file. This incident will be reported.
หากต้องการให้ผู้ใช้ (user) อื่นๆ ให้สามารถใช้ sudo เพื่อมีสิทธิ์ root ได้ด้วย ก็สามารถทำได้โดยกำหนดให้ผู้ใช้ที่ต้องการ ให้เป็นสมาชิกของกลุ่ม wheel
โดยอาจแก้ไขไฟล์ /etc/group โดยตรง หรือใช้คำสั่ง gpasswd ระบุออปชัน -a ตามด้วยชื่อผู้ใช้ที่ต้องการ ตามด้วยชื่อกลุ่ม wheel
แน่นอนการแก้ไขไฟล์ /etc/group หรือรันคำสั่ง gpasswd ก็ต้องใช้สิทธิ์ root ในการดำเนินการ
ตัวอย่างการใช้คำสั่ง gpasswd เพื่อให้ผู้ใช้ bob สามารถใช้คำสั่ง sudo มีสิทธิ์เป็น root ได้
[alice@cent7 ~]$ id bob uid=1001(bob) gid=100(users) groups=100(users)
[alice@cent7 ~]$ sudo gpasswd -a bob wheel [sudo] password for alice: Adding user bob to group wheel
[alice@cent7 ~]$ id bob
uid=1001(bob) gid=100(users) groups=100(users),10(wheel)
ทดลองล็อกอินด้วยผู้ใช้ แล้วรัน sudo
[bob@cent7 ~]$ sudo id
[sudo] password for bob:
uid=0(root) gid=0(root) groups=0(root) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
สรุปเพิ่มเติมเกี่ยวกับการใช้ sudo
ประโยชน์ของการใช้ sudo คือ ไม่จำเป็นต้องแชร์รหัสผ่าน root ในหมู่ผู้ดูแลระบบ คือให้แต่ละคนล็อกอินด้วยชื่อผู้ใช้ของแต่ละคนเอง แล้วเมื่อไรก็ตาม จำเป็นต้องรันคำสั่ง root ค่อยใช้ sudo
ข้อดีอีกอย่างหนึ่งของการใช้ sudo คือจะมีการเก็บประวัติการใช้คำสั่งอย่างละเอียด ว่าผู้ใช้คนใด ใช้ sudo เพื่อรันคำสั่งอะไรบ้าง เมื่อวันเวลาเท่าไร
ตัวอย่างประวัติการใช้ sudo ซึ่งถูกเก็บไว้ในไฟล์ /var/log/secure
[bob@cent7 ~]$ sudo tail /var/log/secure Jun 21 11:39:33 cent7 sudo: alice : TTY=pts/0 ; PWD=/home/alice ; USER=root ; COMMAND=/bin/gpasswd -a bob wheel Jun 21 11:43:29 cent7 sudo: bob : TTY=pts/0 ; PWD=/home/bob ; USER=root ; COMMAND=/bin/id Jun 21 11:47:10 cent7 sudo: bob : TTY=pts/0 ; PWD=/home/bob ; USER=root ; COMMAND=/bin/tail /var/log/secure
ที่จริงแล้ว sudo ยังสามารถคอนฟิกกำหนดรายละเอียดได้มาก เช่นกำหนดรายชื่อเฉพาะบางคำสั่งที่สามารถใช้ ให้กับผู้ใช้รายคนได้ หากสนใจแนะนำให้อ่าน man sudoers หรือใช้คำสั่ง visudo แล้วอ่านคำแนะนำในไฟล์ ซึ่งจะมีคำอธิบายพร้อมตัวอย่าง
$ man sudoers
$ sudo visudo
หมายเหตุ ในเว็บไซต์ SpaLinux.com จะใช้คำว่าล็อกอินด้วย root และแสดงพรอมต์ # เพื่อแยกแยะคำสั่งที่จำเป็นต้องใช้ root ในการรัน อย่างชัดเจน