在上一章节中,笔者讲解了如和切换使用者以及取得最高的root使用者权限,接下来要讲解的是本地端主机的使用者管理。
新增使用者可以使用useradd
指令做到,而修改使用者相关的资讯可以使用usermod
来做到,相关的使用者设定的资讯、预设密码设定、以及使用者预设的规则设定等,都存放在/etc/login.defs
的设定档案里,相关的指令执行方式如下:
[rockylinux@workstation ~]$ sudo useradd user1
[sudo] password for rockylinux:
[rockylinux@workstation ~]$ ls /home/
rockylinux user1
[rockylinux@workstation ~]$ cat /etc/passwd | grep user1
user1:x:1001:1001::/home/user1:/bin/bash
从上面的输出讯息可以知道,useradd
是只有root使用者权限才可以使用的,因此需要切换成root使用者或是使用sudo
指令来暂时取得root使用者权限才可以,当新增好user1
使用者之後,则对应的user1
家目录以及进入的shell都已经设定好了,可以在/etc/passwd
里面的档案看到,那预设会乱数一个密码给user1
,因此我们并不知道预设给user1密码是什麽,因此还需要使用passwd
指令来设定user1
之密码,当然因为不知道预设密码是什麽,因此需要使用root使用者来做设定,假设设定给user1
之新的密码为rocky
,则相关的执行指令如下:
[rockylinux@workstation ~]$ sudo passwd user1
[sudo] password for rockylinux:
Changing password for user user1.
New password:
BAD PASSWORD: The password is shorter than 8 characters
Retype new password:
passwd: all authentication tokens updated successfully.
[rockylinux@workstation ~]$
若新增好的使用者要做修改,则可以使用usermod
指令来做到,相关可以修改使用者资讯的参数如下:
-c
或是--comment
:修改对於这个使用者的注解,参数後面接一个字串。-g
或是--gid
:修改使用者对应的自己主要群组名称,参数後面接使用者名称与群组名称。-G
或是--groups
:新增使用者到指定的群组,参数後面接群组名称。-a
或是--append
:将使用者以附加的方式加入倒指定的群组中,参数後面接群组名称。-d
或是--home
:指定一个新的使用者家目录,参数後面接家目录之路径。-m
或是--move-home
:将原本使用者的家目录搬移到新的指定的家目录中,参数後面接家目录路径。-s
或是--shell
:指定使用者登入所使用的shell名称,参数後面接shell之执行路径。-L
或是--lock
:将指定的使用者锁定,被锁定的使用者将无法登入与使用。-U
或是--unlock
:将指定的使用者解除锁定。下面有几个范例来演示使用usermod
来设定与修改指定的使用者相关资讯:
[rockylinux@workstation ~]$ sudo usermod -c "user1 comment" user1
[sudo] password for rockylinux:
[rockylinux@workstation ~]$ sudo usermod --lock user1
[rockylinux@workstation ~]$
[rockylinux@workstation ~]$ su - user1
Password:
su: Authentication failure
[rockylinux@workstation ~]$ sudo usermod --unlock user1
[rockylinux@workstation ~]$ su - user1
Password:
[user1@workstation ~]$ logout
[rockylinux@workstation ~]$
最後,总结一下当一个使用者被root使用者新增之後,会做到那些事情:
/etc/passwd
档案中。/etc/group
档案中。/etc/shadow
档案中。/etc/gshadow
档案中。/home
目录底下。/var/spool/mail
之目录底下。当使用useradd
指令来新增使用者的时候,若没有指定user id,则会在新增使用者的时候,随意的新增一个,而也可以自己指定,要注意的是,在指定user id的时候,有范围性的,相关的id范围列表如下:
当使用者不需要使用,可以考虑将使用者删除,这时候就会使用userdel
来删除,要完整地将使用者删除,则需要加上-r
参数做搭配,相关的指令执行後的资讯如下:
[rockylinux@workstation ~]$ sudo userdel -r user1
[rockylinux@workstation ~]$
删除使用者之後,唯一需要注意的是,当新增使用者时候,不要指定之前给定过user id的使用者,因为有可能之後的新增使用者会继承之前user id对应的使用者,导致之前的档案与相关目录都可以存取,为了不必要麻烦,要确保先前的使用者所有相关的目录与档案都已经删除,相关的范例说明如下:
[rockylinux@workstation ~]$ sudo useradd user1
[rockylinux@workstation ~]$ touch user1.txt
[rockylinux@workstation ~]$ sudo chown user1:user1 user1.txt
[rockylinux@workstation ~]$
[rockylinux@workstation ~]$ ls -al user1.txt
-rw-rw-r--. 1 user1 user1 0 Sep 25 15:03 user1.txt
[rockylinux@workstation ~]$ id -u user1
1001
[rockylinux@workstation ~]$ sudo userdel -r user1
[rockylinux@workstation ~]$ ls -al user1.txt
-rw-rw-r--. 1 1001 1001 0 Sep 25 15:03 user1.txt
[rockylinux@workstation ~]$ sudo useradd user2
[rockylinux@workstation ~]$ id -u user2
1001
[rockylinux@workstation ~]$ ls -al user1.txt
-rw-rw-r--. 1 user2 user2 0 Sep 25 15:03 user1.txt
[rockylinux@workstation ~]$
从上面的执行指令的输出范例,就可以说明user id这件事情了,也证明系统是看user id,而不是给定的使用者名称。
在前面的章节中,谈论到/etc/passwd里面的格式与说明每个使用者相关的设定,这边在做更进一步有关於/etc/shadow
档案的介绍:
rockylinux:$6$PPjj5FZ1HiJa1Wsl$9SIRj2kUaBoHrwKUILn7id1EdlKGI0BR3NV4gMlfmCY5qTuR2Fp5wx2lS1J1JCeboIV1HC8MadwHmDpHEGYaA1:18893:0:99999:7:::
从上面的设定来看,这是有关於rockylinux使用者的密码设定,并存放在/etc/shadow
档案里面,详细的说明如下:
rockylinux
是使用者名称。$6$PPjj5FZ1HiJa1Wsl$9SIRj2kUaBoHr-wKUILn7id1EdlKGI0BR3NV4gMlfmCY5qTuR2Fp5wx2lS1J1JCeboIV1HC8MadwHmDpHEGYaA1
上述的杂凑密码格式如下:
由於本书不是与资讯安全有关的主题,因此笔者认为密码的格式知道就好。
可以使用下列的指令做到将某一个指定的使用者进行密码有效期的设定,相关的指令执行如下:
[rockylinux@workstation ~]$ sudo chage -E "2021-09-25" user02
[rockylinux@workstation ~]$ su - user2
Password:
Your account has expired; please contact your system administrator
su: User account has expired
[rockylinux@workstation ~]$
上述指令是利用-E
来指定什麽时候这个使用者过期,若要设定几天之後过期,可以使用date指令取得指定的天数之後过期,相关指令如下:
[rockylinux@workstation ~]$ date -d "+30 days" +%F
2021-10-25
从上述的指令可以知道,假设今天是2021-09-25,而设定要30天到期的日期是:2021-10-25,这样就可以取得指定的时间之到期的日期了。
若要强制使用者在一开始登入之後便要改密码,则可以使用下列的指令方式做到:
[rockylinux@workstation ~]$ sudo chage -d 0 user2
[rockylinux@workstation ~]$ su - user2
Password:
You are required to change your password immediately (administrator enforced)
Current password:
New password:
Retype new password:
[user2@workstation ~]$
有些使用者不能让其登入,并可以使用shell,可以使用下列指令做到:
[rockylinux@workstation ~]$ sudo usermod -s /usr/sbin/nologin user2
[rockylinux@workstation ~]$
[rockylinux@workstation ~]$ su - user2
Password:
This account is currently not available.
[rockylinux@workstation ~]$
除了使用/usr/sbin/nologin设定之外,另外也可以使用/usr/bin/false来做到,当这样设定之後,则使用者便不可以登入方式启动shell才进行存取了。
rocky
给peter与alice使用者。
>>: ESP32_DAY10 硬体届的Hello World!
今天的主题是NodeJS中的Events和EventEmitter。在JavaScript语法中并不...
介绍: k-平均演算法(英文:k-means clustering,以下简称为 k-means )是...
大家~ 今天文章会也会很短Q 昨天讲了静态网站可以部署到哪里之後,今天来讲 Next.js 的专案可...
import { useEffect, useState, useRef } from "...
接下来详细一点的说明 YOLOv4 的内部架构! 目标检测通常由以下几个部分组成: Input: 指...