1. 程式人生 > >案例讓一個命令在開機的時候自動執行的方法

案例讓一個命令在開機的時候自動執行的方法

案例讓一個命令在開機的時候自動執行的方法   [[email protected] ~]# vim /etc/init.d/oldboy [[email protected] ~]# cat /etc/init.d/oldboy # chkconfig: 2345 99 99 echo aaa(表示指令碼的檔案內容,oldboy表示開機啟動的指令碼名稱) [[email protected] ~]# ll /etc/init.d/oldboy -rw-r--r-- 1 root root 34 Nov 13 22:15 /etc/init.d/oldboy [[email protected]
~]# chmod u+x /etc/init.d/oldboy [[email protected] ~]# ll /etc/init.d/oldboy -rwxr--r-- 1 root root 34 Nov 13 22:15 /etc/init.d/oldboy [[email protected] ~]# chkconfig --add oldboy [[email protected] ~]# chkconfig |grep oldboy oldboy           0:off 1:off 2:on 3:on 4:on 5:on 6:off 註解: [
[email protected]
~]# # 案例2 讓一個命令在開機的時候自動執行的方法 [[email protected] ~]# (方法1)把這個命令或指令碼放到/etc/rc.local 下面 -bash: syntax error near unexpected token `把這個命令或指令碼放到/etc/rc.local' [[email protected] ~]# #(方法1)把這個命令或指令碼放到/etc/rc.local 下面 [[email protected] ~]# #(方法2)該命令通過chkconfig 命令來管理 [
[email protected]
~]# # 方法1 就是 vim /etc/init.d/oldboy(oldboy 檔名)裡面寫入要執行 的指令碼內容儲存退出、 [[email protected] ~]# # ll /etc/init.d/oldboy 發現oldboy預設的許可權是644 沒有執行許可權、所以 chmod +x /etc/init.d/oldboy ^C [[email protected] ~]# # 方法1 就是 vim /etc/init.d/oldboy(oldboy 檔名)裡面寫入要執行 .指令碼內容儲存退出、指令碼的內容格式的的指令碼內容儲存退出、指令碼的內容格式的開頭必須是 [[email protected] ~]# # 方法1 就是 vim /etc/init.d/oldboy(oldboy 檔名)裡面寫入要執行 的指令碼內容儲存退出、指令碼的內容格式的開頭必須是 (# chkconfig: 2345 99 99 )這是chkconfig 管理指令碼的條件。2345 表示在開機啟動的時候級別,執行級別一般是2345,第一個99表示開機 啟動的順序,第二99表示關機的時候的順序,我們關注的是開機的,一般自己寫的指令碼放在99這個文職就可以,用 chkconfig --add oldboy [[email protected] ~]# # 方法1 就是 vim /etc/init.d/oldboy(oldboy 檔名)裡面寫入要執行 的指令碼內容儲存退出、指令碼的內容格式的開頭必須是 (# chkconfig: 2345 99 99 )這是chkconfig 管理指令碼的條件。2345 表示在開機啟動的時候級別,執行級別一般是2345,第一個99表示開機 啟動的順序,第二99表示關機的時候的順序,我們關注的是開機的,一般自己寫的指令碼放在99這個文職就可以,用 chkconfig --add oldboy  加入控制  [[email protected] ~]# #3 chkconfig |grep  oldby 檢查 2345 上是開機啟動的   案例2:一次建立50萬檔案的方法,必須要用|xargs 否則無法建立   [[email protected] ~]# #echo {1..500000}|xargs touch [[email protected] ~]# #一次建立50萬檔案的方法,必須要用|xargs 否則無法建立 [[email protected] ~]# df -ih Filesystem     Inodes IUsed IFree IUse% Mounted on /dev/sda3        580K  330K  250K   57% / tmpfs            123K     1  123K    1% /dev/shm /dev/sda1         50K    38   50K    1% /boot  [[email protected] ~]# dev/sda3        580K  330K  250K   57% / [[email protected] ~]# #檢視節點快用完了, [[email protected] ~]# find / -type d -size +1M|xargs ls -lhd dr-xr-x---. 2 root root 6.4M Nov 13 21:06 /root [[email protected] ~]# ls /root |wc -l 282437 [[email protected] ~]# \rm -rf /root [[email protected] ~]# ls -l total 0 [[email protected] ~]# #ls |xargs rm -rf 這是刪除大量檔案的方法。 [[email protected] ~]# #ls -l 檢視發現成功了   案例3 建立一個 使用者UID是888 不可登陸的 不建立家目錄的使用者 test [[email protected] oldboy]# useradd -u 888 -s /sbin/nologin -M test [[email protected] oldboy]# grep test /etc/passwd test:x:888:888::/home/test:/sbin/nologin [[email protected] oldboy]# ls /home/test ls: cannot access /home/test: No such file or directory(沒有建立家目錄) -u 制定UID -s 不可登陸的 -M 不建立家目錄 Test  表示使用者 [[email protected] oldboy]# id test uid=888(test) gid=888(test) groups=888(test) [[email protected] oldboy]# vim /etc/passwd #test:x:888:888::/home/test:/sbin/nologin (#)號表示刪除了這個使用者 [[email protected] oldboy]# id test id: test: No such user (顯示使用者不存在了,相當於使用者刪掉了但是資料還是在的) userdel test 預設不會刪除使用者test的家目錄 -r 引數連同使用者的test家目錄一起刪掉了,userdel -r 把使用者的資訊刪除的乾乾淨淨 最安全的方法就是在/etc/passwd 下面的使用者前面加上一個(#號註釋掉,如果有人要用,去掉#號即可這樣操作比較安全) [[email protected] ~]# useradd -u 888 -s /sbin/nologin -M alex888 [[email protected] ~]# grep alex888 /etc/passwd alex888:x:888:888::/home/alex888:/sbin/nologin  [[email protected] ~]# chkconfig postfix off [[email protected] ~]# usermod -c "xu ni yong hu " alex888  [[email protected] ~]# grep alex888 /etc/passwd alex888:x:888:888:xu ni yong hu :/home/alex888:/sbin/nologin   [[email protected] ~]# id alex888 uid=888(alex888) gid=888(alex888) groups=888(alex888) [email protected] ~]# usermod -g oldboy alex888 [[email protected] ~]# id alex888 uid=888(alex888) gid=889(oldboy) groups=889(oldboy) 改變它的所屬oldboy 組的成員 [[email protected] ~]# usermod -G root,oldboy,test alex888 [[email protected] ~]# id alex888 uid=888(alex888) gid=889(oldboy) groups=889(oldboy),0(root),890(test) 屬於多個使用者組 usermod 主要是用來修改使用者的屬性資訊的 [[email protected] ~]# echo '123456'|passwd --stdin oldboy Changing password for user oldboy. passwd: all authentication tokens updated successfully. 非互動式的改變用密碼 –stdin 表示一次修改密碼 --stdin 這個命令只能root才可以用 [[email protected] ~]# history -c 清空歷史記錄 案例:給檔案做一個指紋 [[email protected] ~]# touch oldboy [[email protected] ~]# echo oldboy >oldboy [[email protected] ~]# cat oldboy oldboy [[email protected] ~]# md5sum oldboy 3fe396c01f03425cb5e2da8186eb090d  oldboy [[email protected] ~]# cat oldboy Oldboy 只有這個檔案在發生變化的時候才會起作用 [[email protected] ~]# md5sum oldboy >police.log(放到一個指定的檔案中) [[email protected] ~]# cat police.log 3fe396c01f03425cb5e2da8186eb090d  oldboy [[email protected] ~]# md5sum -c police.log (指紋的對比,如果沒有發生變化就是OK的) oldboy: OK 往檔案oldboy裡面新增的內容測試 [[email protected] ~]# echo oldboy.txt >>oldboy [[email protected] ~]# cat oldboy oldboy oldboy.txt [[email protected] ~]# md5sum -c police.log oldboy: FAILED md5sum: WARNING: 1 of 1 computed checksum did NOT match oldboy: FAILED 表示檔案發生了變化     案例: 批量新增10個使用者stu01,stu0……stu10,斌設定8位隨機密碼;   [[email protected] ~]# useradd -u 999 -s /sbin/nologin -M mysql [[email protected] ~]# id mysql uid=999(mysql) gid=999(mysql) groups=999(mysql) [[email protected] ~]# #新增一個使用者MySQL,並指定UID為999 GID為999 在Linux裡面只要指定UID後,GID跟UID是一樣的,不用加小寫的-g Useradd  -g 是指定使用者的名字,指定組ID用groupadd -g test 新增到test組裡面   案例:模擬一個大檔案,用top來檢視CPU的負載程序情況 [[email protected] tmp]# dd if=/dev/zero  of=/tmp/100 bs=1M count=10009(大檔案來模擬) [[email protected] ~]# top(top來觀察程序的負載資訊) top - 22:21:21 up  4:11,  2 users,  load average: 1.03, 0.34, 0.13 Tasks:  92 total,   1 running,  90 sleeping,   1 stopped,   0 zombie Cpu(s):  0.0%us,  0.3%sy,  0.0%ni, 99.7%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st Mem:   1004112k total,   938448k used,    65664k free,    11824k buffers Swap:   786428k total,        0k used,   786428k free,   814744k cached      PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND                                                        7 root      20   0     0    0    0 S  0.3  0.0   0:19.67 events/0                                                     5693 root      20   0 15036 1176  908 R  0.3  0.1   0:03.35 top Top程序預設是按照CPU來排序的,按大寫的M是用記憶體來排序,按大寫的P是按CPU來排序的。 [[email protected] ~]# free -h 專門來檢視記憶體資訊              total       used       free     shared    buffers     cached Mem:          980M       907M        73M       232K        11M       787M -/+ buffers/cache:       108M       872M Swap:         767M         0B       767M  還有一種就是top版的增強版本: htop 是指增強版的top iotop 主要檢視每個程序使用的io 磁碟使用情況 iftop 顯示系統的網路流量 預設這三個命令是沒有安裝的 [[email protected] ~]# last 顯示系統的登入資訊,以及該使用者登入了多久 root     pts/1        10.0.0.1         Wed Nov 14 22:13   still logged in (表示在登陸中)   root     pts/0        10.0.0.1         Wed Nov 14 21:14   still logged in   root     pts/0        10.0.0.1         Wed Nov 14 14:08 - 17:11  (03:02)    reboot   system boot  2.6.32-696.el6.x Wed Nov 14 14:08 - 22:43  (08:34)    root     pts/0        10.0.0.1         Wed Nov 14 14:02 - down   (00:06)    root     tty1                          Mon Nov 12 00:09 - down  (2+13:58)   root     pts/7        10.0.0.1         Sat Nov 10 18:28 - 19:53  (01:25)    root     pts/6        10.0.0.1         Sat Nov 10 18:28 - 19:53  (01:25)      root     pts/0        10.0.0.1         Wed Nov 14 14:08 - 17:11  (03:02)      17:11   表示登入時間 (03:02)   登陸了多久   [[email protected] ~]# lastlog (顯示系統最近一次所有的登入情況,這裡的登入時指遠端登的使用者不是切換使用者) Username         Port     From             Latest root             pts/1    10.0.0.1         Wed Nov 14 22:13:25 +0800 2018 bin                                        **Never logged in** daemon                                     **Never logged in** adm                                        **Never logged in** lp                                         **Never logged in** sync                                       **Never logged in** 案例:su 與su – 的區別 [[email protected] ~]# su oldboy [[email protected] root]$ pwd /root(su 不加- 切換後家目錄還是/root,ls 檢視檔案的時候還是沒有許可權) [[email protected] root]$ whoami Oldboy   [[email protected] ~]# su – oldboy (加上-後,家目錄就會切換到普通使用者的家目錄下面,普通使用者有許可權) [[email protected] ~]$ pwd /home/oldboy [[email protected] ~]$ whoami oldboy   sudo 這個命令是專門為普通使用者用的,root 使用者是用不著的。 [[email protected] ~]# visudo (:92行找到root在下root行的下面寫上普通使用者的使用者名稱和執行的命令) ## The COMMANDS section may have other options added to it. ## ## Allow root to run any commands anywhere root    ALL=(ALL)       ALL oldboy  ALL=(ALL)      /bin/ls, /bin/touch (給oldboy授權) [[email protected] ~]# visudo -c (一定要進行語法的檢查是否正確) /etc/sudoers: parsed OK   [[email protected] ~]$ ls /root ls: cannot open directory /root: Permission denied [[email protected] ~]$ sudo ls /root/ anaconda-ks.cfg  install.log.syslog  police.log  yangjuncheng.test [[email protected] ~]$ sudo touch /root/alex.txt [[email protected] ~]$ sudo ls /root/alex.txt /root/alex.txt (檔案已經建立)   visudo == vim /etc/sudoers 案例:授權/bin/下面普通使用者root的許可權 [[email protected] ~]# visudo oldboy  ALL=(ALL)       /bin/*(授權/bin下的所有許可權) [[email protected] ~]$ ls /bin (檢視發現有su – root )   [[email protected] ~]$ su - root Password: (沒有密碼) [[email protected] ~]$ sudo su – root (這條命令表示具有了root的許可權,這樣普通使用者就直接成root了,非常危險,不能給普通使用者這麼大的許可權) [sudo] password for oldboy: [[email protected] ~]# ls /root   案例:授權/bin/下面普通使用者root的許可權,並且排除su 許可權 [[email protected] ~]# visudo oldboy  ALL=(ALL)       /bin/*  !/bin/su (表示排除su ) [[email protected] ~]$ sudo su - Sorry, user oldboy is not allowed to execute '/bin/su -' as root on oldboy02.(沒有許可權) [[email protected] ~]$ 因為/bin/目錄下面有好多的執行命令這樣授權整個目錄很危險,最好的辦法就是普通使用者 需要什麼就給什麼許可權,這樣比較安全。精確到某個命令的某個引數。 [[email protected] ~]$ sudo -k(清除快取) [[email protected] ~]$ sudo -l [sudo] password for案例讓一個命令在開機的時候自動執行的方法   [[email protected] ~]# vim /etc/init.d/oldboy [[email protected] ~]# cat /etc/init.d/oldboy # chkconfig: 2345 99 99 echo aaa(表示指令碼的檔案內容,oldboy表示開機啟動的指令碼名稱) [[email protected] ~]# ll /etc/init.d/oldboy -rw-r--r-- 1 root root 34 Nov 13 22:15 /etc/init.d/oldboy [[email protected] ~]# chmod u+x /etc/init.d/oldboy [[email protected] ~]# ll /etc/init.d/oldboy -rwxr--r-- 1 root root 34 Nov 13 22:15 /etc/init.d/oldboy [[email protected] ~]# chkconfig --add oldboy [[email protected] ~]# chkconfig |grep oldboy oldboy           0:off 1:off 2:on 3:on 4:on 5:on 6:off 註解: [[email protected] ~]# # 案例2 讓一個命令在開機的時候自動執行的方法 [[email protected] ~]# (方法1)把這個命令或指令碼放到/etc/rc.local 下面 -bash: syntax error near unexpected token `把這個命令或指令碼放到/etc/rc.local' [[email protected] ~]# #(方法1)把這個命令或指令碼放到/etc/rc.local 下面 [[email protected] ~]# #(方法2)該命令通過chkconfig 命令來管理 [[email protected] ~]# # 方法1 就是 vim /etc/init.d/oldboy(oldboy 檔名)裡面寫入要執行 的指令碼內容儲存退出、 [[email protected] ~]# # ll /etc/init.d/oldboy 發現oldboy預設的許可權是644 沒有執行許可權、所以 chmod +x /etc/init.d/oldboy ^C [[email protected] ~]# # 方法1 就是 vim /etc/init.d/oldboy(oldboy 檔名)裡面寫入要執行 .指令碼內容儲存退出、指令碼的內容格式的的指令碼內容儲存退出、指令碼的內容格式的開頭必須是 [[email protected] ~]# # 方法1 就是 vim /etc/init.d/oldboy(oldboy 檔名)裡面寫入要執行 的指令碼內容儲存退出、指令碼的內容格式的開頭必須是 (# chkconfig: 2345 99 99 )這是chkconfig 管理指令碼的條件。2345 表示在開機啟動的時候級別,執行級別一般是2345,第一個99表示開機 啟動的順序,第二99表示關機的時候的順序,我們關注的是開機的,一般自己寫的指令碼放在99這個文職就可以,用 chkconfig --add oldboy [[email protected] ~]# # 方法1 就是 vim /etc/init.d/oldboy(oldboy 檔名)裡面寫入要執行 的指令碼內容儲存退出、指令碼的內容格式的開頭必須是 (# chkconfig: 2345 99 99 )這是chkconfig 管理指令碼的條件。2345 表示在開機啟動的時候級別,執行級別一般是2345,第一個99表示開機 啟動的順序,第二99表示關機的時候的順序,我們關注的是開機的,一般自己寫的指令碼放在99這個文職就可以,用 chkconfig --add oldboy  加入控制  [[email protected] ~]# #3 chkconfig |grep  oldby 檢查 2345 上是開機啟動的   案例2:一次建立50萬檔案的方法,必須要用|xargs 否則無法建立   [[email protected] ~]# #echo {1..500000}|xargs touch [[email protected] ~]# #一次建立50萬檔案的方法,必須要用|xargs 否則無法建立 [[email protected] ~]# df -ih Filesystem     Inodes IUsed IFree IUse% Mounted on /dev/sda3        580K  330K  250K   57% / tmpfs            123K     1  123K    1% /dev/shm /dev/sda1         50K    38   50K    1% /boot  [[email protected] ~]# dev/sda3        580K  330K  250K   57% / [[email protected] ~]# #檢視節點快用完了, [[email protected] ~]# find / -type d -size +1M|xargs ls -lhd dr-xr-x---. 2 root root 6.4M Nov 13 21:06 /root [[email protected] ~]# ls /root |wc -l 282437 [[email protected] ~]# \rm -rf /root [[email protected] ~]# ls -l total 0 [[email protected] ~]# #ls |xargs rm -rf 這是刪除大量檔案的方法。 [[email protected] ~]# #ls -l 檢視發現成功了   案例3 建立一個 使用者UID是888 不可登陸的 不建立家目錄的使用者 test [[email protected] oldboy]# useradd -u 888 -s /sbin/nologin -M test [[email protected] oldboy]# grep test /etc/passwd test:x:888:888::/home/test:/sbin/nologin [[email protected] oldboy]# ls /home/test ls: cannot access /home/test: No such file or directory(沒有建立家目錄) -u 制定UID -s 不可登陸的 -M 不建立家目錄 Test  表示使用者 [[email protected] oldboy]# id test uid=888(test) gid=888(test) groups=888(test) [[email protected] oldboy]# vim /etc/passwd #test:x:888:888::/home/test:/sbin/nologin (#)號表示刪除了這個使用者 [[email protected] oldboy]# id test id: test: No such user (顯示使用者不存在了,相當於使用者刪掉了但是資料還是在的) userdel test 預設不會刪除使用者test的家目錄 -r 引數連同使用者的test家目錄一起刪掉了,userdel -r 把使用者的資訊刪除的乾乾淨淨 最安全的方法就是在/etc/passwd 下面的使用者前面加上一個(#號註釋掉,如果有人要用,去掉#號即可這樣操作比較安全) [[email protected] ~]# useradd -u 888 -s /sbin/nologin -M alex888 [[email protected] ~]# grep alex888 /etc/passwd alex888:x:888:888::/home/alex888:/sbin/nologin  [[email protected] ~]# chkconfig postfix off [[email protected] ~]# usermod -c "xu ni yong hu " alex888  [[email protected] ~]# grep alex888 /etc/passwd alex888:x:888:888:xu ni yong hu :/home/alex888:/sbin/nologin   [[email protected] ~]# id alex888 uid=888(alex888) gid=888(alex888) groups=888(alex888) [email protected] ~]# usermod -g oldboy alex888 [[email protected] ~]# id alex888 uid=888(alex888) gid=889(oldboy) groups=889(oldboy) 改變它的所屬oldboy 組的成員 [[email protected] ~]# usermod -G root,oldboy,test alex888 [[email protected] ~]# id alex888 uid=888(alex888) gid=889(oldboy) groups=889(oldboy),0(root),890(test) 屬於多個使用者組 usermod 主要是用來修改使用者的屬性資訊的 [[email protected] ~]# echo '123456'|passwd --stdin oldboy Changing password for user oldboy. passwd: all authentication tokens updated successfully. 非互動式的改變用密碼 –stdin 表示一次修改密碼 --stdin 這個命令只能root才可以用 [[email protected] ~]# history -c 清空歷史記錄 案例:給檔案做一個指紋 [[email protected] ~]# touch oldboy [[email protected] ~]# echo oldboy >oldboy [[email protected] ~]# cat oldboy oldboy [[email protected] ~]# md5sum oldboy 3fe396c01f03425cb5e2da8186eb090d  oldboy [[email protected] ~]# cat oldboy Oldboy 只有這個檔案在發生變化的時候才會起作用 [[email protected] ~]# md5sum oldboy >police.log(放到一個指定的檔案中) [[email protected] ~]# cat police.log 3fe396c01f03425cb5e2da8186eb090d  oldboy [[email protected] ~]# md5sum -c police.log (指紋的對比,如果沒有發生變化就是OK的) oldboy: OK 往檔案oldboy裡面新增的內容測試 [[email protected] ~]# echo oldboy.txt >>oldboy [[email protected] ~]# cat oldboy oldboy oldboy.txt [[email protected] ~]# md5sum -c police.log oldboy: FAILED md5sum: WARNING: 1 of 1 computed checksum did NOT match oldboy: FAILED 表示檔案發生了變化     案例: 批量新增10個使用者stu01,stu0……stu10,斌設定8位隨機密碼;   [[email protected] ~]# useradd -u 999 -s /sbin/nologin -M mysql [[email protected] ~]# id mysql uid=999(mysql) gid=999(mysql) groups=999(mysql) [[email protected] ~]# #新增一個使用者MySQL,並指定UID為999 GID為999 在Linux裡面只要指定UID後,GID跟UID是一樣的,不用加小寫的-g Useradd  -g 是指定使用者的名字,指定組ID用groupadd -g test 新增到test組裡面   案例:模擬一個大檔案,用top來檢視CPU的負載程序情況 [[email protected] tmp]# dd if=/dev/zero  of=/tmp/100 bs=1M count=10009(大檔案來模擬) [[email protected] ~]# top(top來觀察程序的負載資訊) top - 22:21:21 up  4:11,  2 users,  load average: 1.03, 0.34, 0.13 Tasks:  92 total,   1 running,  90 sleeping,   1 stopped,   0 zombie Cpu(s):  0.0%us,  0.3%sy,  0.0%ni, 99.7%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st Mem:   1004112k total,   938448k used,    65664k free,    11824k buffers Swap:   786428k total,        0k used,   786428k free,   814744k cached      PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND                                                        7 root      20   0     0    0    0 S  0.3  0.0   0:19.67 events/0                                                     5693 root      20   0 15036 1176  908 R  0.3  0.1   0:03.35 top Top程序預設是按照CPU來排序的,按大寫的M是用記憶體來排序,按大寫的P是按CPU來排序的。 [[email protected] ~]# free -h 專門來檢視記憶體資訊              total       used       free     shared    buffers     cached Mem:          980M       907M        73M       232K        11M       787M -/+ buffers/cache:       108M       872M Swap:         767M         0B       767M  還有一種就是top版的增強版本: htop 是指增強版的top iotop 主要檢視每個程序使用的io 磁碟使用情況 iftop 顯示系統的網路流量 預設這三個命令是沒有安裝的 [[email protected] ~]# last 顯示系統的登入資訊,以及該使用者登入了多久 root     pts/1        10.0.0.1         Wed Nov 14 22:13   still logged in (表示在登陸中)   root     pts/0        10.0.0.1         Wed Nov 14 21:14   still logged in   root     pts/0        10.0.0.1         Wed Nov 14 14:08 - 17:11  (03:02)    reboot   system boot  2.6.32-696.el6.x Wed Nov 14 14:08 - 22:43  (08:34)    root     pts/0        10.0.0.1         Wed Nov 14 14:02 - down   (00:06)    root     tty1                          Mon Nov 12 00:09 - down  (2+13:58)   root     pts/7        10.0.0.1         Sat Nov 10 18:28 - 19:53  (01:25)    root     pts/6        10.0.0.1         Sat Nov 10 18:28 - 19:53  (01:25)      root     pts/0        10.0.0.1         Wed Nov 14 14:08 - 17:11  (03:02)      17:11   表示登入時間 (03:02)   登陸了多久   [[email protected] ~]# lastlog (顯示系統最近一次所有的登入情況,這裡的登入時指遠端登的使用者不是切換使用者) Username         Port     From             Latest root             pts/1    10.0.0.1         Wed Nov 14 22:13:25 +0800 2018 bin                                        **Never logged in** daemon                                     **Never logged in** adm                                        **Never logged in** lp                                         **Never logged in** sync                                       **Never logged in** 案例:su 與su – 的區別 [[email protected] ~]# su oldboy [[email protected] root]$ pwd /root(su 不加- 切換後家目錄還是/root,ls 檢視檔案的時候還是沒有許可權) [[email protected] root]$ whoami Oldboy   [[email protected] ~]# su – oldboy (加上-後,家目錄就會切換到普通使用者的家目錄下面,普通使用者有許可權) [[email protected] ~]$ pwd /home/oldboy [[email protected] ~]$ whoami oldboy   sudo 這個命令是專門為普通使用者用的,root 使用者是用不著的。 [[email protected] ~]# visudo (:92行找到root在下root行的下面寫上普通使用者的使用者名稱和執行的命令) ## The COMMANDS section may have other options added to it. ## ## Allow root to run any commands anywhere root    ALL=(ALL)       ALL oldboy  ALL=(ALL)      /bin/ls, /bin/touch (給oldboy授權) [[email protected] ~]# visudo -c (一定要進行語法的檢查是否正確) /etc/sudoers: parsed OK   [[email protected] ~]$ ls /root ls: cannot open directory /root: Permission denied [[email protected] ~]$ sudo ls /root/ anaconda-ks.cfg  install.log.syslog  police.log  yangjuncheng.test [[email protected] ~]$ sudo touch /root/alex.txt [[email protected] ~]$ sudo ls /root/alex.txt /root/alex.txt (檔案已經建立)   visudo == vim /etc/sudoers 案例:授權/bin/下面普通使用者root的許可權 [[email protected] ~]# visudo oldboy  ALL=(ALL)       /bin/*(授權/bin下的所有許可權) [[email protected] ~]$ ls /bin (檢視發現有su – root )   [[email protected] ~]$ su - root Password: (沒有密碼) [[email protected] ~]$ sudo su – root (這條命令表示具有了root的許可權,這樣普通使用者就直接成root了,非常危險,不能給普通使用者這麼大的許可權) [sudo] password for oldboy: [[email protected] ~]# ls /root   案例:授權/bin/下面普通使用者root的許可權,並且排除su 許可權 [[email protected] ~]# visudo oldboy  ALL=(ALL)       /bin/*  !/bin/su (表示排除su ) [[email protected] ~]$ sudo su - Sorry, user oldboy is not allowed to execute '/bin/su -' as root on oldboy02.(沒有許可權) [[email protected] ~]$ 因為/bin/目錄下面有好多的執行命令這樣授權整個目錄很危險,最好的辦法就是普通使用者 需要什麼就給什麼許可權,這樣比較安全。精確到某個命令的某個引數。 [[email protected] ~]$ sudo -k(清除快取) [[email protected] ~]$ sudo -l [sudo] password for oldboy: 如果說自己用,或是給上面領導使用的時候就不需要密碼 [[email protected] ~]# visudo oldboy  ALL=(ALL)      NOPASSWD: ALL [[email protected] ~]$ sudo su - (直接進入root使用者下面,不需要輸入密碼) [[email protected] ~]#   國內使用的兩個堡壘機是 :gateone  jumpserver: 如果說自己用,或是給上面領導使用的時候就不需要密碼 [[email protected] ~]# visudo oldboy  ALL=(ALL)      NOPASSWD: ALL [[email protected] ~]$ sudo su - (直接進入root使用者下面,不需要輸入密碼) [[email protected] ~]#   國內使用的兩個堡壘機是 :gateone  jumpserver