Linux登陆需要用户名、密码。/etc/passwd 文件保存用户名。登录Linux时,Linux 先查找 /etc/passwd 文件中是否有这个用户名,没有则跳出,有则读取用户名的user ID 、 group ID 、用户名对应的根目录路径以及所使用的 shell ,最后在 /etc/shadow 中核对该 UID 对应的 PWD 是否正确,正确则登录到该用户的 shell。
用户账号
组账号(用户权限的集合)
UID和GID(标签,标识号)
UID(User IDentity,用户标识号)
GID(group IDentify,组标识号)
保存用户名称、宿主目录、登录Shell等基本信息
账号记录用冒号分隔
用户账号:用户名
密码占位符:代表有密码,不会起到密码的个数和内容的属性
用户账号 ID :UID
uid序号:
序号 | 用户 |
---|---|
0 | root |
1-999 | 程序用户 |
1000-60000 | 普通用户 |
99 | nobody匿名用户 |
组账号ID:GID,GID基本上指私有组,名称与UID基本上是一致
用户说明:描述性信息
宿主目录:家目录
登录shell:是否可以登录系统,/bin/bash /sbin/bash 是可以 /sbin/nologin 无法人为登录
用户名:密码被加密:从1970.1.1日诞生日起过了14374天:0代表密码最短使用期限,代表随时可以修改密码:99999代表最长密码使用期限:7代表会提前7天提醒你修改密码:还有失效时间,过了99999天之后,多少天后账号会失效
bin:*,!,!!代表无法登陆
-u 指定UID
-d 指定家目录
-e 指定失效时间,可以使用年-月-日格式
-g 指定基本组(若指定基本组,则必须先存在基本组)
-G 指定附加组 (组必须要已存在)
-M 指定不创建家目录
-s 指定是否允许从shell 登录
-d 清除密码
-l 指锁定账号密码
-u 指解锁账号密码
-S 查看用户当前状态是否被锁定
vim /etc/passwd vim编辑查看passwd
[root@localhost ~]# vim /etc/passwd #进入passwd查看用户信息,也可以用tail查看
[root@localhost ~]# useradd -d /opt/lisi -s /sbin/nologin lisi
#创建lisi用户,根目录在/opt/lisi,-s /sbin/nologin 不可以登录
[root@localhost ~]# tail -2 /etc/passwd # 查看/etc/passwd账号文件的后两行
gsy:x:1000:1000:gsy:/home/gsy:/bin/bash
lisi:x:1001:1001::/opt/lisi:/sbin/nologin #刚才新创建的用户
[root@localhost ~]# passwd lisi # 设置李四密码
更改用户 lisi 的密码 。 # linux密码设置时看不到
新的 密码:
无效的密码: 密码是一个回文
重新输入新的 密码:
passwd:所有的身份验证令牌已经成功更新。
[root@localhost ~]# su - lisi # 加载lisi
This account is currently not available. # 这个账户目前不可用
用vim在passwd中修改参数,将lisi行末尾的nologin改为bash,lisi就可以登录
lisi:x:1001:1001::/opt/lisi:/sbin/nologin #之前李四账号信息末尾为nologin
lisi:x:1001:1001::/opt/lisi:/bin/bash
#修改为/bin/bash,然后保存(lisi不是管理员,不可以用sbin)
:wq!保存vim编辑
[root@localhost ~]# vim /etc/passwd
[root@localhost ~]# su - lisi #加载lisi
上一次登录:五 11月 1 11:32:10 CST 2019pts/0 上 #登陆成功
试一试passwd -l 命令
[root@localhost ~]# passwd -S lisi #查看lisi账号密码状态 passwd -S
lisi PS 2019-11-01 0 99999 7 -1 (密码已设置,使用 SHA512 算法。) #显示账号密码状态
[root@localhost ~]# passwd -l lisi #锁定lisi密码 passwd -l
锁定用户 lisi 的密码 。 #系统反馈密码已锁定
passwd: 操作成功
[root@localhost ~]# passwd -S lisi # 再次查看lisi账号密码状态
lisi LK 2019-11-01 0 99999 7 -1 (密码已被锁定。) #密码已被锁定
[root@localhost ~]# su - lisi #加载lisi账号
上一次登录:五 11月 1 11:36:07 CST 2019pts/0 上
su: failed to execute /sbin/bash: 没有那个文件或目录
#这里把passwd中的lisi末尾信息改为/bin/bash即可
[root@localhost ~]# vim /etc/passwd
[root@localhost ~]# su - lisi #再次加载lisi
上一次登录:五 11月 1 11:42:55 CST 2019pts/0 上
#从最高权限root登录次级用户不需要密码,登录成功
[lisi@localhost ~]$ pwd #查看当前~的绝对路径
/opt/lisi #~也就是用户的根目录
[lisi@localhost ~]$ exit # 注销退出
登出
[root@localhost ~]# su - gsy #加载gsy用户
上一次登录:三 10月 23 13:44:51 CST 2019:0 上
[gsy@localhost ~]$ su - lisi # 同级别用户去加载lisi
密码: 输入密码
su: 鉴定故障 无法登陆
小结:
passwd -l 锁定用户密码,导致的结果是本地图形界面登录端不能登陆,但字符界面可以登录,(仅限于高权限用户切换到李四用户)
/sbin/nologin 用户无法直接登陆和被切换登录
system用户权限最大,但是无法人为登录
passwd 后面不指定用户名,就是修改当前密码,即默认用户名为当前用户
-d:修改用户的家目录
-e:修改用户的账户失效时间
-s:指定用户的登录shell
-l 更改用户账号的登录名称
-L 锁定用户账户
-U 解锁用户账户
[gsy@localhost ~]$ exit 把之前的gsy用户登出,回到root #exit
登出
[root@localhost ~]# passwd -S lisi 查看lisi当前密码状态 #passwd -S
lisi LK 2019-11-01 0 99999 7 -1 (密码已被锁定。)
#系统反馈密码已被锁定,之前是用passwd -l去锁定
[root@localhost ~]# usermod -U lisi #使用usermod -U命令去解锁lisi密码
[root@localhost ~]# passwd -S lisi #查看lisi当前密码状态
lisi PS 2019-11-01 0 99999 7 -1 (密码已设置,使用 SHA512 算法。)
#此时反馈密码是可以正常使用的
[root@localhost ~]# usermod -L lisi #用usermod -L 去锁定lisi密码
[root@localhost ~]# passwd -S lisi #此时再用passwd -S 去查看lisi状态
lisi LK 2019-11-01 0 99999 7 -1 (密码已被锁定。) #系统反馈lisi密码已被锁定
[root@localhost ~]# passwd -u lisi #用passwd -u 命令去解锁lisi的密码
解锁用户 lisi 的密码。 #反馈成功解锁
passwd: 操作成功
小结:usermod的密码锁定解锁权限和passwd的密码锁定解锁权限一样高,可以相互使用
root@localhost ~]# useradd wangwu #创建wangwu用户 useradd
[root@localhost ~]# passwd wangwu #创建wangwu密码 passwd
更改用户 wangwu 的密码 。
新的 密码:
无效的密码: 密码是一个回文 #强制执行,回车键
重新输入新的 密码:
passwd:所有的身份验证令牌已经成功更新。
[root@localhost ~]# ls /home
#查看/home目录下 创建用户时没有指定根目录,就会自动设置到/home下
gsy wangwu #显示/home 中有两个目录,即两个普通用户的根目录
[root@localhost ~]# id wangwu #查看wangwu的id,即UID和GID
uid=1002(wangwu) gid=1002(wangwu) 组=1002(wangwu)
[root@localhost ~]# id lisi #查看lisi的UID和GID
uid=1001(lisi) gid=1001(lisi) 组=1001(lisi)
[root@localhost ~]# useradd wangwu
useradd:用户“wangwu”已存在
[root@localhost ~]# userdel wangwu #删除wangwu用户 userdel
[root@localhost ~]# ls /home #查看被删除wangwu的根目录
gsy wangwu # 依旧存在
[root@localhost ~]# userdel -r gsy #用附加选项-r
[root@localhost ~]# ls /home
wangwu #被删除的gsy的根目录已被删除
[root@localhost ~]#
以隐藏文件存在
~/.bash_profile 指定环境变量,在每次登陆shell时,就会加载其中的参数
~/.bashrc 在用户登录时就会被加载
~/.bash_logout 指注销时会起作用
[root@localhost ~]# id wangwu #这是wangwu用户已被删除,id查看其信息
id: wangwu: no such user #显示没有这个用户
[root@localhost ~]# ls -a /home/wangwu #但是他的根目录还在,ls -a 查看/home/wangwu
. .. .bash_logout .bash_profile .bashrc .mozilla #显示隐藏文件
#没啥用了,可以直接rm -rf 删掉wangwu目录
[root@localhost ~]# tail -3 /etc/group #查看/etc/group 文件末尾三行
stapdev:x:158:
tcpdump:x:72:
lisi:x:1001: #其中有创建的用户lisi的基本组
[root@localhost ~]# id lisi #查看lisi的id
uid=1001(lisi) gid=1001(lisi) 组=1001(lisi)
[root@localhost ~]#
-g 指定组GID 人可用的组也是从1000开始排序
-M 多用户添加
–stdin 标准性输入,免交互
[root@localhost ~]# tail -5 /etc/passwd #查看/etc/passwd末尾五行
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
avahi:x:70:70:Avahi mDNS/DNS-SD Stack:/var/run/avahi-daemon:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
tcpdump:x:72:72::/:/sbin/nologin
lisi:x:1001:1001::/opt/lisi:/bin/bash #现在和只有一个普通用户lisi
[root@localhost ~]# useradd zhangsan #另外创建zhangsan用户
[root@localhost ~]# tail -5 /etc/passwd #查看/etc/passwd是否更新
avahi:x:70:70:Avahi mDNS/DNS-SD Stack:/var/run/avahi-daemon:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
tcpdump:x:72:72::/:/sbin/nologin
lisi:x:1001:1001::/opt/lisi:/bin/bash #lisi账号信息
zhangsan:x:1002:1002::/home/zhangsan:/bin/bash #zhangsan账号信息
[root@localhost ~]# echo "111111" |passwd --stdin zhangsan #免交互设置张三账号
密码为111111
更改用户 zhangsan 的密码 。
passwd:所有的身份验证令牌已经成功更新。
[root@localhost ~]# useradd wangwu #再创建一个wangwu账号
正在创建信箱文件: 文件已存在
[root@localhost ~]# tail -5 /etc/passwd #查看/etc/passwd是否更新
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
tcpdump:x:72:72::/:/sbin/nologin
lisi:x:1001:1001::/opt/lisi:/bin/bash #lisi账号信息
zhangsan:x:1002:1002::/home/zhangsan:/bin/bash #zhangsan账号信息
wangwu:x:1003:1003::/home/wangwu:/bin/bash #zhangwu账号信息
[root@localhost ~]# groupadd caiwu #创建组,名字叫caiwu groupadd
[root@localhost ~]# tail -5 /etc/group #查看/etc/group 组文件
tcpdump:x:72:
lisi:x:1001: #lisi的基本组
zhangsan:x:1002: #zhangsan的基本组
wangwu:x:1003: #wangwu的基本组
caiwu:x:1004: #新建的公有组
[root@localhost ~]# gpasswd -a zhangsan caiwu #把一个zhangsan用户添加到caiwu组中
正在将用户“zhangsan”加入到“caiwu”组中
[root@localhost ~]# id zhangsan #id 查看zhangsanUID,GID信息
uid=1002(zhangsan) gid=1002(zhangsan) 组=1002(zhangsan),1004(caiwu)
#这里显示组内多了一个1004(caiwu)
[root@localhost ~]# tail -5 /etc/group #相应的,也去查看一下/etc/group组文件的状态
tcpdump:x:72:
lisi:x:1001:
zhangsan:x:1002:
wangwu:x:1003:
caiwu:x:1004:zhangsan #后面多了一个用户,就是刚才添加的zhangsan
[root@localhost ~]# gpasswd -M lisi,wangwu caiwu #用gpasswd -M 命令添加多个
用户(用户之间用,隔开)到caiwu组中
[root@localhost ~]# id lisi #查看lisi的id信息
uid=1001(lisi) gid=1001(lisi) 组=1001(lisi),1004(caiwu) #多了一个caiwu组
[root@localhost ~]# id wangwu #查看wangwuid信息
uid=1003(wangwu) gid=1003(wangwu) 组=1003(wangwu),1004(caiwu) #多了一个caiwu组
[root@localhost ~]# id zhangsan #此时去查看zhangsan,zhangsan之前就已经被添加到caiwu组中
uid=1002(zhangsan) gid=1002(zhangsan) 组=1002(zhangsan) #发现消失了
[root@localhost ~]# tail -5 /etc/group #此时查看/etc/group组文件信息,后五行
tcpdump:x:72:
lisi:x:1001:
zhangsan:x:1002:
wangwu:x:1003:
caiwu:x:1004:lisi,wangwu
#caiwu组后面的成员变成用M命令添加的lisi和wangwu,之前添加的lisi不见了
[root@localhost ~]# gpasswd -M lisi caiwu #用gpasswd -M去添加lisi到caiwu组
[root@localhost ~]# tail -5 /etc/group #查看/etc/group组文件信息
tcpdump:x:72:
lisi:x:1001:
zhangsan:x:1002:
wangwu:x:1003:
caiwu:x:1004:lisi #此时之前的zhangsan,wangwu不见,只有最新添加的lisi
[root@localhost ~]# gpasswd -a wangwu caiwu
#用gpasswd -a 一个一个添加用户到caiwu组,此时添加wangwu
正在将用户“wangwu”加入到“caiwu”组中
[root@localhost ~]# gpasswd -a zhangsan caiwu #用gpasswd -a 添加zhangsan到caiwu组
正在将用户“zhangsan”加入到“caiwu”组中
[root@localhost ~]# tail -5 /etc/group #查看/etc/group组文件信息
tcpdump:x:72:
lisi:x:1001:
zhangsan:x:1002:
wangwu:x:1003:
caiwu:x:1004:lisi,wangwu,zhangsan #没有把之前的lisi覆盖掉
[root@localhost ~]# gpasswd -d lisi caiwu #gpasswd -d 把lisi用户从caiwu组中三处
正在将用户“lisi”从“caiwu”组中删除
[root@localhost ~]# tail -5 /etc/group #查看组文件信息是否更新
tcpdump:x:72:
lisi:x:1001:
zhangsan:x:1002:
wangwu:x:1003:
caiwu:x:1004:wangwu,zhangsan #lisi已经被删除掉
小结:
查询用户所属的组
查询用户身份标识
查询用户账户的详细信息
查询已登录到主机的用户信息
查询历史用户登录记录
[root@localhost dev]# who #查询已登录主机的历史用户登录时间
root pts/0 2019-11-01 19:24 (192.168.139.1)
root :0 2019-11-01 22:03 (:0)
root pts/1 2019-11-01 22:04 (192.168.139.1)
[root@localhost dev]# w #查询用户登录信息
00:08:51 up 3:05, 3 users, load average: 0.00, 0.01, 0.05
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root pts/0 192.168.139.1 19:24 3:49m 0.08s 0.08s -bash
root :0 :0 22:03 ?xdm? 46.63s 0.09s /usr/libexec/gnome-sess
root pts/1 192.168.139.1 22:04 3.00s 0.33s 0.02s w
[root@localhost dev]# users #查询登录用户
root root root
[root@localhost dev]# lastb #查询尝试登陆用户信息
gsy :0 :0 Fri Nov 1 22:03 - 22:03 (00:00)
gsy :0 :0 Fri Nov 1 22:03 - 22:03 (00:00)
btmp begins Fri Nov 1 22:03:10 2019
-rw-r--r--. 1 root root 513 11月 5 2016 updatedb.conf
1.- 文件类型(数据文件),除了-还有d 目录,l链接文件,c负责输入输出的设备(字符)文件,b负责存储的块设备文件
2.rw- r-- r-- 三个一组,分别代表各个权限
rw- 属主权限,可读可写,r代表读,w代表写,后面的x代表执行,没有相应的权限就在相应的位置用-代替
r-- 属组权限,代表可读,不可写,不可执行
r-- 其他用户(other)权限,代表只读,即可读,不可写,不可执行
第一个root代表属主
第二个root代表属组
513代表容量大小,默认单位为字节
11月 5 2016 代表创建时间
即:
首字符表示文件类型(-数据文件)d 目录 l链接文件 c 字符设备文件(控制输入输出) b块设备文件(控制存储)
权限,三个一组,分为三块,分别是属主,属组,所有人
头一块代表属主权限 最多的是rwx
第二块是属组权限 rw- 能读能写不能执行 r-x 能都能写不能执行
第三块r-- 所有人权限, other 其他 r-- 只读权限
1 子文件,自己
root 属主
root 属组
513 大小 单位:字节
11yue 5 2016 创建时间
这一条目整体叫做元信息
数据文件最高权限666
目录最高权限777
默认创建755或者644或者700.600.
[root@localhost dev]# cd /opt '切换到/opt'
[root@localhost opt]# ls
rh
[root@localhost opt]# touch demo01.txt '创建一个空白文件demo01.txt'
[root@localhost opt]# ls -l
总用量 0
-rw-r--r--. 1 root root 0 11月 2 00:13 demo01.txt '权限是644'
drwxr-xr-x. 2 root root 6 3月 26 2015 rh '权限是755'
[root@localhost opt]# mkdir test '创建一个test目录'
[root@localhost opt]# ls -l
总用量 0
-rw-r--r--. 1 root root 0 11月 2 00:13 demo01.txt
drwxr-xr-x. 2 root root 6 3月 26 2015 rh
drwxr-xr-x. 2 root root 6 11月 2 00:14 test '权限是755'
[root@localhost opt]# vim demo01.txt 'vim新建并编辑demo01内容为this is test'
[root@localhost opt]# cat demo01.txt '查看'
this is test:
[root@localhost opt]# ls -l '详细显示'
总用量 8
-rw-r--r--. 1 root root 14 11月 5 19:48 demo01.txt '权限为644'
drwxr-xr-x. 12 501 games 4096 11月 5 13:27 httpd-2.4.2
drwxr-xr-x. 2 root root 6 3月 26 2015 rh
[root@localhost opt]# chmod 600 demo01.txt '把demo01.txt权限设为600'
[root@localhost opt]# ls -l '查看详细信息'
总用量 8
-rw-------. 1 root root 14 11月 5 19:48 demo01.txt '已修改'
drwxr-xr-x. 12 501 games 4096 11月 5 13:27 httpd-2.4.2
drwxr-xr-x. 2 root root 6 3月 26 2015 rh
[root@localhost opt]# su gsy '切换到gsy普通用户'
[gsy@localhost opt]$ id gsy '查看gsy所属组'
uid=1000(gsy) gid=1000(gsy) 组=1000(gsy)
[gsy@localhost opt]$ cat demo01.txt '以gsy身份去查看demo01.txt'
cat: demo01.txt: 权限不够 '显示权限不够'
[gsy@localhost opt]$ mkdir test '以gsy身份创建目录'
mkdir: 无法创建目录"test": 权限不够 '权限不够'
[gsy@localhost opt]$ su root '切换为超管root'
密码:
[root@localhost opt]# mkdir test '创建test目录'
[root@localhost opt]# ls
demo01.txt httpd-2.4.2 rh test
[root@localhost opt]# mv demo01.txt test '把demo01.txt移动到test'
[root@localhost opt]# ls
httpd-2.4.2 rh test
[root@localhost opt]# ls -l test
总用量 4
-rw-------. 1 root root 14 11月 5 19:48 demo01.txt '权限为600'
[root@localhost opt]# ls -l
总用量 4
drwxr-xr-x. 12 501 games 4096 11月 5 13:27 httpd-2.4.2
drwxr-xr-x. 2 root root 6 3月 26 2015 rh
drwxr-xr-x. 2 root root 24 11月 5 19:56 test 'test权限为755'
[root@localhost opt]# chmod 744 test/ '将test目录权限设为744'
[root@localhost opt]# ls -l
总用量 4
drwxr-xr-x. 12 501 games 4096 11月 5 13:27 httpd-2.4.2
drwxr-xr-x. 2 root root 6 3月 26 2015 rh
drwxr--r--. 2 root root 24 11月 5 19:56 test '修改成功'
[root@localhost opt]# su gsy '切换到gsy普通用户'
[gsy@localhost opt]$ cd /opt/test/ '切换到/opt/test目录'
bash: cd: /opt/test/: 权限不够 '反馈权限不够'
[gsy@localhost opt]$ ls -l /opt/test/ '查看/opt/test/下信息'
ls: 无法访问/opt/test/demo01.txt: 权限不够
总用量 0
-????????? ? ? ? ? ? demo01.txt '虽然权限不够,但是还是可以看到名字'
[gsy@localhost opt]$ cat /opt/test/demo01.txt '可以tab补全'
cat: /opt/test/demo01.txt: 权限不够 '看不到deomo01.txt内容'
[gsy@localhost opt]$ su root '切换到root'
密码:
[root@localhost opt]# touch /opt/test/demo02.txt '重新创建一个测试文件demo02.txt'
[root@localhost opt]# ls /opt/test/
demo01.txt demo02.txt
[root@localhost opt]# su gsy '切换到gsy普通用户'
[gsy@localhost opt]$ ls /opt/test/
ls: 无法访问/opt/test/demo01.txt: 权限不够
ls: 无法访问/opt/test/demo02.txt: 权限不够 '权限依旧不够,但是仍然可以查看到文件名'
demo01.txt demo02.txt
[gsy@localhost opt]$ su root '切换到root'
密码:
[root@localhost opt]# chown gsy test '将test目录的主属改为gsy'
[root@localhost opt]# ls -l
总用量 4
drwxr-xr-x. 12 501 games 4096 11月 5 13:27 httpd-2.4.2
drwxr-xr-x. 2 root root 6 3月 26 2015 rh
drwxr--r--. 2 gsy root 42 11月 5 20:02 test '已修改'
[root@localhost opt]# chown :gsy test '将组属也改为gsy'
[root@localhost opt]# ls
httpd-2.4.2 rh test
[root@localhost opt]# ls -l
总用量 4
drwxr-xr-x. 12 501 games 4096 11月 5 13:27 httpd-2.4.2
drwxr-xr-x. 2 root root 6 3月 26 2015 rh
drwxr--r--. 2 gsy gsy 42 11月 5 20:02 test '奏效'
[root@localhost test]# ls
demo01.txt demo02.txt
[root@localhost test]# chown gsy dem* '给测试文件demo也修改主组属'
[root@localhost test]# ls
demo01.txt demo02.txt
[root@localhost test]# ls -l
总用量 4
-rw-------. 1 gsy root 14 11月 5 19:48 demo01.txt
-rw-r--r--. 1 gsy root 0 11月 5 20:02 demo02.txt
[root@localhost test]# chown :gsy dem*
[root@localhost test]# ls -l
总用量 4
-rw-------. 1 gsy gsy 14 11月 5 19:48 demo01.txt
-rw-r--r--. 1 gsy gsy 0 11月 5 20:02 demo02.txt '修改完毕'
[root@localhost test]# cd .
[root@localhost test]# ls -l
总用量 4
-rw-------. 1 gsy gsy 14 11月 5 19:48 demo01.txt
-rw-r--r--. 1 gsy gsy 0 11月 5 20:02 demo02.txt '验证'
[root@localhost test]# cd ..
[root@localhost opt]# ls -l
总用量 4
drwxr-xr-x. 12 501 games 4096 11月 5 13:27 httpd-2.4.2
drwxr-xr-x. 2 root root 6 3月 26 2015 rh
drwxr--r--. 2 gsy gsy 42 11月 5 20:02 test '验证'
[root@localhost opt]# su gsy '切换到gsy'
[gsy@localhost opt]$ cat /opt/test/demo01.txt
this is test: '可以查看内容'
改属主属组用.分隔也可以