用户账户和权限管理
##一、 ## 用户账户:
1、超级用户:管理员 root 默认对本机拥有最高权限的账户。在系统中是唯一。
2、普通用户:一般都是有管理员创建的,拥有的权限是受限的。一般只在自己的家目录当中拥有完整的权限。
可以正常的登录系统。
程序用户:
1、在安装软件时,有的应用程序需要创建一些账号来保证程序的正常运行,会创建一个程序账户,程序账户是一些特定的低权限用户的账户,而且这些账户是不能登录到系统的。
2、作用:保证程序的正常运行。
UID:用户的标识号,创建用户的时候可以指定,也可以系统自动分配,但是唯一,不能重复。
GID:组标识,创建用户的时候可以指定,也可以自动分配,也是唯一的,不能重复。
3、根据uid来区分:
**管理员的uid:0
**普通用户的uid:1000
**程序用户的uid:1-999
判定一个用户是否为管理员,以uid为标准,uid=0就是管理员
1、root❌0:0:root:/root:/bin/bash 第一0是uid,第二个是gid
vim:0–1000,0–1000,切换成普通用户
2、dn❌1001:1001::/home/dn:/bin/bash
vim:1000–0,1000-0,切换成管理员
3、saned❌989:983:SANE scanner daemon user:/usr/share/sane:/sbin/nologin
例如:root:x:0:0:root:/root:/bin/bash
含义:/:–字段之间的分隔符
字段1:root—用户账号的名称
字段2:x–用户密码的占位符
字段3:0—用户的uid号
字段4:0—用户的gid号
字段5:root—用户的全名,一般和字段1一致
字段6:/root—用户的家目录所在的位置
字段7:/bin/bash—用户登录的shell,shell默认的解释器就是bash,是有是/bin/bash/才可以登录系统。/sbi/nologin/bin/false,表示不可以登录系统。一般程序用户的shell都是/sbin/nologin/bin/false。
**普通用户能否设置成/sbin/nologin?
答:可以
/etc/passwd保存的是用户信息
/etc/shadow:用户的密码和账户的有效期。
root:$6$h4h2fBdpYZdO7AWN$biLOh38TZhOa.Yh8O9exm5Qj19mmlmitzZ7.IwFYn1Fgj9HhCaCiy6WrzsgsBosAq9OWdm1p04ToKMwFrtZMR1::0:99999:7:::
字段1:用户的账户名称
字段2:用户的密码,MD5加密的方式。*表示不能登录到系统,!!表示密码为空,不是真的空。什么都没有才是真的为空。
字段3:表示上一次修改密码的时间。19864,表示从1970-1-1到2024.5.21过了多少天。
字段4:密码的最短有效天数,0表示不限制。
字段5:密码的最长有效天数 99999表示不限制
字段6:提前多少天告诉用户,密码将要过期,默认7
字段7:密码过期之后多少天会禁用该用户
字段8:账号失效了多久,为空,永不失效
字段9:保留字段,预留字段,无实意。
工作中这两个文件不要动。
二、添加用户,创建用户:
2.1、useradd
-u 指定uid号。已被占用的uid不能被指定。
[root@localhost opt]# useradd -u 1015 ly1015
ly1015:x:1015:1015::/home/ly1015:/bin/bash
-d 指定用户的家目录的位置。(一般是不动的)。
[root@localhost opt]# useradd -d /opt/ ly2
ly2:x:1017:1017::/opt/:/bin/bash
-e 指定用户的账户失效的时间,格式yyy-mm-dd。
[root@localhost opt]# useradd -e 2024-06-21 ly1
ly1:!!:19864:0:99999:7::19895:
-M 创建用户的时候,不建立家目录。
[root@localhost opt]# useradd -M ly3
ly3:x:1018:1018::/home/ly3:/bin/bash
-s 创建用户时,指定用户的登录shell。
[root@localhost home]# useradd -s /sbin/nologin ly4
ly4:x:1019:1019::/home/ly4:/sbin/nologin
**没有家目录,没有配置文件,登录不了系统。**
[root@localhost ~]# useradd -M -e 2024-6-21 -s /bin/nologin -u 1002 hpc
[root@localhost home]# cat /etc/passwd
hpc:x:1002:1002::/home/hpc:/bin/nologin
[root@localhost home]# ls
dn li
2.2、用户创建密码passwd:
passwd 用户名
[root@localhost home]# passwd ly4
更改用户 ly4 的密码 。
新的 密码:
无效的密码: 密码少于 8 个字符
重新输入新的 密码:
passwd:所有的身份验证令牌已经成功更新。
-d 清空指定用户的密码。(慎用!)
ly4:!!:19864:0:99999:7:::
[root@localhost home]# passwd -d ly4
ly4::19864:0:99999:7:::
-l 锁定用户无法登录。**面试会提。**管理员可以进入。
[root@localhost home]# passwd -l li
锁定用户 li 的密码 。
passwd: 操作成功
[root@localhost home]# cd ..
[root@localhost /]# su - li
上一次登录:五 5月 17 17:08:30 CST 2024pts/1 上
[li@localhost ~]$
-u 解锁用户
[root@localhost home]# passwd -l ly
锁定用户 ly 的密码 。
passwd: 操作成功
[root@localhost home]# passwd -S ly
ly LK 2024-05-21 0 99999 7 -1 (密码已被锁定。)
[root@localhost home]# passwd -u ly
解锁用户 ly 的密码。
passwd: 操作成功
[root@localhost home]# passwd -S ly
ly PS 2024-05-21 0 99999 7 -1 (密码已设置,使用 SHA512 算法。)
[root@localhost home]#
-S (大写) 查看用户的状态,用户是否被锁定。
[root@localhost home]# passwd -S ly4
ly4 NP 2024-05-21 0 99999 7 -1 (密码为空。)
[root@localhost home]# passwd -S ly1
ly1 LK 2024-05-21 0 99999 7 -1 (密码已被锁定。)
[root@localhost home]# passwd -S li
li LK 2024-05-15 0 99999 7 -1 (密码已被锁定。)
[root@localhost home]# passwd -S ly2
ly2 LK 2024-05-21 0 99999 7 -1 (密码已被锁定。)
[root@localhost home]# passwd -S ly3
ly3 LK 2024-05-21 0 99999 7 -1 (密码已被锁定。)
[root@localhost home]# passwd -S ly
ly PS 2024-05-21 0 99999 7 -1 (密码已设置,使用 SHA512 算法。)
[root@localhost home]#
修改密码的另一种方式:[root@localhost home]# echo 123456 | passwd --stdin ly,修改ly的密码,修改为123456;
2.3、 修改账户的属性:
-u 修改用户的uid
ly4:x:1020:1019::/home/ly4:/sbin/nologin
[root@localhost home]# usermod -u 1019 ly4
[root@localhost home]# cat /etc/passwd
ly4:x:1019:1019::/home/ly4:/sbin/nologin
-d 修改用户的家目录地址(没人用)
ly4:x:1019:1019::/opt/:/sbin/nologin
[root@localhost opt]# usermod -d /home/ ly4
[root@localhost opt]# cd ..
-e 修改用户的账户失效时间 yyyy-mm-dd
ly4:$6$FxiaFqjv$Y.tb7Gao/ZKNZMbbCXoP6DVy.zOJdmR8wvShoC/nA.cL.iKs3oqfZWwOH2HY93KC/FyoN.AGEvHjStMiZAbH80:19864:0:99999:7::19898:
-L 锁定用户
[root@localhost home]# usermod -L ly4
-U 解锁用户
[root@localhost home]# passwd -S ly4
ly4 LK 2024-05-21 0 99999 7 -1 (密码已被锁定。)
[root@localhost home]# usermod -U ly4
[root@localhost home]# passwd -S ly4
ly4 PS 2024-05-21 0 99999 7 -1 (密码已设置,使用 SHA512 算法。)
-g:修改用户的基本组名(或使用 GID 号)。
-G:修改用户的附加组名(或使用 GID 号)。
* **面试题** 锁定用户的两种方式:
**passwd -l 用户名**--密码锁定
**usermod -L 用户名**--用户锁定
2.4、删除用户:
userdel
userdel 用户名(只删除用户,不删除家目录)
[root@localhost home]# userdel ly1
[root@localhost home]# ll
总用量 4
drwx------. 3 dn dn 78 5月 17 10:34 dn
drwx------. 15 li li 4096 5月 17 17:12 li
drwx------. 3 liyang liyang 78 5月 21 10:53 liyang
drwx------. 3 1016 1016 78 5月 21 16:48 ly1
drwx------. 3 ly4 ly4 78 5月 21 17:03 ly4
userdel -r 用户名(删除用户,删除家目录)
[root@localhost home]# userdel -r ly1015
[root@localhost home]# ll
总用量 4
drwx------. 3 dn dn 78 5月 17 10:34 dn
drwx------. 15 li li 4096 5月 17 17:12 li
drwx------. 3 liyang liyang 78 5月 21 10:53 liyang
drwx------. 3 ly1 ly1 78 5月 21 16:48 ly1
drwx------. 3 ly4 ly4 78 5月 21 17:03 ly4
[root@localhost home]#
组账号:/etc/group 组账号信息;类似于/etc/passwd用户的信息
/etc/gshadow 保存组账号的额外信息;类似于/etc/gshadow
groupadd 添加组账号groupadd test1
[root@localhost home]# groupadd test1 **添加组账户,一般不创建,一般用户创建账号
删除组账号:[root@localhost home]# groupdel test3
添加或者删除组成员:
gpasswd
-a 向组内添加组成员。gpasswd -a hpc,jk lzl
[root@localhost home]# gpasswd -a ly1 ly2
正在将用户“ly1”加入到“ly2”组中[root@localhost home]# gpasswd -a ly1 ly2
正在将用户“ly1”加入到“ly2”组中
-d 从组内删除用户。gpasswd -d hpc lzl
[root@localhost home]# gpasswd -a ly1 ly2
正在将用户“ly1”加入到“ly2”组中
-M 定义组员的列表,每个用户用逗号隔开。
[root@localhost home]# gpasswd -M ly2,ly3 ly1
[root@localhost home]# cat /etc/group
ly2:x:1017:
ly3:x:1018:
ly4:x:1019:
ly1:x:1020:ly2,ly3
添加可以一次性多个,删除只能一个一个删。
2.5、 配置文件
配置文件:/etc/profile 全局配置对所有用户都生效。
[root@localhost ~]# vim /etc/passwd (alias cat='cat -n')
[root@localhost ~]# vim /etc/profile
[root@localhost ~]# source /etc/profile
[root@localhost ~]# cat /etc/passwd
~(家目录)/.bash_profile 用户登录时,会读取配置,只对自己生效。(在家目录下操作)
[ly@localhost ~]$ vim .bash_profile (alias cat='cat -n')
[ly@localhost ~]$ source .bash_profile
[ly@localhost ~]$ source /etc/.bash_profile
bash: /etc/.bash_profile: 没有那个文件或目录
[ly@localhost ~]$ cat .bash_profile
[root@localhost ly]# su - root
上一次登录:二 5月 21 19:58:06 CST 2024pts/2 上
[root@localhost ~]# cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
................................................................
ly3:x:1018:1018::/home/ly3:/bin/bash
ly4:x:1019:1019::/home/:/sbin/nologin
[root@localhost ~]# su - ly
上一次登录:二 5月 21 19:51:59 CST 2024pts/2 上
[ly@localhost ~]$ cat /etc/passwd
1 root:x:0:0:root:/root:/bin/bash
................................................................
53 ly3:x:1018:1018::/home/ly3:/bin/bash
54 ly4:x:1019:1019::/home/:/sbin/nologin
[ly@localhost ~]$
**退出:exit。**
~/.bashrc 用户的配置文件,只对自己生效,每一次新打开一个shell就会读取这个文件。
[root@localhost ~]# vim .bashrc (alias scan='ll')相当于打开一个文件,多次编辑,互不干扰。
[root@localhost ~]# source .bashrc
[root@localhost ~]# scan
总用量 0
drwxr-xr-x. 2 root root 6 5月 16 17:09 公共
drwxr-xr-x. 2 root root 6 5月 16 17:09 模板
drwxr-xr-x. 2 root root 6 5月 16 17:09 视频
drwxr-xr-x. 2 root root 6 5月 16 17:09 图片
drwxr-xr-x. 2 root root 6 5月 16 17:09 文档
drwxr-xr-x. 2 root root 6 5月 16 17:09 下载
drwxr-xr-x. 2 root root 6 5月 16 17:09 音乐
drwxr-xr-x. 2 root root 6 5月 16 17:09 桌面
[root@localhost ~]#
~/.bash_logout:用户退出当面shell的时候会执行的配置。
[root@localhost ~]# vim .bash_logout (echo "再见!")
[root@localhost ~]# source .bash_logout
“再见!”
[root@localhost ~]# exit
登出
“再见!”
每次登录都是shell的一个子shell,每个之间互相隔离。
相当进程 进程分了很多线程
source 文件配置生效
读取顺序:/etc/profile -------------~/.bash_profile -----登录系统-------~/.bashrc -------------~/.bash_logout:用户自己的配置
三、 权限管理:
1、查询用户身份标识:id 用户名
[root@localhost home]# id ly
uid=1003(ly) gid=1003(ly) 组=1003(ly)
作用:查询uid gid所属组
w—who–查询已经登录的主机的用户信息 users
chmod 命令 用户名
u:所有者 u+r
[root@localhost test1]# chmod u+w 123
[root@localhost test1]# ll
总用量 0
-rwx-w----. 1 root root 0 5月 21 20:38 123
-rw-r--r--. 1 root root 0 5月 21 20:38 456
[root@localhost test1]#
g:所在组
o:其他用户
a:所有用户 a+x u+x o+x
八进制算法替换了
421
r red 读权限 4
w write 写权限 2
x 执行 执行权限 1
例子:-rw-r–r–. 1 root root 0 5月 21 13:43 123
rw 6 所有者权限
r 4 所在组权限
r 4 其他用户权限
3.1、chmod:赋权命令
chmod 420 文件
[root@localhost opt]# mkdir test1
[root@localhost opt]# cd test1
[root@localhost test1]# touch 123 456
[root@localhost test1]# ll
总用量 0
-rw-r--r--. 1 root root 0 5月 21 20:38 123
-rw-r--r--. 1 root root 0 5月 21 20:38 456
[root@localhost test1]# chmod 420 123
[root@localhost test1]# ll
总用量 0
-r---w----. 1 root root 0 5月 21 20:38 123
-rw-r--r--. 1 root root 0 5月 21 20:38 456
chmod u+x 文件
[root@localhost test1]# chmod u+x 123
[root@localhost test1]# ll
总用量 0
-r-x-w----. 1 root root 0 5月 21 20:38 123
-rw-r--r--. 1 root root 0 5月 21 20:38 456
test.sh 所有者读写,所在组执行,其他用户看
chmod 614 test.sh
chmod -R 只有一层目录,目录中所有都会生效,级联目录只有最后一个生效。
[root@localhost home]# chmod -R 641 test1/-----整个目录下包括目录、文件都会变成所有者可读可写,所在组可读,其他用户执行。
3.2、递归赋权
[root@localhost home]# chmod -R 666 aa/bb/cc
[root@localhost home]# cd aa
[root@localhost aa]# ll
总用量 0
-rw-r--r--. 1 root root 0 5月 21 22:51 1
drwxr-xr-x. 3 root root 25 5月 21 22:51 bb
[root@localhost aa]# cd bb
[root@localhost bb]# ll
总用量 0
-rw-r--r--. 1 root root 0 5月 21 22:51 2
drw-rw-rw-. 2 root root 15 5月 21 22:51 cc
[root@localhost bb]# cd cc
[root@localhost cc]# ll
总用量 0
-rw-rw-rw-. 1 root root 0 5月 21 22:51 3
[root@localhost cc]#
[root@localhost home]# chmod -R 666 aa
[root@localhost home]# cd aa
[root@localhost aa]# ll
总用量 0
-rw-rw-rw-. 1 root root 0 5月 21 22:51 1
drw-rw-rw-. 3 root root 25 5月 21 22:51 bb
[root@localhost aa]# cd bb
[root@localhost bb]# ll
总用量 0
-rw-rw-rw-. 1 root root 0 5月 21 22:51 2
drw-rw-rw-. 2 root root 15 5月 21 22:51 cc
[root@localhost bb]# cd cc
[root@localhost cc]# ll
总用量 0
-rw-rw-rw-. 1 root root 0 5月 21 22:51 3
[root@localhost cc]#
例子:353
chmod 353
所有者 写和执行
所在组 读和执行
其他用户 写和执行
3.3、文件和目录默认权限修改
umask 用来设定文件和目录的默认权限。
文件的默认权限 666
目录的默认权限 777
[root@localhost opt]# touch 123
[root@localhost opt]# ll
总用量 4
-rw-r--r--. 1 root root 0 5月 21 22:59 123(644=666-022)
-rwxrwxrwx. 1 xy102 xy102 38 5月 21 15:36 login.sh
drwxr-xr-x. 2 root root 28 5月 21 20:38 test1
[root@localhost opt]# umask
0022
[root@localhost opt]#
[root@localhost opt]# umask 033
[root@localhost opt]# touch 456
[root@localhost opt]# ll
总用量 4
-rw-r--r--. 1 root root 0 5月 21 22:59 123
-rw-r--r--. 1 root root 0 5月 21 23:00 456{644=(666-033)---644}=创建文件,默认就是不给你执行权限
-rwxrwxrwx. 1 xy102 xy102 38 5月 21 15:36 login.sh
drwxr-xr-x. 2 root root 28 5月 21 20:38 test1
[root@localhost opt]# umask
0033
[root@localhost opt]#
**(面试题)创建文件,默认就是不给你执行权限。
创建目录,一定要有执行权限,没有执行权限,你不能cd进入这个目录。我要修改一个文件的默认权限,怎么办?
umask,如果是文件,怎么改umask都没有执行权限。
3.4、chown修改所有者和所在组:
chown:前提:用户和组都要存在,要先创建好。
chown dn.dn 文件(.和:一样)
chown id:id 所有者和所在组一起变
chown id 文件名/目录名 只修改所有者
chown :id 文件名/目录名 只修改所在组
chown .id
[root@localhost home]# chown -R ly.ly aa(chown -R 与chmod -R用法一样)
[root@localhost home]# cd a
-bash: cd: a: 没有那个文件或目录
[root@localhost home]# cd aa
[root@localhost aa]# ll
总用量 0
-rw-rw-rw-. 1 ly ly 0 5月 21 22:51 1
drw-rw-rw-. 3 ly ly 25 5月 21 22:51 bb
[root@localhost aa]#
课后思考题-------登录文件配置
1、useradd xy102。
2、cd /opt.
3、vim login.sh
写入:#!/bin/bash
echo "xxxxxxx"
:wq
4、chmod 777 login.sh (赋权,最高权限)
5、cd /home/xy102
6、vim .bash_profile
登录配置文件,调用/opt/login.sh
7、重新启用:source .bash_profile
8、su - xy102
[root@localhost opt]# vim login.sh
[root@localhost opt]# chmod 777 login.sh
[root@localhost opt]# ll
总用量 8
-rw--w--w-. 1 root root 0 5月 21 23:04 10
--w--w--w-. 1 root root 0 5月 21 23:05 11
----------. 1 root root 3 5月 21 23:07 12
-rw-r--r--. 1 root root 0 5月 21 22:59 123
d-w--w--w-. 4 root root 39 5月 21 23:30 13
-rw-r--r--. 1 root root 0 5月 21 23:00 456
-rwxrwxrwx. 1 root root 38 5月 22 00:21 login.sh
drwxr-xr-x. 2 root root 28 5月 21 20:38 test1
[root@localhost opt]# vim .bash_profile
[root@localhost opt]# cd /home/xy102
[root@localhost xy102]# vim .bash_profile
[root@localhost xy102]# source .bash_profile
我爱王心凌!
[root@localhost xy102]# su - xy102
最后一次失败的登录:三 5月 22 00:10:20 CST 2024pts/4 上
最有一次成功登录后有 4 次失败的登录尝试。
我爱王心凌!
[xy102@localhost ~]$
in.sh
[root@localhost opt]# ll
总用量 8
-rw--w--w-. 1 root root 0 5月 21 23:04 10
--w--w--w-. 1 root root 0 5月 21 23:05 11
----------. 1 root root 3 5月 21 23:07 12
-rw-r--r--. 1 root root 0 5月 21 22:59 123
d-w--w--w-. 4 root root 39 5月 21 23:30 13
-rw-r--r--. 1 root root 0 5月 21 23:00 456
-rwxrwxrwx. 1 root root 38 5月 22 00:21 login.sh
drwxr-xr-x. 2 root root 28 5月 21 20:38 test1
[root@localhost opt]# vim .bash_profile
[root@localhost opt]# cd /home/xy102
[root@localhost xy102]# vim .bash_profile
[root@localhost xy102]# source .bash_profile
我爱王心凌!
[root@localhost xy102]# su - xy102
最后一次失败的登录:三 5月 22 00:10:20 CST 2024pts/4 上
最有一次成功登录后有 4 次失败的登录尝试。
我爱王心凌!
[xy102@localhost ~]$