账号和权限管理
目录
管理用户账号和组账号
管理目录和文件的属性
总结
管理用户账号和组账号
用户的分类
Linux 用户三种角色
超级用户:root 用户是Linux操作系统中默认的超级用户账号,对本主机拥有至高无上的权限,类似于 windows操作系统中的 Administrator用户,只有当进行系统
管理、维护任务时,才建议使用root 用户登录系统,日常事务处理建议只使用普通用户账号。root 拥有对系统的最高的管理权限ID=0
普通用户:普通用户账号需要由root用户或其他管理员用户创建,拥有的权限受到一定限制,一般只在用户自己的宿主目录中拥有完整权限
系统用户 UID:1-999 (centos7版本)1-499 (centos6版本)
UID:即每个用户的身份标示,类似于每个人的身份证号码
程序用户:在安装Linux操作系统及部分应用程序时,会添加一些特定的低权限用户账号,这些用户一般不允许登录到系统,而仅用于维持系统或某个程序的正常运行,如 bin、daemon、ftp、mail等
伪用户一般不会用来登录系统的,它主要是用于维持某个服务的正常运行.如: ftp,apache
UID:即每个用户的身份标示,类似于每个人的身份证号码
管理员组:root, o
普通组:GID
系统组:1-499 ( centos6) , 1-999 (CENTOS7)
普通组:500+ ( Centos6) , 1000+ (CENTOS7)
表示该账户需要密码才能登录,为空时,账户无须密码即可登录组账号
基本组:基于某种特定联系(如都需要访问 FTP服务)将多个用户集合在一起,即构成一个用户组,表示该组内所有用户的账号称为组账号。每一个用户账号至少属于一个组,这个组称为该用户的基本组(或私有组) ;
附加组:若该用户同时还包含在其他的组中,则这些组称为该用户的附加组(或公共组)
例如,用户 zhangsan是技术部的员工,与部门内的其他同事同属于基本组tech,后来因工作安排需要,公司将zhangsan加入邮件管理员组mailadm,则此时用户 zhangsan同时属于tech、mailadm 组,tech 组是其基本组账号,而mailadm组是其附加组账号。
对组账号设置的权限将适用于组内的每一个用户账号。
简说:
用户和组的关系
用户是员工组是职位员工可以兼职多个岗位
总有一个最重要的身份主要组合附加组主要组必须要一个组有且唯一
附加组可有可无有可以有多个
默认行为当你创建一个新用户时会自动创建一个和之同名的主组
passwd文件账号记录详细说明
root:x:0: 0 : root : / root :/bin / bash
详解如下:
root:用户名,用户名仅是为了方便用户记忆。Linux系统是通过UID来识别用户身份,分配用户权限。x:表示此用户设有密码,但不是真正的密码,真正的密码保存在/etc/shadow文件
Linux系统把真正的加密密码串放置在/etc/shadow文件中,此文件只有root用户可以浏览和操作,最大限度地保证了密码的安全。
补充:
注意! ! !,虽然"x"并不表示真正的密码,但也不能删除,如果删除了
"x",那么系统会认为这个用户没有密码,从而导致只输入用户名而不用输入密码就可以登陆(只能在使用无密码登录,远程是不可以) 。
0:用户账号的UID 号。
0:所属基本组账号的GID号
root:描述性信息,此字段只是用来解释这个用户的意义而已/root:宿主目录,即该用户登录后所在的默认工作目录
注:通常称为用户的主(家)目录。例如: root主目录为/root,普通用户odysee的主目录为/home/odysee/bin/bash录 shell等信息,用户完成登录后使用的
/etc/ shadow(影子文件)
/etc/shadow文件只有root
用户拥有读权限,其他用户没有任何权限,这样就保证了用户密码的安全性
和/etc/passwd文件一样,文件中每行代表一个用户,同样使用":"作为分隔符,不同之处在于,每行用户信息被划分为9个字段
第一列:账户名
第二列:存放真正加密的密码,采用sHA512散列算法,更加安全 加密原来用MD5 或DES
!!和*表示没有密码不能登陆,新创建用户也是!!,如果密码前面显示双感叹号表示该账户被锁定了
第三列:上一次修改密码的时间,从1970年1月1日开始算的,因为1970年是linux的诞生日,date -d"1970-01-01 15775 days"可以查看哪一天改过
第四列:多久之后才可以修改密码,如果是0,则密码可以随时修改
最小修改间隔时间,也就是说,该字段规定了从第三个字段(最后一次修改密码的日期)起。多长时间之内不能修改密码如果是0则可以随时修改密码,如果是10 则代表密码修改后10天之内不能再次修改密码,此字段是为了针对某些人频繁更改账号密码而设计的。
第五列:密码有效期,默认99999(273年),表示永久生效
第六列:密码到期前的第几天发出告警信息,默认是7天,每次登录系统都会向该账户发出"修改密码”的警告信息
第七列:密码过期的宽限天数,过期后的几天还是可以登陆的,如果过了宽限天数,系统将不再让此账户登陆,也不会提示账户过期,是完全禁用
比如说,此字段规定的宽限天数是10,则代表密码过期10天后失效;如果是0 则代表密码过期后立即失效;如果是 -1则代表密码永远不会失效
第八列:账号失效时间,使用自―1970年1月1日以来的总天数作为账户的失效时间
第九列:保留,未使用
chage命令:
用来修改帐号和密码的有效期限,针对目前系统已经存在的用户
chage[选项]用户名
-m:密码可更改的最小天数。为零时代表任何时候都可以更改密码。
-M:密码保持有效的最大天数。chage -M60 root
-w:用户密码到期前提前收到警告信息的天数。
-E:帐号到期的日期。过了这天,此帐号将不可用。
-d:上一次更改的日期。
-i:停滞时期。如果一个密码已过期这些天,那么此帐号将不可用。
-l:例出当前的设置。由非特权用户来确定他们的密码或帐号何时过期。
例: chage -E 2019-04-29 test //其中,test为用户,用户将在2019年4月29日失效(不可登录)
chage -d 2019-06-30 test //设置test用户最后一次修改密码的日期为2019年6月30日
chage -d 0 test //则代表该test用户需立即修改密码
date -d "+45 days" -u //如果不知道时间可以用date查看
-u:UTC时间
账号安全
密码复杂性
总结:
第三个字段为:密码最后一次修改的时间 ( chage -d)
第四个字段为:密码最小修改间隔时间 ( chage -m)
第五个字段为:密码的有效期 ( chage -M)
第六个字段为:密码需要变更前的警告天数 (chage -w)
第七个字段为:密码过期后的宽限天数 ( chage -I)
第八个字段为:账号失效时间 ( chage -E)
添加用户账号
-u:指定用户的UID号,要求该UID号码未被其他用户使用。
-d:指定用户的宿主目录位置(当与-M一起使用时,不生效)。
-e:指定用户的账户失效时间,可使用YYYY-MM-DD的日期格式。
-g:指定用户的基本组名(或使用GID号) 。
-G:指定用户的J附加组名(或使用GID号)。
-M:不建立宿主目录,即使/etc/login.defs 系统配置中已设定要建立宿主目录。
-s:指定用户不能登录shell。
useradd zhangsan
id zhangsan
tail -1 /etc/passwd
tail -l /etc/ shadow
ls /home
-d:清空指定用户的密码,仅使用用户名即可登录系统
-l:锁定用户账号
-S:查看用户账号的状态(是否被锁定)
-u:解锁用户账号
passwd -uf zhang (要加f强制解锁)
扩充
#调用管道符,给zhangsan 用户设置密码“123”,为了方便系统管理,passwd命令提供了--stdin选项,用于批量给用户设置初始密码。
echo "123456" |passwd --stdin xysb
-l:更改用户账号的登录名称(Login Name)
-L:锁定用户账户
-U:解锁用户账户
-u:修改用户的UID号
-d:修改用户的宿主目录位置
-e:修改用户的账户失效时间,可使用 YYYY-MM-DD的日期格式
-g:修改用户的基本组名(或使用GID号)
-G:修改用户的附加组名(或使用GID号)
-s:指定用户的登录Shell
[root@dc2 home]# useradd -d /admin -g wheel -G root admin
[root@dc ~]# usermod -d /home/admin admin
userdel 后面一定要加!!!! +r
userdel -rf 用户
[root@dc ~]# useradd xysb2
[root@dc ~]# userdel -r xysb2
组账号文件
与组账号相关的配置文件也有两个,分别是/etc/group和/etc/gshadow。前者用于保存-组账号名称、GID号、组成员等基本信息,后者用于保存组账号的加密密码字串等信息(但
是很少使用到)。某一个组账号包含哪些用户成员,将会在 group文件内最后一个字段中体现出来(基本组对应的用户账号默认可能不会列出),多个组成员之间使用",”(逗号)分隔
grep "^root" letc/group #//检索root组包括哪些用户
grep "root" letc/ group //检索哪些组包括root用户
groupadd命令
groupadd[-g GID]组账号名
groupadd -g 1200 market
tail -1 /etc/ group
groupadd命令
groupadd[-g GID]组账号名groupadd -g 1200 market
tail -1 letc/ group
gpasswd命令
-a:添加用户到组
-d:从组删除用户
-A:指定管理员
-M:指定组成员和
-A的用途差不多
-r:删除密码
-R:限制用户登入组,只有组中的成员才可以用newgrp加入该组
useradd mike
gpasswd -a mike root #确认mike 用户已加入root组
groups mike
gpasswd -d webmaster root #//确认webmaster 用户已退出root 组正在将用户"webmaster"从"root”组中删除
gpasswd -Mroot, daemon , webmaster, mike adm
grep "^adm" l etc/group
adm: x: 4 : root, daemon , webmaster,mike
groupdel命令
groupdel组账号名
groupdel market
grep "market" /etc/group
groups命令
group [用户名]
groups adm
finger命令 #查询用户账号的详细信息
finger[用户名]
w、who、users #查询已登录到主机的用户信息
通常使用tty来简称各种类型的终端设备,Centos7系统,tty1表示图形界面,tty2-tty6表示文字界面,可以用ctrl+Alt+F1-F6切换,
按ctr1+A1t+F2登陆,执行w命令,查看使用的终端就是tty2
User:登录用户名
TTY:登录后系统分配的终端号
From:远程主机名,即从哪登录的login@:何时登录
IDLE:用户空闲时间。这是个计时器,一旦用户执行任何操作,改计时器就会被重置。JCPU:和终端连接的所有进程占用时间。包括当前正在运行的后台作业占用时间
PCPU:当前进程所占用时间
WHAT:当前正在运行进程的命令行
pts说明是用远程工具连接的,比如1xshell,后面的数字代表登录的时间顺序,越小证明登录的越早
查看目录和文件的属性root用户、 root组
如"drwxr-xr-x"和"-rw-r--r--”。权限字段由四部分组成,各自的含义如下所述。第1个字符:表示该文件的类型,可以是 d(目录)、b(块设备文件)、c(字符设备文件)、"-”(普通文件)、字母"l”(链接文件)等。
第2~4个字符:表示该文件的属主用户 (User)对该文件的访问权限。
第5~7个字符:表示该文件的属组内各成员用户(Group)对该文件的访问权限。
第8~10 个字符:表示其他任何用户(other)对该文件的访问权限。
第11个字符:这里的"."与SELinux有关,目前不必关注
上述格式中,字符组合"[ugo..][+-=] [rwx]"或数字组合"nnn"的形式表示要设置的权限模式。其中,"nnn"为需要设置的具体权限值,如"755""644"等;而“[ugo ..][+-=] [rwx]"的形式中,三个组成部分的含义及用法如下所述。
"ugoa"表示该权限设置所针对的用户类别。"u"代表文件属主,"g"代表文件属组内的用户,
"o"代表其他任何用尸,“a"代表所有用户(u、g、o 的总和)。
"+-="表示设置权限的操作动作。"+"代表增加相应权限,"-"代表减少相应权限,"=”代表仅设置对应的权限。
"rwz”是权限的字符组合形式,也可以拆分使用,如"r""rx"等。|
案例:
[root@ky17 / ]# cp /bin/mkdir mymkdir
[root@localhost~]# . / mymkdir dir01
[root@localhost ~]#ls
anaconda-ks.cfg initial-setup-ks.cfg
dir01 mymkdir
[root@localhost ~]#ls -ld dir01
drwxr-xr-x 2 root root 6 5月15 00:11 diro1
[root@localhost ~]#chmod ugo-x mymkdir
[root@localhost ~]#ls -l mymkdir
-rw-r--r-- 1 root root 79768 5月15 00:09 mymkdir
[ root@localhost ~]#./ rmymkdir dir02
-bash: ./ mymkdir:权限不够
[root@localhost ~]#chmod u+x,o-r mymkdir
[ root@localhost ~]# ls -l mymkdir
-rwxr----- l root root 797685月15 00:09 mymkdir
[humj@ky17 /]$ cat mymkdir
[root@localhost ~]# chmod u+x, ar mymkdir
[root@localhost ~]# ls -l mymkdir
-rwxr----- 1 root root 79768 5月15 00:09 mymkdir
[ root@localhost ~]#chmod 755 mymkdir
[root@localhost ~]#ls -l mymkdir
-rwxr-xr-x. 1 root root 79768 Apr 18 09:38 mymkdir
ls -ld /var/ ftp/pub/
drwxr-xr-x 2 root root 6 5月15 00:20 /var/ftp/pub/
[root@localhost ~]+ chown -R ftp /var/ftp/pub/ #//修改前的属主为root
[root@localhost ~]# ls -ld /var/ftp/pub/l/修改后的属主变为ftp
drw-r--r--. 2 ftp root 6 Nov 5 15:43 /var/ftp/pub/
[root@localhost ~]#ls -ld /var/ ftp/pub/
drwxr-xr-x 2 ftp root 6 5月15 00:20 /var/ftp/pub/
如果同时设置目录和文件的属主、属组,则需要用到分隔符":"。例如,执行以下操作可将mymkdir文件的属主更改为daemon、属组更改为wheel。
[root@localhost ~].ls -ld mymkdir
-rwxr-xr-x. 1 root root 79768 Apr 18 09:38 mymkdir
[ root@localhost ~]# chown daemon : wheel mymkdir
[root@localhost ~]#ls -ld mymkdir
-rwxr-xr-x. 1 daemon wheel 79768 Apr 18 09:38 mymkdi
#权限掩码umask
[root@kgc ~]. umask 000
[root@kgc ~]#mkdir / umask1
[root@kgc ~]# ls -ld / umask1/
drwxrwXrwx 2 root root 4096 3月13 17:02 /umask1/
[root@kgc ~]fumask 022
[root@kgc ~jmkdir /umask2
[root@kgc ~jls -ld /umask2/
drwxr-xr-x 2 root root 4096 3月13 17:03 /umask2/
总结
用户账号管理(useradd、passwd、usermod、userdel)
组账号管理(groupadd、gpasswd、groupdel)
用户账号文件与组账号文件
查询账号相关信息的命令(groups、id、finger、w)
设置目录与文件权限(chmod)
设置目录与文件归属(chown)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律