
目录
前言
这篇文章详细介绍了Linux账号和权限管理的一部分即用户和组的相关知识,总结了用户账号和组账号的具体管理操作。管理目录和文件的属性会接着出,如果对你有帮助的话还请点个赞支持一下博主哟,感谢???
管理用户和主账号
用户和组账号概述
用户帐号
用户帐户是用户的身份标识,用户通过用户帐户可以登录到系统,并且访问已经被授权的资源。系统依据账户来区分属于每个用户的文件、进程、任务,并给每个用户提供特定的工作环境,使每个用户的工作都能各自独立不受干扰地工作。
- 超级用户 //root
- 普通用户 //自己新建的用户都属于普通用户
- 程序用户 //权限最低,一般只能操作程序相关联的文件
组帐号
组群是具有相同特性的用户的逻辑集合,使用组群有利于系统管理员按照用户的特性组织和管理用户,提高工作效率。
- 基本组(私有组)
- 附加组(公共组)
组的特点:
在为资源授权时可以把权限赋予某个组群,组群中的成员即可自动获得这种权限。
一个用户账户至少属于一个用户组,当是多个组群的成员时,其中某个组群是该用户的主组群(私有组群),其他组群是该用户的附属组群(标准组群)
用户和组群ID
每一个用户都有一个唯一的身份标识,称为用户ID(UID);每一个用户组也有一个唯一的身份标识,称为用户组ID(GID)。这些都是系统在创建时就自动生成的。
用户账号管理
用户账号文件
文件/etc/shadow
保存用户名称、宿主目录、登录Shell等基本信息
- 文件位置:/etc/passwd
- 每一行对应一个用户的帐号记录
[root@localhost ~]# cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
polkitd:x:999:998:User for polkitd:/:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
chrony:x:998:996::/var/lib/chrony:/sbin/nologin
saslauth:x:997:76:Saslauthd user:/run/saslauthd:/sbin/nologin
那每一行都包含了什么信息呢?
可以观察到root的UID和GID都是0
普通用户UID和GID默认从1000开始
文件/etc/shadow
我们之前观察到用户信息里有个密码占位符x,其真正的密码就在/etc/shadow文件里,它保存用户的密码、账号有效期等信息
- 文件位置:/etc/shadow
- 每一行对应一个用户的密码记录
[root@localhost ~]# cat /etc/shadow
root:$6$GrsORQwY6Wlm2Asp$Tjup.pBpS4fvA..IPSlgxTg3DWN6uPplRqk9P4f1iBKpoOB/QgGkLke6p06WR3laM/xtmIUIf64pGV.o9Raww1::0:99999:7:::
bin:*:17632:0:99999:7:::
daemon:*:17632:0:99999:7:::
adm:*:17632:0:99999:7:::
lp:*:17632:0:99999:7:::
sync:*:17632:0:99999:7:::
shutdown:*:17632:0:99999:7:::
halt:*:17632:0:99999:7:::
mail:*:17632:0:99999:7:::
operator:*:17632:0:99999:7:::
games:*:17632:0:99999:7:::
ftp:*:17632:0:99999:7:::
nobody:*:17632:0:99999:7:::
systemd-network:!!:18822::::::
dbus:!!:18822::::::
polkitd:!!:18822::::::
sshd:!!:18822::::::
postfix:!!:18822::::::
chrony:!!:18822::::::
saslauth:!!:19277::::::
[root@localhost ~]# cat /etc/shadow
root:$6$GrsORQwY6Wlm2Asp$Tjup.pBpS4fvA..IPSlgxTg3DWN6uPplRqk9P4f1iBKpoOB/QgGkLke6p06WR3laM/xtmIUIf64pGV.o9Raww1::0:99999:7:::
bin:*:17632:0:99999:7:::
daemon:*:17632:0:99999:7:::
adm:*:17632:0:99999:7:::
lp:*:17632:0:99999:7:::
sync:*:17632:0:99999:7:::
shutdown:*:17632:0:99999:7:::
halt:*:17632:0:99999:7:::
mail:*:17632:0:99999:7:::
operator:*:17632:0:99999:7:::
games:*:17632:0:99999:7:::
ftp:*:17632:0:99999:7:::
nobody:*:17632:0:99999:7:::
systemd-network:!!:18822::::::
dbus:!!:18822::::::
polkitd:!!:18822::::::
sshd:!!:18822::::::
postfix:!!:18822::::::
chrony:!!:18822::::::
saslauth:!!:19277::::::
字段1:用户帐号的名称
字段2:加密的密码字串信息
字段3:上次修改密码的时间
字段4:密码的最短有效天数,默认值为0
字段5:密码的最长有效天数,默认值为99999
字段6:提前多少天警告用户口令将过期,默认值为7
字段7:在密码过期之后多少天禁用此用户
字段8:帐号失效时间,默认值为空
字段9:保留字段(未使用)
默认只有root用户能够读取文件中的内容,并且不允许root直接编辑该文件中的内容
上次修改密码的时间,表示从1970年01月01日(可理解为Unix系统的诞生日)算起到最近一次修改密码时间隔的天数
添加用户账号 useradd
useradd命令
useradd [选项]... 用户名
- 常用命令选项
- -u:指定 UID 标记号
- -d:指定宿主目录,缺省为 /home/用户名
- -e:指定帐号失效时间
- -g:指定用户的基本组名(或GID号)(默认基本组同名)
- -G:指定用户的附加组名(或GID号)
- -M:不为用户建立并初始化宿主目录(不希望它登录系统,一般是程序用户)
- -s:指定用户的登录Shell,/sbin/nologin为不可登陆,/bin/bash可以登录(默认可以登录系统)
现在如果指定mike的基本组为mike,并加入到ftpuser组,且指定家目录为/ftphome/mike,不允许mike通过本地登录服务器,则命令为
[root@localhost ~]# useradd -d /ftphome/mike -G ftpuser -s /sbin/nologin mike
设置/更改用户口令 passwd
passwd命令
passwd [选项]... 用户名
常用命令选项
-d:清空用户的密码,使之无需密码即可登录
-l:锁定用户帐号
-S:查看用户帐号的状态(是否被锁定)
-u:解锁用户帐号(当解锁后需要重新修改密码或者清除密码) //centos 7不需要修改密码
修改用户账号的属性 usermod
usermod命令/主要修改已存在用户的信息
usermod [选项]... 用户名
常用命令选项
-l:更改用户帐号的登录名称
-L:锁定用户账户
-U:解锁用户账户
以下选项与useradd命令中的含义相同
-u、-d、-e、-g、-G、-s
[root@localhost ~]# cat /etc/shadow
hushaotian:$6$Fy5k8CjT$ikrrPug0QZQ6p2Ph7Hc3vIB0PiMkWBtF/dKN9Lx7LSb4tCm39NRBN59.4sKePJD23QUzTQu15PoQdOQvNJjJ3/:19278:0:99999:7::25567:
//只展示这个账户密码的信息,可以看到没有无效期限
[root@localhost ~]# usermod -e 2040-01-01 hushaotian
[root@localhost ~]# cat /etc/shadow
hushaotian:$6$Fy5k8CjT$ikrrPug0QZQ6p2Ph7Hc3vIB0PiMkWBtF/dKN9Lx7LSb4tCm39NRBN59.4sKePJD23QUzTQu15PoQdOQvNJjJ3/:19278:0:99999:7::25567:
//无效期有时间期限了
删除用户账号 userdel
userdel命令
userdel [-r] 用户名
//添加 -r 选项时,表示连用户的宿主目录一并删除
[root@localhost ~]# useradd stu01
[root@localhost ~]# ls -ld /home/stu01/
drwx------ 2 stu01 stu01 4096 09-09 12:38 /home/stu01/
[root@localhost ~]# userdel -r stu01
[root@localhost ~]# ls -ld /home/stu01/
ls: /home/stu01/: 没有那个文件或目录
建议一般不要加-r,免得有些需要的数据丢失
用户账号的初始配置文件
- 文件来源
新建用户帐号时,从/etc/skel目录中复制而来(当我们需要在所有新建账户目录中都加东西时,可以在这里面创建) - 主要的用户初始配置文件(
.开头的为隐藏文件,通过ls -a查看)
~/.bash_profile//用户登录时执行的脚本
~/.bashrc//用户切换是执行的脚本
~/.bash_logout//用户退出系统时执行的脚本
以上三个文件从/etc/skel目录中复制而来
/etc/profile //用户登录时执行的脚本
/etc/bashrc //用户切换时执行的脚本
组账号管理
组账号文件
与用户帐号文件相类似
/etc/group:保存组帐号基本信息
/etc/gshadow:保存组帐号的密码信息
[root@localhost ~]# grep "adm" /etc/group
sys:x:3:root,bin,adm
adm:x:4:root,adm,daemon
//adm是组账号名,root,adm,daemon是组成员列表
添加组账号 groupadd
groupadd命令
groupadd [-g GID](非必须) 组账号名
//添加组帐号 chengdu
[root@localhost ~]# [root@localhost ~]# groupadd chengdu
[root@localhost ~]# cat etc/group
hushaotian:x:1000:
添加删除组成员 gpasswd
gpasswd命令
设置组帐号密码(极少用)、添加/删除组成员
gpasswd [选项] 用户账号名 组帐号名
常用命令选项:
-a:向组内添加一个用户
-d:从组内删除一个用户成员
-M:定义组成员列表,以逗号分隔
[root@localhost ~]# gpasswd -a hushaotian chengdu
正在将用户“hushaotian”加入到“chengdu”组中
[root@localhost ~]# cat /etc/group
chengdu:x:1001:hushaotian
//删除
[root@localhost ~]# gpasswd -d hushaotian chengdu
正在将用户“hushaotian”从“chengdu”组中删除
[root@localhost ~]# cat /etc/group
chengdu:x:1001:
删除组账号 groupdel
groupdel命令
groupdel 组帐号名
[root@localhost ~]# groupdel chengdu
//任何用户的基本组都不可以直接删除
查询账号信息
- id命令 查询用户身份标识
id [用户名]
[root@localhost ~]# id hushaotian
uid=1000(hushaotian) gid=1000(hushaotian) 组=1000(hushaotian)
- groups命令 查询用户所属的组
groups [用户名]
[root@localhost ~]# groups hushaotian
hushaotian : hushaotian
- finger命令 查询用户帐号的详细信息
finger [用户名]
[root@localhost ~]# finger hushaotian
Login: hushaotian Name:
Directory: /home/hushaotian Shell: /bin/bash
Last login 五 10月 14 01:04 (CST) on tty1
No mail.
No Plan.
- users、who、w命令 查询已登录到主机的用户信息
[root@localhost ~]# users
root
[root@localhost ~]# who
root pts/0 2022-10-18 05:20 (192.168.133.1)
hushaotian tty1 2022-10-18 05:41
//pts 代表远程登录;tty 代表本地登录