日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

su和sudo這兩個命令是linux運維必須要會的,通常在生產環境中都是使用普通帳號來登錄,再使用su或sudo來執行一些管理命令。

su命令

su:run a shell with substitute user and group ids

-,-l,--login 切換后使用指定用戶的的shell。

[root@ns2 ~]# su - user4
[user4@ns2 ~]$ // 這里的shell環境是user4的
[user4@ns2 ~]$ exit
logout
[root@ns2 ~]# su -l user4
[user4@ns2 ~]$
[user4@ns2 ~]$ exit
logout
[root@ns2 ~]#

-c,--command=COMMAND 可以在不切換當前shell的情況下,用指定的用戶來執行一個命令;

[root@ns2 ~]# su user4 -c 'whoami'
user4
[root@ns2 ~]#

如果在su的時候沒有加”-“或“-l”或“--login”那么默認的會使用當前用戶的shell來執行

sudo命令

sudo的配置文件是:/etc/sudoers,該文件可以定義哪個用戶可以在哪個機器上以哪個用戶的身份來執行哪些命令;

在配置sudo時必須使用visudo來編輯配置文件,因為使用visudo可以檢查修改后的文件的語法是否正確;

who where=(run_as) /path/to/command1,…

可以將上面的配置行分成四部分:part1 part2 part3 part4

  • part1:表示哪個用戶
  • part2:表示運行該sudo命令的機器,也就是用戶執行命令的機器;可以使用ALL來匹配所有;
  • part3:表示該用戶要切換到的目標用戶;
  • part4:表示要執行的命令;這里的命令必須使用絕對路徑,如果只指定了一個目錄的話,那么該用戶就可以執行該目錄下的所有的文件;

例如:

xfzhou 192.168.1.0/24=(root) /usr/sbin/useradd,/usr/sbin/usermod
xfzhou ALL=(root) /usr/sbin/setup

那么如果用戶的數量過多的時候是不是要為每個用戶來創建一個條目呢,很顯示這樣做是不科學的。所以sudo就引入了別名的概念,其實和組也差不多;

sudoers中定義了四種alias:

  • User_Alias
  • Runas_Alias
  • Host_Alias
  • Cmnd_Alias

alias定義的語法:

Alias_Type NAME = item1,item2,…

要注意的是,這個Alias的名稱一定要大寫;

User_Alias ADMIN = user1,%user2

user1是一個用戶,user2是一個組,所以user2的前面要加上%

Host_Alias PERMIT = www.xfzhou.com,192.168.10.40,192.168.20.0/24

可以使用主機名,IP地址,網段(網段的掩碼可以寫成255.255.255.0,也可以寫成/24)

Cmnd_Alias CREATEUSER = /usr/sbin/useradd,/user/sbin/usermod

命令必須使用絕對路徑。如果只指定了一個目錄,那么用戶就可以執行該目錄下的所有的文件;上面的“=”右邊的都可以使用“!”來取反。表示除了xxx以外;

例子:請允許user1,user2,user3在192.168.20.44和192.168.10.0/24網段的機器上使用sudo切換到root用戶來執行useradd和setup命令;

#test for sudo
User_Alias TEST_USERS = user1,user2,user3
Host_Alias PERMIT_HOST = 192.168.10.0/24,192.168.20.44
Cmnd_Alias CREATEUSER = /usr/sbin/useradd,/usr/sbin/setup
TEST_USERS PERMIT_HOST=(root) CREATEUSER

然后就可以使用user1,user2,user3這三個用戶去測試了;

普通用戶查看自己可以使用的sudo命令:

[user1@ns2 ~]$ sudo -l
Matching Defaults entries for user1 on this host:
requiretty, !visiblepw, env_reset, env_keep="COLORS DISPLAY HOSTNAME HISTSIZE INPUTRC KDEDIR LS_COLORS MAIL PS1 PS2
QTDIR USERNAME LANG LC_ADDRESS LC_CTYPE LC_COLLATE LC_IDENTIFICATION LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME
LC_NUMERIC LC_PAPER LC_TELEPHONE LC_TIME LC_ALL LANGUAGE LINGUAS _XKB_CHARSET XAUTHORITY"
Runas and Command-specific defaults for user1:
User user1 may run the following commands on this host:
(root) /usr/sbin/useradd, /usr/sbin/setup
[user1@ns2 ~]$

注意:當用戶第一次執行sudo命令的時候是需要用戶輸入自己的密碼的。當第一次輸入正確后,這個密碼就會被緩存5分鐘,在5分鐘內用戶再次使用sudo來切換身份執行命令的時候就不需要再次輸入自己的密碼。

這樣呢有些時候會有一個安全隱患,所以為了去掉這個5分鐘,可以在使用sudo命令的時候加上“-k”參數,這樣用戶在每次執行sudo命令的時候都會讓用戶輸入自己的密碼。

sudo無密碼執行命令

如果想讓某個用戶在執行sudo的時候不需要輸入自己的密碼,那么可以在命令的前面添加NOPASSWD。/etc/sudoers的內容如下:

#test for sudo
User_Alias TEST_USERS = user1,user2,user3
Host_Alias PERMIT_HOST = 192.168.10.0/24,192.168.20.44
Cmnd_Alias CREATEUSER = /usr/sbin/useradd,/usr/sbin/setup
TEST_USERS PERMIT_HOST=(root) NOPASSWD:CREATEUSER

這樣的話,user1,user2,user3這三個用戶在執行指定的命令的時候就不需要輸入自己的密碼了。

如果其中的命令有的需要輸入密碼,有的不需要輸入密碼的話,那就把PASSWD:寫在那些命令的前面。或是把NOPASSWD:寫在最后一個命令中;

user1 192.168.10.44=(root) NOPASSWD:/usr/sbin/useradd,PASSWD:/usr/sbin/usermod

例子:讓用戶user4使用passwd來管理用戶的密碼,但是不能給root用戶設置密碼:

user4 ALL=(root) /usr/bin/passwd [A-Za-z]*,!/usr/bin/passwd root

注意:如果最后不加上!/usr/bin/passwd root的話,那么會有很大的漏洞,user4可以修改root用戶的密碼;當添加上后,user4再次執行sudo passwd root的時候就會提示:

[user4@ns2 ~]$ sudo passwd root
[sudo] password for user4:
Sorry, user user4 is not allowed to execute '/usr/bin/passwd root' as root on ns2.xfzhou.com.
[user4@ns2 ~]$

分享到:
標簽:Linux
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定