新拿到一台服務器后我們一般都是要新建用戶組,用戶,並為其分配權限。
====================================================
賦予用戶組sudo權限:
首先,看一下如何為用戶組分配sudo權限:
打開配置文件:
sudo vim /etc/sudoers
可以看到:
這個是最原始的配置文件。
假設系統里面有用戶組名為 wisd , 我們需要為該用戶組下面的所有用戶都賦予 sudo 權限,需要添加下面代碼:
%wisd ALL=(ALL:ALL) ALL
如下圖:
保存退出, 這樣變把 wisd 用戶組下面的所有用戶都賦予了sudo權限。
===============================================================
下一步就是介紹新建用戶及用戶組(本文的介紹為倒敘,實際操作中是需要先建用戶組和用戶的)
首先看下 系統的用戶配置文件:
sudo vim /etc/passwd
由圖中可以看到系統用戶 devil 用戶id為1000,所屬用戶組為1000, home目錄為 /home/devil ,shell的執行為 /bin/bash
sshd 用戶id 為122 用戶組為65534
==============================================================
新建用戶組:
新建用戶組 xxxxx
sudo addgroup xxxxx
為用戶組 xxxxx 新建用戶 xxx
sudo useradd -d /home/xxx -s /bin/bash -m xxx
-d 指定用戶的home目錄為 /home/xxx
-s 指定用戶的shell
-m 表示home目錄即 /home/xxx 不存在則創建
xxx則是我們要創建的用戶名。
可以看到 /home目錄下面已經為用戶xxx創建home目錄。
可以 /home/xxx目錄下需要的文件已經全部創建,如 .bashrc .profile 等。
為用戶 xxx 設置密碼:
sudo passwd xxx
將新建的用戶 xxx 添加到用戶組 xxxxx 中:
sudo usermod -a -G xxxxx xxx
用戶xxx 用戶組 xxxxx
參考文獻:
http://www.ruanyifeng.com/blog/2014/03/server_setup.html
以上操作也可以在創建新用戶時直接將其加入到已有的用戶組中, -g 為設置其主組 該方法可以再創建用戶時不創建同名的用戶組,
-G 為設置新建用戶的附屬組, -a -G 設置用戶的不唯一的附屬組
sudo useradd -d /home/xxx2 -s /bin/bash -m xxx2 -g xxxxx
在創建新用戶xxx2時指定其主組為xxxxx , 不創建和用戶同名的xxx2用戶組。
============================================================================
新發現
采用以下方法,先建立用戶組,再創建用戶,再將用戶加入到用戶組:
sudo addgroup xxxxx
sudo useradd -d /home/xxx -s /bin/bash -m xxx
sudo usermod -a -G xxxxx xxx
則會出現以下問題:
我們可以發現,其實我們先創建了用戶組 xxxxx, id為1001, 然后我們創建用戶xxx時並沒有指定其所屬的用戶組於是自動創建了它的同名用戶組xxx, id為1002 。
我們可以查看用戶的情況:
可以發現,用戶xxx所屬的主組為1002(xxx), 同時所屬的附屬組為1001(xxxxx) 。
我們可以將用戶xxx的主用戶組設置為xxxxx, 這時用戶xxx的附屬組為xxx組,於是我們可以刪掉用戶組xxx :
sudo usermod xxx -g xxxxx
sudo groupdel xxx
再次查看:
=======================================================================
以下內容來源: https://www.cnblogs.com/654wangzai321/p/8021573.html
usermod -G groupname username (這種會把用戶從其他組中去掉,只屬於該組)
如:usermod -G git git (git只屬於git組)
usermod -a -G groupname username (把用戶添加到這個組,之前所屬組不影響)
如:usermod -a -G www git (git屬於之前git組,也屬於www組)
=============================================引用結束
usermod -G 是指定用戶的附屬組是哪個, 如果 只有 -G 那么就是唯一指定用戶附屬組,該種方式用戶只具備唯一附屬組。
usermod -a -G 是只將用戶組加入到附屬組, 而不是將附屬組設置為唯一,該種方式可以使用戶具有多個附屬組。
所以像上面提到的問題,我們還可以這么解決, 就是在將用戶加入到用戶組的時候這么操作:
sudo usermod -G xxxxx xxx 而不是 sudo usermod -a -G xxxxx xxx ,
這樣的話直接將 xxxxx 設置為 xxx 的主用戶組和附屬用戶組。
從上圖可以看到, usermod -a -G 的確可以將xxx用戶的附屬組添加mysql組。
從上圖可以看到 usemod -G 將用戶xxx的附屬用戶組唯一的設置為mysql 。
小技巧:
如上圖:
如果想將用戶的附屬組清空,可以先采用 usemod -G 將用戶的附屬組設置為唯一, 而所指定的唯一附屬組和主組是同一個的話,那么自動就將用戶的附屬組清空了。
=========================================================================