Linux---账号与权限管理

1用户账号

  • 超级用户: root用户是Linux操作系统中默认的超级用户账号,对本主机拥有最高的权限,类似于Windows操作系统中的Administrator用户,系统中超级用户是唯一的。只有当进行系统管理、维护任务时,才建议使用root用户登录系统,日常事务处理建议只使用普通用户账号。
    root 拥有对系统的最高的管理权限 ID=0
    在这里插入图片描述
  • 普通用户:普通用户账号需要由root用户或其他管理员用户创建,拥有的权限受到一定限制,一般只在用户自己的宿主目录中拥有完整权限。
  • 程序用户:在安装Linux操作系统及部分应用程序时,会添加一些特定的低权限用户账号,这些用户一般不允许登录到系统,而仅用于维持系统或某个程序的正常运行,如bin、daemon、ftp、mail等。伪用户一般不会用来登录系统的,它主要是用于维持某个服务的正常运行。如:ftp,apache

1.1 UID和GID

  • UID(User IDentity,用户标识号):即每个用户的身份标识,类似于每个人的身份证号码。
  1. root用户账号的UID固定值0
  2. 普通用户的UID默认为:500~ 65535(centos6版本),1000~ 65535(centos7版本)
  3. 系统用户账号的UID默认为:1-499(centos6版本),1-999(centos7版本)
    在这里插入图片描述
  • GID(Group IDentify,组标识号)
    注:UID和GID都是唯一标识

1.2 用户账号文件

1.2.1 /etc/passwd

  • 文件位置:
    /etc/passwd :保存用户名称、宿主自录、登录Sell等基本信息
  • 每一行对应一个用户的账号记录
    例如:
    在这里插入图片描述
root:x:0:0:root:/root:/bin/bash详解如下:都用冒号进行的分割
  • 字段一:root:用户名,用户名仅是为了方便用户记忆。Linux系统是通过UID来识别用户身份,分配用户权限。
  • 字段二:x:表示此用户设有密码,但不是真正的密码,真正的密码保存在/etc/shadow文件Linux系统把真正的加密密码串放置在/etc/shadow文件,此文件只有root用户可以浏览和操作,最大限度地保证了密码的安全。
    补充
    x变成!!(代表没有密码),虽然”x”并不表示真正的密码,但也不能删除,如果删除了"x”,那么系统会认为这个用户没有密码,从而导致只输入用户名而不用输入密码就可以登陆(只能在使用无密码登录,远程是不可以)。
  • 字段三:0:用户账号的UID号。
  • 字段四:0:所属基本组账号的GID号
  • 字段五:root:描述性信息,此字段只是用来解释这个用户的意义而已
  • 字段六:/root:宿主目录,即该用户登录后所在的默认工作目录
    :通常称为用户的主(家)目录。例如:root主目录录为/root,普通用户odysee的主目录为/home/odysee
  • 字段七:/bin/bash登录shell信息,用户完成登录后使用的
    在这里插入图片描述

1.2.2 /etc/shadow

/etc/shadow是影子文件,/etc/shadow 文件只有root用户拥有读权限,其他用户没有任何权限,这样就保证了用户密码的安全性。和/etc/passwd文件一样,文件中每行代表一个用户,同样使用" : "作为分隔符,不同之处在于,每行用户信息被划分为9个字段了

  • 文件位置:
    /etc/shadow:保存用户的账号、密码等有效信息
  • 每一行对应一个用户的密码记录
root:$6$LOm1iAJRGPY5SRjO$GbpwoyzdV6Gqf6FX14R6vRosIqm.xHScEcGp80r5w3T19U3k.p6nH7B1YEy2LPYch.8XOF1ga3KcXOrHgKHX30::0:99999:7:::
  • 第一列:账户名
  • 第二列:存放真正加密的密码,采用SHA512散列算法,更加安全(加密方法:原来用的是MD5或DES)。!!和*表示没有密码不能登陆,新创建用户也是!!,如果密码前面显示双感叹号表示该账户被锁定了
  • 第三列:上一次修改密码的时间,从1970年1月1开始算的,因为1970年是linux的诞生日,date-d "1970-01-0 19048 days"可以查看哪一天改过
  • 第四列:最小修改间隔时间,也就是说
    该字段规定了从第三个字段(最后一次修改密码的日期)起,多长时间之内不能修改密码,如果是则随时修改密码,如果是10则代表密码修改后10天之内不能再次修改密码
  • 第五列:密码有效期,默认99999,表示永久生效
  • 第六列:密码到期前的第几天发出警告信息,默认是7天,每次登录系统都会向该账户发出"修改密码"的警告信息
  • 第七列:密码过期的宽限天数,过期后的儿天还是可以登陆的,如果过了宽限天数,系统将不再让此账户登陆,也不会提示账户过期,是完全禁用
    例如:
    此字段规定的宽限天数是10,则代表密码过期10天后失效;如果是0则代表密码过期后立即失效;如果是-1则代表密码永远不会失效
  • 第八列:账号失效时间,使用自1970年1月1日以来的总天数作为账户的失效时间
  • 第九列:保留,未使用

2 用户账号管理

2.1 修改账号和密码的有效期限–chage

用来修改帐号和密码的有效期限,针对目前系统已经存在的用户

格式:chage  [选项]  用户名
-m密码可更改的最小天数。为零时代表任何时候都可以更改密码
-M密码保持有效的最大天数。chage-M60 root
-w用户密码到期前,提前收到警告信息的天数
-E帐号到期的日期。过了这天,此帐号将不可用
-d上一次更改的日期
-i停滞时期。如果一个密码已过期这些天,那么此帐号将不可用
-l例出当前的设置。由非特权用户来确定他们的密码或帐号何时过期

2.2 添加用户账号—useradd

格式:useradd   [选项]   用户名

在这里插入图片描述
常用命令:

-u指定用户的UID号,要求该UID号码未做其他用户使用
-d指定用户的宿主目录位置(与-M一起使用时,不生效)
-e指定用户的账户失效时间,可使用YYYY-MM-DD的日期格式
-g指定用户的基本组名(或使用GID号)
-G指定用户的附加组名 (或使用GID号)
-M不建立宿主目录,即使/etc/login.defs系统配置中已设定要建立宿主目录
-s指定用户的登录Shell
案例一
[root@fyr home]# useradd -u 1010 zhangsan1   //添加名为zhangsan1,UID号为1010的普通用户
[root@localhost ~]# id test1 
uid=1010(zhangsan1) gid=1010(zhangsan1)=1010(zhangsan1)   //可以看到UID变成了1010,GID默认和UID一致

在这里插入图片描述
案例二:创建一个辅助管理员账号admin,将其基本组指定为“wheel",附加组指定为“root",宿主目录指定为“/admin"

[root@fyr home]# useradd -d /admin -g wheel -G root admin
[root@fyr home]# id admin

在这里插入图片描述
在账号管理工作中,有时候会希望在新建账号的同时指定该账号的有效期限,或者要求新建的账号不能登录系统(如仅用于访问FTP服务),这时可分别使用“-e”和“-s”选项。

举例三:执行以下操作可以创建一个名为lisi的FTP账号(禁止终端登录),该账号将于2022-2-28失效

[root@fyr home]# useradd -e 2022-2-28 -s /sbin/nologin weitb
[root@fyr home]# chage -l weitb
[root@fyr home]# cat /etc/passwd|grep weitb
[root@fyr home]# tail -1 /etc/passwd

在这里插入图片描述
案例四:不建立宿主目录

[root@fyr home]# useradd -M zhang
[root@fyr home]# ls

在这里插入图片描述

2.3 设置/更改用户口令—passwd

passwd 作为普通用户和超级权限用户都可以运行,
没有被root用户锁定,普通用户只能更改自己的用户密码;
如果root用户运行passwd ,可以设置或修改任何用户的密码

格式:passwd [选项] 用户名

常用命令:
passwd + 参数:查看账号的状态

-d清空指定用户的密码,仅使用用户名即可登录系统
-l锁定用户账户
-S查看用户账户的状态(是否被锁定)
-u解锁用户账户

例如:
在这里插入图片描述
扩充
调用管道符,给wangxh用户设置密码“123456",为了方便系统管理,passwd命令提供了–stdin选项,用于批量给用户设置初始密码。

[root@fyr ~]# useradd wangxh
[root@fyr ~]# echo "123456" |passwd --stdin wangxh

在这里插入图片描述

2.4 修改用户账号的属性—usermod

格式:usermod [选项] 用户名

常用命令

-l更改用户账号的登录名称(Login Name)
-L锁定用户账号
-U解锁用户账户
-u修改用户的UID号
-d修改用户的宿主目录位置
-e修改用户的账户失效时间,可使用YYYY-MM-DD的日期格式
-g修改用户的基本组名(或使用GID号)
-G修改用户的附加组名(或使用GID号)
-s指定用户的登录 Shell
举例一
[root@fyr ~]# usermod -L wangxh
[root@fyr ~]# passwd -S wangxh
[root@fyr ~]# usermod -U wangxh
[root@fyr ~]# usermod -l wang  wangxh
[root@fyr ~]# tail -1 /etc/passwd
[root@fyr ~]# grep "wang" /etc/passwd
wang:x:1014:1014::/home/wangxh:/bin/bash

在这里插入图片描述
举例二:用户迁移,并修改宿主目录位置

[root@fyr ~]# mv /admin /home/
[root@fyr ~]# ls /home/
[root@fyr ~]# usermod -d /home/admin admin
[root@fyr ~]# cat /etc/passwd
[root@fyr ~]# su - admin

在这里插入图片描述
遇到的问题:修改用户名命令敲完后,一直报错
usermod: user XXX is currently used by process 4427

[root@fyr ~]# usermod -d /home/admin admin
usermod: user admin is currently used by process 4427

【问题分析】
发现有一个进程一直占用着,有可能是因为当前用户是(图形化)默认登陆用户,导致无法删掉用户进程
【解决方案】
强制杀死进程,使用 kill -9

kill -9 4427

2.5 删除用户账号—userdel

格式: userdel [-r] 用户名  //结合-r可以删除宿主目录和其他用户的一些链接

例如:
在这里插入图片描述

2.6 用户账号的初始文件配置

添加一个新的用户账号后,useradd命令会在该用户的宿主目录中建立一些初始配置文件。这些文件来自于账号模板目录/etc/skel/,基本上都是隐藏文件,较常用的初始配置文件包括

  • ~/.bash_profile:文件中的命令将在该用户每次登录时被执行
  • ~/.bashrc:文件中的命令会在每次加载"/bin/Bash"程序(当然也包括登录系统)时执行
  • ~/.bash_logout:文件中的命令将在用户每次退出登录时执行

理解这些文件的作用,可以方便我们安排一些自动运行的后台管理任务。在".bashrc"等文件中,可以添加用户自己设置的可执行语句(如Linux命令行、脚本控制语句等),以便自动完成相应的任务

3 组账号

  • 基本组(私有组):基于某种特定联系(如都需要访问FTP服务)将多个用户集合在一起,即构成一个用户组,表示该组内所有用户的账号称为组账号。每一个用户账号至少属于一个组,这个组称为该用户的基本组(或私有组)
  • 附加组(公共组):若该用户同时还包含在其他的组中,则这些组称为该用户的附加组(或公共组)。
    例如
    用户zhangsan是技术部的员工,与部门内的其他同事同属于基本组tech,后来因工作安排需要,公司将zhangsan 加入邮件管理员组mailadm,则此时用户zhangsan 同时属于tech、mailadm组,tech组是其基本组账号,而mailadm组是其附加组账号。
    对组账号设置的权限将适用于组内的每一个用户账号。

3.1 组账号文件

文件位置:

/etc/group:保存组账号名称、GID号、组成员等基本信息
/etc/gshadow:保存组账号的加密密码字串等信息(但是很少使用到)
某一个组账号包含哪些用户成员,将会在group文件内最后一个字段中体现出来(基本组对应的用户账号默认可能不会列出),多个组成员之间使用","(逗号)分隔
在这里插入图片描述
例如:
在这里插入图片描述

4 组账号管理

4.1 添加组账号—groupadd

格式:groudadd [-g GID] 组账号名

例如:

[root@fyr ~]# groupadd -g 1100 market
[root@fyr ~]# tail -1 /etc/group

在这里插入图片描述

4.2 添加、设置、删除组成员—gpasswd

格式:gpasswd [选项] 组账号名

常用命令:

-a添加用户到组
-d从组删除用户
-A指定管理员
-M指定组成员和-A的用途差不多
-r删除密码
-R限制用户登入组,只有组中的成员才可以用newgrp加入该组
例如:
[root@fyr ~]# useradd mike
[root@fyr ~]# id mike
[root@fyr ~]# gpasswd -a mike root
[root@fyr ~]# groups mike
[root@fyr ~]# gpasswd -d mike root
[root@fyr ~]# groups mike
[root@fyr ~]# gpasswd -M root,mike,zhangsan adm
[root@fyr ~]# grep "^adm" /etc/group

在这里插入图片描述

4.3 删除组账号—groupdel

格式:grouddel 组账号名

例如:

[root@fyr ~]# gpasswd -M root,mike,zhangsan adm
[root@fyr ~]# grep "^adm" /etc/group
adm:x:4:root,mike,zhangsan
[root@fyr ~]# groupdel adm
groupdel:不能移除用户“adm”的主组
[root@fyr ~]# gpasswd -d root adm
正在将用户“root”从“adm”组中删除
[root@fyr ~]# gpasswd -d mike adm
正在将用户“mike”从“adm”组中删除
[root@fyr ~]# gpasswd -d zhangsan adm
正在将用户“zhangsan”从“adm”组中删除
[root@fyr ~]# grep "^adm" /etc/group
adm:x:4:
[root@fyr ~]# groupdel adm
groupdel:不能移除用户“adm”的主组

在这里插入图片描述

4.4 查询账号所属组—groups

格式:groups [用户名]

例如:

[root@fyr ~]# groups zhangsan  //查询用户账号所属组
[root@fyr ~]# id zhangsan  //查询用户账号身份标识

在这里插入图片描述

4.5 查询账号的详细信息—finger

使用前需要安装finger安装包

格式:finger [用户名]

例如:

[root@fyr ~]# mount /dev/sr0 /mnt  //先挂载
[root@fyr ~]# yum install -y finger   //使用yum安装finger
[root@fyr ~]# finger root  //查看用户信息

在这里插入图片描述

4.6 查询用户身份标识—id

格式:id  用户名

例如:

[root@fyr ~]# id zhangsan

在这里插入图片描述

4.7 查询已登录主机的用户信息—who、w、users

who 系统当前所有的登录会话
w 系统当前所有的登录会话及所做的操作
users:显示当前登录系统的所有用户

通常使用tty来简称各种类型的终端设备,Centos7系统,tty1表示图形界面,tty2-tty6表示文字界面,可以用ctrl+Alt+F1-F6切换。
按Ctrl+A1t+F2登陆,执行w命令,查看使用的终端就是tty2

在这里插入图片描述
User:登录用户名
TTY:登录后系统分配的终端号
From:远程主机名,即从哪登录的
1ogin@:何时登录
IDLE:用户空闲时间。这是个计时器,一旦用户执行任何操作,改计时器就会被重置。
JCPU:和终端连接的所有进程占用时间。包括当前正在运行的后台作业占用时间
PCPU:当前进程所占用时间
WHAT:当前正在运行进程的命令行

pts说明是用远程工具连接的,后面的数字代表登录的时间顺序,越小证明登录的越早

5 文件/目录的权限和归属

访问权限

  • 读取r:允许查看文件内容、显示目录列表
  • 写入w:允许修改文件内容,允许在目录中新建、移动、删除文件或子目录
  • 可执行x:允许运行程序、切换目录
    归属(所有权)
  • 属主:拥有该文件或目录的用户帐号
  • 属组:拥有该文件或目录的组帐号
    在这里插入图片描述
    第1个字符:表示该文件的类型,可以是d(目录)、b(块设备文件)、c(字符设备文件)、“”(普通文件)、字母“1”(链接文件)等。
    第2-4个字符:表示该文件的属主用户(User)对该文件的访问权限。
    第5-7个字符:表示该文件的属组内各成员用户(Group)对该文件的访问权限。
    第8~10个字符:表示其他任何用户(other)对该文件的访问权限。
    第11个字符:这里的"."与SELinux有关,目前不必关注
    在这里插入图片描述

5.1 设置文件和目录的权限—chmod

格式:chmod [ugoa] [+-=] [rwx] 文件或目录
     u、g、o、a分别表示属主、属组、其他用户、所有用户
     +、-、=分别表示增加、去除、设置权限
     r、w、x分别表示读、写、运行权限
 或  chmod nnn 文件或目录   //3位八进制数

例如1:

[root@fyr ~]# cp /bin/mkdir mymkdir
[root@fyr ~]# ll
[root@fyr ~]# chmod 644 mymkdir
[root@fyr ~]# ll
[root@fyr ~]# ./mymkdir dir01
[root@fyr ~]# chmod u+x,o-r mymkdir
[root@fyr ~]# ./mymkdir dir01
[root@fyr ~]# chmod 755 mymkdir
[root@fyr ~]# ll

在这里插入图片描述
例如2:递归更改权限

-R :递归修改指定目录下所有子项的权限

5.2 设置文件和目录的归属—chown

格式:
   chown  属主       文件或目录
   chown :属组       文件或目录
   chown 属主:属组   文件或目录

常用选项

-R:递归修改指定目录下所有文件、子目录的归属

在这里插入图片描述

5.3 权限掩码—umask

umask作用

  • 控制新建的文件或者目录的权限
  • 默认权限去除umask的权限为新建的文件或者目录的权限
    umask设置:umask 022
    umask查看:umask
    示例
  • 将umask设为000,新建目录或者文件,查看权限
  • 将umask设为022,新建目录或者文件,再查看权限
    在这里插入图片描述

6 总结

  • 用户账号管理(useradd、passwd、usermod、userdel)
  • 组账号管理(groupadd、gpasswd、groupdel)
  • 用户账号文件与组账号文件
  • 查询账号相关信息的命令(groups、id、finger、(w)
  • 设置目录与文件权限(chmod)
  • 设置目录与文件归属(chown)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值