账号管理和权限管理


前言

我们知道,任何操作系统都存在 “用户的概念” ,Linux 也不例外。


一、用户

Linux系统是一个多用户多任务的分时操作系统,任何一个要使用系统资源的用户,都必须首先向系统管理员申请一个账号,然后以这个账号的身份进入系统。

用户的账号一方面可以帮助系统管理员对使用系统的用户进行跟踪,并控制他们对系统资源的访问;另一方面也可以帮助用户组织文件,并为用户提供安全性保护。

每个用户账号都拥有一个唯一的用户名和各自的口令。

用户在登录时键入正确的用户名和口令后,就能够进入系统和自己的主目录。

实现用户账号的管理,要完成的工作主要有如下几个方面:

用户账号的添加、删除与修改。
用户口令的管理。
用户组的管理。

二、用户账号文件

用户账户和组账户

用户账号和组账号概述

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

组账号

基本组
基于某种特定联系(如都需要访问FTP服务)将多个用户集合在一起,即构成一个用户组,表示该组内所有用户的账号称为组账号。每一个用户账号至少属于一个组,这个组称为该用户的基本组(或私有组):

附加组
若该用户同时还包含在其他的组中,则这些组称为该用户的附加组(或公共组)。

UID:即每个用户的身份标示,类似于每个人的身份证号码. 管理员组:root, 0 普通组:GID

系统组:1-499 ( centos6) , 1-999 (CENTOS7)

普通组:500+ ( Centos6) , 1000+ (CENTOS7)

表示该账户需要密码才能登录,为空时,账户无须密码即可登录组账号

UID和GID

UID(User IDentity,用户标识号)

GID(Group IDentify,组标识号)

用户账号文件

用户账号文件夹

/etc/passwd:保存文件名称、宿主目录、登录shell等基本信息
/etc/shadow:保存用户的密码、账号有效期等信息

用户账号文件/etc/passwd
保存文件名称、宿主目录、登录shell等基本信息
文件位置:etc/passwd

每一行对应一个用户的账号记录:

[root@localhost ~]# head -2 /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
root:x:0:0:root:/root:/bin/bash
root:用户账号
x:密码占位符 x表示无密码
第一个0:用户账号ID
第二个0:组账号ID
第一个root:用户说明
第二个root:宿主目录
/bin/bash:登录shell
这里的每个字符不代表实际操作上就是这个字符  x、0和root只是替代

在这里插入图片描述

root:x:0:0:root:/root:/bin/bash详解如下:

(1)root:用户名,用户名仅是为了方便用户记忆。Linux系统是通过UID来识别用户身份,分配用户权限。
(2)x:表示此用户设有密码,但不是真正的密码,真正的密码保存在/etc/shadow文件
(3)Linux系统把真正的加密密码串放置在/etc/shadow文件中,此文件只有root用户可以浏览和操作,最大限度地保证了密码的安全。
(4)补充:注意! ! !,虽然"x"并不表示真正的密码,但也不能删除,如果删除了"x",那么系统会认为这个用户没有密码,从而导致只输入用户名而不用输入密码就可以登陆(只能在使用无密码登录,远程是不可以)。
(5)0:用户账号的UID 号。
(6)0:所属基本组账号的GID号
(7)root:描述性信息,此字段只是用来解释这个用户的意义而已
(8)/root:宿主目录,即该用户登录后所在的默认工作目录
(9)注:通常称为用户的主(家)目录。例如: root主目录为/root,普通用户odysee的主目录为/home/odysee/bin/bash录 shell等信息,用户完成登录后使用的

用户账号文件/etc/shadow(影子文件)

保存用户的密码、账号有效期等信息
文件位置:/etc/shadow

每一行对应一个用户的的密码记录

[root@localhost <sub>]# head -2 /etc/shadow
root:$1$55HB4pbx$acHqk4IZiHTZ9cwOZJe8f0:14374:0:99999:7:::
bin:*:14374:0:99999:7:::
[root@localhost </sub>]# tail -1 /etc/shadow
teacher:$1$BT7teaYX$s2sr6uFUwKhtU.8/8VpzB1:14374:0:99999:7:::

/etc/shadow文件只有root

用户拥有读权限,其他用户没有任何权限,这样就保证了用户密码的安全性

和/etc/passwd文件一样,文件中每行代表一个用户,同样使用“:”作为分隔符,不用之处在于,每行用户信息被划分为9个字段

用户信息9段

(1)第一列:账户名
(2)第二列:存在真正加密的密码,采用SHA512散列算法,更加安全,加密原来用MD5或DES !!和**表示没有密码泵登录,新创建用户也是!!,如果密码前面显示双感叹号表示账户被锁定了
(3)第三列:上一次修改密码的时间,从1970年1月1日开始算的,应为1970年时linux诞生日,date -d “1970-01-01 18983 days”可以查看那一天改过
(4)第四列:多久之后才可以修改密码,如果是0,则密码可以随时修改 最小修改时间,也就是说该字段规定了从第三个字段(最后一次修改密码的日期)起,此字段是为了针对某些人频繁更改账号密码而设计的
(5)第五列:密码有效期,默认99999(273年),表示永久生效
(6)第六列:密码到期前的第几天发出告警信息,默认是7天,每次登录系统都会向该账户发出“修改密码”的告警信息
(7)第七列:密码过期的宽限天数,过期后的几天还是可以登录的,如果过了宽限天数,系统将不再让此账户登录,也不是提示账户过期,是完全禁用 比如说,此字段规定的宽限天数是10,则代表密码过期10天后失效;如果是0 则代表密码过期后立即失效;如果是-1 则代表密码永远不会失效
(8)第八列:账号失效时间,使用自1970年1月1日以来的总天数作为账户失效时间
(9)第九列:保留,未使用

chage命令:

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

chage [选项]用户名,

-m: 密码可更改的最小天数。为零时代表任何时候都可以更改密码

-M: 密码保持有效的最大天数。chage -M 60 root

-w: 用户密码到期前,提前收到警告信息的天数

-E: 帐号到期的日期。过了这天,此帐号将不可用

-d: 上一次更改的日期

-i:停滞时期。如果一个密码已过期这些天,那么此帐号将不可用

-l:例出当前的设置。由非特权用户来确定他们的密码或帐号何时过期

chage -E 2019-04-29 test
###其中,test为用户,用户将在2019429日失效(不可登录)

chage -d 2019-06-30 test
###设置test用户最后一次修改密码的日期为2019630日

chage -d 0 test
###则代表该test用户需立即修改密码

date -d”+45 days" -u 
###如果不知道时间可以用date查看 -u: UTC时间

用户账户管理

添加用户账号 useradd

命令格式:
useradd [选项] 用户名

常用选项
-u: 指定用户的UID号,要求该UID号码未被其他用户使用
-d: 指定用户的宿主目录位置(当与-M一起使用时,不生效)
-e: 指定用户的账户失效时间,可使用YYYY-MM-DD的日期格式
-g: 指定用户的基本组名(或使用GID号)
-G: 指定用户的附加组名(或使用GID号)
-M: 不建立宿主目录,即使/etc/login.defs系统配置中已设定要建立宿主目录
-s: 指定用户的登录Shell

useradd zhangsan
id zhangsan

tail -1 /etc/passwd
tail -1 /etc/ shadow

设置/更改用户口令 passwd

命令格式:
passwd [选项] 用户名

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

echo  "123456" | passwd --stdin 用户名(zhangsan)
###调用管道符,给zhangsan 用户设置密码“123”,为了方便管理系统,passwd命令提供了 --stdin 选项 用于批量给用户设置初始密码

修改用户账号的属性 usermod

命令格式:
usermod [选项] 用户名

常用选项
-l: 更改用户账号的登录名称(login Name)
-L:锁定用户账户
-U:解锁用户账户

下列选项与useradd命令选项中的含义相同
-u:修改用户的UID号
-d:修改用户的宿主目录位置
-e: 修改用户的账户失效时间,可使用YYYY-MM-DD的日期格式
-g: 修改用户的基本组名(或使用GID号)
-G:修改用户的附加组名(或使用GID号)
-s:指定用户的登录shell

删除用户账号 userdel

命令格式:
userdel [-r] 用户名
添加 -r 选项时 ,表示连用户的宿主目录也一并删除

id  zhangsan
userdel -r zhangsan
ls -ld /home/zhangsan

组账号管理

添加组账号 groupadd

命令格式:
groupadd [-g GID] 组账号名

groupadd   -g 1200 market

tail -1 /etc/group

添加删除组成员 gpasswd

命令格式:
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”组中删除

删除组账号 groupdel

命令格式:
groupdel 组账号名

groupdelb market   ###删除组账号market
grep "market" /etc/group

用户账号文件与组账号文件

用户账号的初始配置文件

文件来源

新建用户账号时,从/etc/skel目录中复制而来

*主要的用户初始配置文件

  1. .bash_profile:
    示例代码中为用户添加了2个环境变量(JAVA_HOME和CLASSPATH)并修改了已有环境变量PATH的值.(PATH的查找是从前开始查找,找到就返回)CLASSPATH环境变量的值是在JAVA运行时查找加载类的默认classpath

  2. .bashrc:
    例子中定义了路径,语言,命令别名(使用rm删除命令时总是加上-i参数需要用户确认,使用rm删除命令时总是加上-i参数需要用户确认,使用ls命令列出文件列表时加上颜色显示)每次修改.bashrc 后,使用source ~/.bashrc(或者 . ~/.bashrc)就可以立刻加载修改后的位置,使之生效
    一般会在.bashrc_profile 文件中显示调用.bashrc 登录Linux启动bash时会先去读取"~/.bash_profile " 文件,这样"~/.bashrc"也就得到执行了,你的个性化设置也就生效了 关于环境变量的读取顺序:
    用户登录->>加载~/.bash_profile–>bash_profile中配置了首先使 ~/.bashrc生效

  3. .bash_logout 用途:用户登出时执行的命令

    #~/.bash_logout
    #在当前用户登出时,打印出logout 和当前的时间 echo “logout,data”
    

    例子: 如果需要每个用户登出时都清楚输入的命令历史记录,可以在 /etc/skel/.bash_logout 文件中 添加:
    rm -f $HOME/.bash_history
    这样当用户在每次注销时.bash_history文件都会被删除

组账号文件

与用户文件相类似
/etc/group 保存组账号基本信息
/etc/gshadow 保存组账号的密码信息

与组账号相关的配置文件也有两个,分是/etc/group和/etc/gshadow 前者用于保存 组账号名称、GID号 、组成员等基本信息 后者用于保存组账号的加密密码字窜等信息(但是很少用到)某一个组账号包含哪些用户成员,将会在group文件内最后一个字段中体现出来(基本组对应从用户账号默认可能不会列出),多个组成员之间使用“,”(逗号)分隔

grep “^root” /etc/group ### 检索root 组包括那些用户

grep “root” /etc/group ### 检索那些组包括root用户

查询账号相关信息的命令

查询账号信息 groups

groups 命令:

查询用户所属的组

groups [用户名]

查询账号信息 id

id 命令:

查询用户身份标识

id [用户名]

查询账号信息 finger

finger 命令:

查询用户账号的详细信息

finger [用户名]

查询账号信息w、who、users

w、who、users命令
查询已登录到主机的用户信息

通常使用tty来简称各种类型的终端设备,centos7系统 tty1表示图形界面,
tty2-tty6表示文字界面,可以用Ctrl+Alt+F1-F6 切换

按Ctrl+Alt+F2登录 , 执行w命令 ,查看使用的终端就是 tty2

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

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

文件/目录的权限和归属

访问权限

读取r:允许查看文件内容、显示目录列表

写入W:允许修改文件内容,允许在目录中新建、移动、删除文件或子目录

可执行x:允许运行程序、切换目录

归属

属主:拥有该文件或目录的用户帐号

属组:拥有该文件或目录的组帐号
在这里插入图片描述
如“drwxr-xr-x”和“-rw-r–r–”权限字段有四部分组成,各自的含义如下所述
第一个字符:表示该文件的类型可以是 :d(目录)、b(块设备文件)、c(字符设备文件)
“-”(普通文件)、字母“l”(链接文件)等
第2~4个字符:表示该文件的属主用户(User)对该文件的访问权限
第5~7个字符:表示该文件的属组内各成员用户(Group)对该文件的访问权限
第8~10个字符:表示其他任何用户(Other)对该文件的访问权限
第11个字符:这里的“.”与SELinux有关,目前不必关注

设置目录与文件权限chmod

chmod命令

chmod [ugoa] [+ - =] [rwx] 文件或目录...u、g、o、a分别表示属主、属组、其他用户、所有用户+ - =分别表示增加、去除、设置权限r、w、x分别表示读、写、运行权限

chmod nnn 文件或目录...nnn表示三位八进制数

常用选项

-R:递归修改指定目录下所有子项的权限
  • 上述格式中,字符组合"[ugoa…] [±=] [rwx ]"或数字组合"nnn"的形式表示要设置的权限模式。其中,"nnn"为需要设置的具体权限值,如"755""644”等;而“[ugoa…] [±=] [rwx]"的形式中,三个组成部分的含义及用法如下所述。

  • "ugoa"表示该权限设置所针对的用户类别。"u"代表文件属主,"g"代表文件属组内的用户,"o"代表其他任何用户,"a"代表所有用户 (u、g、o 的总和)。

  • "±=“表示设置权限的操作动作。”+“代表增加相应权限,”-“代表减少相应权限,”=”代表仅设置对应的权限。

  • “rwx"是权限的字符组合形式,也可以拆分使用,如"r”"rx”等。

设置文件和目录的归属chown

1、chown命令

chown 属主 文件或目录chown :属主 文件或目录chown 属主:属主 文件或目录

2、常用选项

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

权限掩码umask

1、umask作用:

  • 控制新建的文件或者目录的权限
  • 默认权限去除umask的权限为新建的文件或者目录的权限

2、umask设置:umask 022 2、umask查看:umask 3、示例

  • 将umask设为000,新建目录或者文件,查看权限
  • 将umask设为022,新建目录或者文件,再查看权限
[root@localhost <sub>] # umask 000[root@localhost </sub>]# mkdir /umask1
[root@localhost <sub>]# ls -ld /umask1/drwxrwxrwx 2 root root 4096 313 17:02 /umask1/
[root@localhost </sub>] # umask 022[root@localhost <sub>] # mkdir /umask2
[root@localhost </sub>]# ls -ld / umask2/drwxr-xr-x 2 root root 4096313 17:03 /umask2/

总结

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值