Linux系统是一个多用户多任务的分时操作系统,任何一个要使用系统资源的用户,都必须首先向系统管理员申请一个账号,然后以这个账号的身份进入系统。
也就是说任何需要使用操作系统的用户,都需要一个系统账号,账号分为:管理员(root)账号与普通用户账号(非root)。
在Linux中,操作系统根据UID来判断用!根据UID来判断用户! 而不是用户名!只要id为0就是管理员,哪怕有多个id为0 的账号
注意UID一定是不能冲突的,管理员创建的普通用户UID从1000开始(即便前面有闲置的号码)
用户的配置文件:
/etc/passwd:用户及其属性信息(名称、 UID、主组ID等)
/etc/shadow:用户密码及其相关属性
关于passwd文件
使用cat passwd查看这个文件,下面是我的系统中的前几行
1root:x:0:0:root:/root:/bin/bash 2daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin 3bin:x:2:2:bin:/bin:/usr/sbin/nologin 4sys:x:3:3:sys:/dev:/usr/sbin/nologin 5sync:x:4:65534:sync:/bin:/bin/sync 6games:x:5:60:games:/usr/games:/usr/sbin/nologin
关于shadow——影子文件
1root@atomy-virtual-machine:/etc# ll /etc/passwd 2-rw-r--r-- 1 root root 2738 5月 6 12:02 /etc/passwd 3root@atomy-virtual-machine:/etc# ll /etc/shadow 4-rw-r----- 1 root shadow 1540 5月 10 18:51 /etc/shadow
可以看到passwd的权限是644,而shadow的权限是640,它的权限更小,在shadow中保存的是真正加密的密码串。而passwd中只有密码标志x。
查看一下这个文件
1root:$6$H4Mc4JCXAg9t7Udy$h7GPmOhOH..0db/S/c/5LwxbUCbejGQohT3W9RLoti7IcVrPrRDPPqGyIZHyTQ9X1ytLPX5Tehy63QP5VPrJn1:18757:0:99999:7::: 2daemon:*:18667:0:99999:7::: 3bin:*:18667:0:99999:7::: 4sys:*:18667:0:99999:7::: 5sync:*:18667:0:99999:7::: 6games:*:18667:0:99999:7:::
!!
或者*
代表没有密码,不能登录补充:linux下时间戳换算
时间戳转日期
1root@atomy-virtual-machine:/# date -d "1970-01-01 16066 days" 22013年 12月 27日 星期五 00:00:00 CST
日期转时间戳
1root@atomy-virtual-machine:/# echo $(($(date --date="2021/05/01" +%s)/86400+1))
语法:
useradd [选项] 用户名
sudo useradd -m 用户名
选项:
-u UID 自定义UID (默认系统递增)
-o 配合-u 选项,不检查UID的唯一性(不建议)
-g GID:指明用户所属基本组,可为组名,也可以GID
-c comment 指定一段注释性描述。
-d 目录 指定用户主目录,如果此目录不存在,则同时使用-m选项,可以创建主目录。
-g 用户组 指定用户所属的用户组。
-G 用户组,用户组 指定用户所属的附加组。
-s Shell文件 指定用户的登录Shell。
-u 用户号 指定用户的用户号,如果同时有-o选项,则可以重复使用其他用户的标识号。
补充:
创建账户的默认值设定位于: /etc/default/useradd
文件中,该文件记录了创建用户账户时的默认信息,可通过修改该文件来修改创建账户时的信息。增加用户账号就是在/etc/passwd文件中为新用户增加一条记录,同时系统会自动更新其他系统文件如/etc/shadow, /etc/group等。通常情况创建账户,账户ID会按照最大的值递增,但是递增的值必须在最大范围内。
语法:
passwd [选项] 用户名
sudo passwd [选项] 用户名
选项:
可以根据实际情况修改用户的有关属性,如用户号、主目录、用户组、登录Shell等。
语法:usermod [选项] 用户名
选项:
修改用户说明:
1usermod -c "test user" testuser
把testuser加入到root组
1usermod -G root testuser
锁定用户
1usermod -L testuser
解锁用户
1usermod -U testuser
chage [选项] 用户名
选项:
语法:
userdel 用户名
sudo userdel用户名
选项:
我们使用如下操作:
1atomy@atomy-virtual-machine:~/桌面$ cd /home 2atomy@atomy-virtual-machine:/home$ ls 3atomy wtest
home中是存在着我们新建的用户wtest的,此时删除它:
1atomy@atomy-virtual-machine:/home$ sudo userdel wtest
切换用户的时候,我们可以看见wtest是消失了的,但是当我们在此查看home文件夹下,发现还是存在着wtest文件夹的
1atomy@atomy-virtual-machine:/home$ cd /home 2atomy@atomy-virtual-machine:/home$ ls 3atomy wtest
也就是说,我们在删除掉一个用户之后,需要将home目录下该用户的文件夹一并删除
1atomy@atomy-virtual-machine:/home$ sudo rm -rf /home/wtest 2atomy@atomy-virtual-machine:/home$ ls /home 3atomy
注:此处我是在atomy用户下操作的,而不是使用root权限操作。root下不用加sudo
不过上面繁琐的步骤只需要在userdel时加上-r选项就行了。
语法:su [选项] 用户名
选项:
-
代表连带用户的环境变量一起切换-
,连环境变量一起切换su -root -c "useradd user3"
在Linux中,每个用户必须有一个主组(也叫初始组)。当创建账号时,系统会自动创建一个同名组作为该账户的主组。用户必须属于一个且只有一个主组。用户可以属于零个或者多个附加组。Linux下可以创建多个用户,可以用组来管理用户。
比如:
男生组boys下的用户有qiang、gang、hui
女生组girls下的用户有fang、yuan、ting
这样管理或者查找起来就方便和明确多了。
关于/etc/group
1root:x:0: 2daemon:x:1: 3bin:x:2: 4sys:x:3: 5adm:x:4:syslog,atomy
语法:groupadd [选项] 组名
选项:
语法:groupmod [选项] 组名
选项:
把组名boys修改为men
1groupmod -n men boys
语法:groupdel [选项] 组名
此命令从系统中删除组。
要想删除组,要确保该组不是主组,才能把这个组删掉。
倘若该群组中仍包括某些用户,则必须先删除这些用户后,方能删除群组。
语法:gpasswd [选项] 组名
选项: