Ⅰ CentOS系統管理用戶和用戶組的詳解
一:新建用戶和用戶組:useradd和groupadd
1,useradd的參數:
-u:指定UID標記號
-d:指定宿主目錄,預設為/home/用戶名
-e:指定賬號失效時間(下面usermod也有此選項)
-g:指定所屬的基本組(組名或GID)
-G:指定所屬的附加組(組名或GID)
-M:不為用戶建立並初始化宿主目錄、
-s:指定用戶的登錄shell(默認為/bin/bash,一般不用改,在建立非登錄用戶的時候可以指定
為/sbin/nologin)
註:這些參數都能分開用,不沖突的可以在建立用戶的時候連著用。
示例1:添加用戶stu01,指定UID為520,宿主目錄為/public/stu01,指定基本組為users(註:系統中本身就
存在users這個組GID為100),附加組為tech:
[root@localhost~]#useradd-u520-d/public/stu04-gusers-Gtechstu01
[root@localhost~]#idstu01
uid=520(stu01)gid=100(users)groups=100(users),200(tech)
示例2:添加用戶stu02,不為用戶建立宿主目錄:
[root@localhost~]#useradd-M-s/sbin/nologinstu02//創建一個非登錄用戶stu02
[root@localhost~]#cat/etc/passwd|grepstu02
stu02:x:1001:1001::/home/stu02:/sbin/nologin//-s參數指定bashshell
2,groupadd的參數:
gourpadd[-gGID]組名
-g參數指定了新建用戶組的GID
[root@localhost~]#groupadd-g600stu//添加一個組stu,指定其GID為600
[root@localhost~]#cat/etc/group|grepstu//查看stu組的信息
stu:x:600:
二:刪除用戶和用戶組
1,userdel
-格式:userdel[-r]用戶名
添加-r選項,宿主目錄/用戶郵件也一並刪除
示例:
[root@localhost~]#useradser1;useradser2//添加用戶user1和user2
[root@localhost~]#ll-d/home/user1//var/mail/user1/home/user2//var/mail/user2//查看user1、user2的宿主目錄和郵件文件是否存在
drwx------3user1user1409602-1809:53/home/user1/
drwx------3user2user2409602-1809:53/home/user2/
-rw-rw----1user1mail002-1809:53/var/mail/user1
-rw-rw----1user2mail002-1809:53/var/mail/user2
[root@localhost~]#userdeluser1;userdel-ruser2//加不加-r的區別
[root@localhost~]#ll-d/home/user1//var/mail/user1/home/user2//var/mail/user2
ls:/home/user2/:沒有那個文件或目錄//加-r之後刪除宿主目錄
ls:/var/mail/user2:沒有那個文件或目錄//加-r之後刪除郵件文件
drwx------310021002409602-1809:53/home/user1/
-rw-rw----11002mail002-1809:53/var/mail/user1
[root@localhost~]#
2,groupdel:刪除用戶組
-格式:groupdel組名
-刪除的目標組不能是用戶的基本組。
-在刪除用戶組的時候,如果該組為某個成員的私有組,則無法刪除,必須先刪除組裡面的成員,才能成功刪除該組。
[root@localhost~]#iser1//查看user1的基本組和附加組
uid=1002(user1)gid=1002(user1)groups=1002(user1),600(stu)
[root@localhost~]#grepstu/etc/group
stu:x:600:user1,user2
上面的操作可以看到,user1的基本組為user1,附加組為stu,那麼現在只能刪除stu,而不能直接刪除組user1,因為user1組是一個基本組,要想刪除user1,必須先刪除user1用戶,再刪除user1組,而stu組不是一個基本組,只是user1和user2的附加組,所以可以直接刪除。
[root@localhost~]#groupdeluser1//嘗試刪除user1用戶組,因為user1組為user1的基本組,所以需要先刪除user1用戶,才能刪除user1組。
groupdel:不能刪除用戶的主組。
Ⅱ CentOS新建用戶並使能密鑰登錄的方法
新建用戶為新用戶授權新用戶使能 SSH 密鑰登錄其它禁止 root 用戶使用 SSH 登錄使用非常規的 SSH 埠禁 pingCentOS 默認只有一個 root 用戶,但是 root 用戶的許可權過大,而且不利於多人協作,基於許可權管理和安全的原因,我們為系統新建一個用戶,並且使能其 SSH 登錄,同時禁止 root 用戶的登錄;
基於CentOS Linux release 7.6.1810 (Core)實踐;
新建用戶在 CentOS 中,adser和useradd沒有區別:
[root@centos_7_6_1810 ~]# ll /usr/sbin/ | grep user
lrwxrwxrwx 1 root root 7 Jun 24 10:14 adser -> useradd
-rwxr-xr-x. 1 root root 33104 Aug 3 2017 fuser
-rwxr-xr-x. 1 root root 15832 Apr 13 2018 lnewusers
-rwxr-xr-x. 1 root root 15752 Apr 13 2018 luseradd
-rwxr-xr-x. 1 root root 11576 Apr 13 2018 luserdel
-rwxr-xr-x. 1 root root 19896 Apr 13 2018 lusermod
-rwxr-xr-x 1 root root 76232 Mar 14 2019 newusers
-rwxr-xr-x 1 root root 33072 Mar 14 2019 runuser
-rwxr-xr-x. 1 root root 19720 Apr 11 2018 sasldblistusers2
-rwxr-x— 1 root root 118224 Mar 14 2019 useradd
-rwxr-x— 1 root root 80400 Mar 14 2019 userdel
-rwxr-x— 1 root root 113856 Mar 14 2019 usermod
-rwsr-xr-x. 1 root root 11376 Oct 31 2018 usernetctl
從上面的命令中可以看出:adser只不過是useradd命令的一個軟連接;
關於軟連接,你可以暫時把它理解成 Windows 系統中的快捷方式;
使用useradd命令創建新用戶:
[root@centos_7_6_1810 ~]# useradd luizyao
[root@centos_7_6_1810 ~]# ls /home/
luizyao
在大多數 Linux 的發行版本中,useradd命令並不會在/home/下創建對應的用戶目錄,如果想要創建,需要在命令中添加-m (--create-home)選項;但是,CentOS 會為我們自動創建這個用戶目錄;
如果我們想要以這個用戶名登錄系統,必須為其設置一個密碼:
[root@centos_7_6_1810 ~]# passwd luizyao
Changing password for user luizyao.
New password:
Retype new password:
passwd: all authentication tokens updated successfully.
然後,我們就可以用這個用戶登錄系統:
[luizyao@centos_7_6_1810 ~]$ whoami
luizyao為新用戶授權
通常情況下,新用戶在自己的用戶目錄(/home/luizyao/)下擁有完整的許可權,其它目錄需要他人授權;而我們最常用的就是 root 用戶的許可權,這時候sudo命令就可以幫助到我們:它允許信任的用戶以其他用戶的身份去執行命令,默認使用的是 root 用戶;
新用戶並不在信任名單中,所以我們無法借用 root 用戶身份去執行命令:
注意:此時,以新用戶的身份登錄系統的;
[luizyao@centos_7_6_1810 /]$ sudo whoami
[sudo] password for luizyao:
luizyao is not in the sudoers file. This incident will be reported.
在 CentOS 中,我們有兩種方法把新用戶添加到 Sudoers 列表中:
注意:此時,以 root 的身份登錄系統;
方法一:把新用戶添加到wheel用戶組中
基於 RedHat 分發版本的系統,如 CentOS 和 Fedora,用戶組wheel已經被授予 sudo 的許可權;所以,我們可以通過把新用戶添加到wheel用戶組中,來獲取 sudo 的許可權:
[root@centos_7_6_1810 ~]# groups luizyao
luizyao : luizyao
[root@centos_7_6_1810 ~]# usermod -aG wheel luizyao
[root@centos_7_6_1810 ~]# groups luizyao
luizyao : luizyao wheel
我們通過usermod命令把新用戶添加到wheel用戶組中,可以使用groups命令查看用戶所屬的用戶組;
這個時候,新用戶就可以藉助 root 的許可權執行命令了:
[luizyao@centos_7_6_1810 root]$ sudo whoami
[sudo] password for luizyao:
root
注意:
這種方法下,執行sudo命令需要輸入新用戶的密碼,因為這是wheel用戶組的默認配置,如下所示:
# /etc/sudoers
106 ## Allows people in group wheel to run all commands
107 %wheel ALL=(ALL) ALL
108
109 ## Same thing without a password
110 # %wheel ALL=(ALL) NOPASSWD: ALL
從用戶組中刪除用戶。可以使用如下命令:
[root@centos_7_6_1810 ~]# gpasswd -d luizyao wheel
Removing user luizyao from group wheel
[root@centos_7_6_1810 ~]# groups luizyao
luizyao : luizyao
方法二:把新用戶添加到sudoers列表中
在/etc/sudoers文件中,可以配置用戶和用戶組的 sudo 許可權,這種方式更加靈活一點;並且,有兩種方法為新用戶配置許可權:
1.你可以直接在/etc/sudoers文件中配置新用戶的許可權,但是要注意這個文件的默認許可權是只讀的,所以你要先添加寫入許可權,編輯完以後,再恢復為只讀;
請使用viso命令修改/etc/sudoers文件,因為它會幫你檢查語法錯誤;
2.你也可以在/etc/sudoers.d目錄下,為新用戶添加一個專門的配置文件(推薦):
bash [root@centos_7_6_1810 ~]# echo “luizyao ALL=(ALL) NOPASSWD:ALL” | tee /etc/sudoers.d/luizyao luizyao ALL=(ALL) NOPASSWD:ALL [root@centos_7_6_1810 ~]# ll /etc/sudoers.d/luizyao -rw-r–r– 1 root root 32 Sep 17 17:51 /etc/sudoers.d/luizyao
上述命令表示:luizyao 可以在任何主機上(第一個ALL)以任何用戶的身份(第二個ALL,默認為 root)執行任何命令(第三個ALL),並且不需要密碼:
[luizyao@centos_7_6_1810 root]$ sudo whoami
root
注意:文件的名字可以是任意的,只是通常我們會配置成用戶名;
新用戶使能 SSH 密鑰登錄此時,以新用戶的身份登錄系統;
創建密鑰對:
[luizyao@centos_7_6_1810 ~]$ ssh-keygen -t ecdsa # 橢圓曲線數字簽名演算法
Generating public/private ecdsa key pair.
Enter file in which to save the key (/home/luizyao/.ssh/id_ecdsa): # 選擇密鑰對存放的文件夾
Created directory ‘/home/luizyao/.ssh’.
Enter passphrase (empty for no passphrase): # 私鑰的密碼
Enter same passphrase again: # 確認私鑰密碼
Your identification has been saved in /home/luizyao/.ssh/id_ecdsa.
Your public key has been saved in /home/luizyao/.ssh/id_ecdsa.pub.
The key fingerprint is:
SHA256:FljQN9JFxB/C83Mv7N3rFNLCxXICRxaKzKDb+Tzsgwo luizyao@centos_7_6_1810
The key’s randomart image is:
+—[ECDSA 256]—+
| .+.. B==. |
| .o* = X o |
| .. .* o B = |
| o .. . X .|
| . oS = =.|
| .+ = o|
| E .= . +.|
| . …. o o|
| .. .. .o.|
+—-[SHA256]—–+
下載私鑰到本地:
基於 Mac OS 的實踐;
使用scp命令下載私鑰:
yaomengdeMacBook-Air:~ yaomeng$ scp luizyao@<ip 地址>:/home/luizyao/.ssh/id_ecdsa ~/.ssh/
此時,我們仍然需要密碼登錄:
yaomengdeMacBook-Air:~ yaomeng$ ssh luizyao@<ip 地址>
Enter passphrase for key “/Users/yaomeng/.ssh/id_ecdsa”: # 輸入私鑰密碼,登錄失敗
[email protected] password: # luizyao 的用戶密碼
Last login: Tue Sep 17 22:50:22 2019
SSH 免密登錄
重命名公鑰為 authorized_keys:
[luizyao@centos_7_6_1810 ~]$ mv ~/.ssh/id_ecdsa.pub ~/.ssh/authorized_keys
[luizyao@centos_7_6_1810 ~]$ ll ~/.ssh/
total 8
-rw-r–r– 1 luizyao luizyao 185 Sep 17 22:58 authorized_keys
-rw——- 1 luizyao luizyao 314 Sep 17 22:58 id_ecdsa
注意:
因為我之前並沒有 authorized_keys 文件,所以這里我直接重命名;如果之前已經有 authorized_keys 文件,可以使用以下命令,把公鑰添加到文件末尾:
cat >> ~/.ssh/authorized_keys < ~/.ssh/id_ecdsa.pub
注意 authorized_keys 文件、~/.ssh/ 目錄、或者 用戶的 home 目錄(/home/luizyao/)對其他用戶賦予了寫入的許可權,那麼sshd判斷此文件已經不安全,將不會使用這個文件,除非你已經設置 StrictModes 為 no;
你可以通過man sshd命令查看幫助文檔:
~/.ssh/authorized_keys
Lists the public keys (DSA, ECDSA, Ed25519, RSA) that can be used for logging in as this user. The format of this file is described above. The con‐
tent of the file is not highly sensitive, but the recommended permissions are read/write for the user, and not accessible by others.
If this file, the ~/.ssh directory, or the user’s home directory are writable by other users, then the file could be modified or replaced by unautho‐
rized users. In this case, sshd will not allow it to be used unless the StrictModes option has been set to 「no」.
此時,我們就可以使用 SSH 免密登錄:
yaomengdeMacBook-Air:~ yaomeng$ ssh [email protected]
Enter passphrase for key “/Users/yaomeng/.ssh/id_ecdsa”: # 私鑰密碼
Last login: Wed Sep 18 00:00:41 2019 from 49.65.108.161
去使能 SSH 密碼登錄
現在,我們仍然可以使用密碼登錄,這還是不安全的,現在我們就來禁止使用密碼登錄系統;
對於 CentOS 系統來說,只需要修改 SSH 配置文件/etc/ssh/sshd_config中的PasswordAuthentication為no;
再重啟 SSH 服務:
[luizyao@centos_7_6_1810 ~]$ sudo systemctl restart sshd
我們便禁止了 SSH 的密碼登錄,只能使用密鑰登錄;
其它為了進一步提升系統的安全性,我們還可以做一些事情:
禁止 root 用戶使用 SSH 登錄只需要修改 SSH 配置文件/etc/ssh/sshd_config中的PermitRootLogin為no,再重啟 SSH 服務;
使用非常規的 SSH 埠默認的 SSH 埠是22,我們可以修改為不常用的埠:修改 SSH 配置文件/etc/ssh/sshd_config中的Port值(例如:10178),再重啟 SSH 服務;
我們還需要修改防火牆中有關 sshd 的配置,CentOS 7 默認使用 firewalld 防火牆,我們對其做如下配置:
將firewalld 關於 ssh 的默認配置文件,復制到系統配置文件夾內:
[luizyao@centos_7_6_1810 ~]$ sudo cp /usr/lib/firewalld/services/ssh.xml /etc/firewalld/services/
修改配置文件中的埠配置:
<!– /etc/firewalld/services/ –>
<?xml version=”1.0″ encoding=”utf-8″?>
<service>
<short>SSH</short>
<description>Secure Shell (SSH) is a protocol for logging into and executing commands on remote machines. It provides secure encrypted communications. If you plan on accessing your machine remotely via SSH over a firewalled interface, enable this option. You need the openssh-server package installed for this option to be useful.</description>
<port protocol=”tcp” port=”10178″/>
</service>
重載 firewalld 配置:
[luizyao@centos_7_6_1810 ~]$ sudo firewall-cmd –reload
success禁 ping
為防火牆添加如下規則,並重載配置:
[luizyao@centos_7_6_1810 ~]$ sudo firewall-cmd –permanent –add-icmp-block=echo-reply
[luizyao@centos_7_6_1810 ~]$ sudo firewall-cmd –permanent –add-icmp-block=echo-request
[luizyao@centos_7_6_1810 ~]$ sudo firewall-cmd –reload總結
以上所述是小編給大家介紹的CentOS新建用戶並使能密鑰登錄的方法,大家如有疑問可以留言,或者聯系站長。感謝親們支持!!!
如果你覺得本文對你有幫助,歡迎轉載,煩請註明出處,謝謝!