Linux(5)账号和权限管理

本章结构

1.管理用户账号和组账号

2.管理目录和文件的属性

1.管理用户账号和组账号

用户账号和组账号概述

Linux基于用户身份对资源访问进行控制

用户帐号

超级用户、普通用户、程序用户

组帐号

基本组(私有组)

附加组(公共组)

UID和GID

UID (User lDentity,用户标识号)

GID (Group lDentify,组标识号)

超级用户: 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, 0

普通组:GID

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

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

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

基本组:基于某种特定联系(如都需要访问FTP服务)将多个用户集合在一起,即构成一个用

户组,表示该组内所有用户的账号称为组账号。每一个用户账号至少属于一个组,这个组称为该用户的基本组(或私有组);

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

用户账号文件 /etc/passwd

保存用户名称、宿主目录、登录Shell等基本信息

文件位置: /etc/passwd

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

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 18983 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" -ul //如果不知道时间可以用date查看

-u :UTC时间

总结:

第三个字段为:密码最后一次修改的时间 ( chage -d)

第四个字段为:密码最小修改间隔时间 ( chage -m)

第五个字段为:密码的有效期 ( chage -M)

第六个字段为:密码需要变更前的警告天数 ( chage -w)

第七个字段为:密码过期后的宽限天数 ( chage -I)

第八个字段为:账号失效时间 ( chage -E)

查询 chage -l 用户名

组的分类

当一些用户需要做同一件事情的时候,把他们加到一个组中便于管理

1、基本组,一般新建用户的时候会随用户自动创建,与用户同名

2、附加组,一般一个用户可以有0个或多个附加组

一个用户只有一个基本组,可以有多个附加组

为什么会创建家目录?为什么会UID从1000开始,UID最大是多少?

是由于/etc/ login.defs这个文件中的配置决定的

添加用户账号 -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 -l /etc/passwd #查看etc下目录内的密码

tail -l /etc/ shadow #查看etc下目录内的影子

ls / home

创建一个辅助管理员账号

admin,将其基本组指定为"wheel",附加组指定为"root",宿主目录指定为"/admin"

useradd -d / admin -g wheel -G root admin

id admin

在账号管理工作中,有时候会希望在新建账号的同时指定该账号的有效期限,或者要求

新建的账号不能登录系统(如仅用于访问FTP服务),这时可分别使用"-e”和"-s"选项。例如,

执行以下操作可以创建一个名为 lisi的FTP账号(禁止终端登录),该账号将于2020-12-31失效useradd -e 2021-07-04 -s / sbin/nologin lisi

设置/更改用户口令passwd

passwd命令

passwd [选项] 账户名

常用选项

-d、-l、-S、-u、

不指定用户名时,修改当前账号的密码

-d: #清空指定用户的密码,仅使用用户名即可登录系统。

-l: #锁定用户账户。

-S: #查看用户账户的状态(是否被锁定)。

-u: #解锁用户账户。

passwd -l

passwd -s

passwd -u

passwd -d

cat /etc/passwd|grep *****(账户名) #查看账户以grep过滤

echo "123456" |passwd --stdin *****(可加入多个账号名) #以固定密码批量更改密码

修改用户账号的属性usermod

usermod命令

usermod [选项] 账号名

常用选项

-l、 -L、 -U

以下选项与useradd命令中的含义相同

-u、 -d、 -e、 -g 、 -G、 -s

usermod命令

参数

-l: 更改用户账号的登录名称(Login Name ) 。

-L: 锁定用户账户。

-U:解锁用户账户

-u: 修改用户的UID号。

usermod -u UID号 用户名

-d: 修改用户的宿主目录位置。

-e: 修改用户的账户失效时间,可使用YYYY-MM-DD 的日期格式。

-g: 修改用户的基本组名(或使用GID号)。

-G: 修改用户的附加组名(或使用GID号)。

-s: 指定用户的登录 shell。

usermod -s /sbin/nologin 用户名

usermod -s /bin/bash 用户名

删除用户账号userdel

userdel命令

userdel [-r] 用户名

用户账号的初始配置文件

文件来源

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

主要的用户初始配置文件

~/.bash_profile ##优先级高

~/.bashrc ##建议在此目录配置

~/.bash_logout ##关机自动文件

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

括".bash_logout"、".bash_profile"和".bashrc”。其中,".bash_profile"文件中的命令将在该用户每次登录时被执行:".bashrc"文件中的命令会在每次加载"/bin/Bash"程序(当然也包括登录系统)时执行;而".bash_logout"文件中的命令将在用户每次退出登录时执行。理解这些文件的作用,可以方便我们安排一些自动运行的后台管理任务。在".bashrc"等文件中,可以添加用户自己设置的可执行语句(如Linux命令行、脚本控制语句等),以便自动完成相应的任务。

如果希望为所有用户添加登录后自动运行的命令程序、自动设置变量等,可以直接修改/etc

目录下的类似文件,如/etc/bashrc文件、/etc/profile文件。例如,执行以下操作可以为所有用户自动设置myls 命令别名

vim /etc/bashrc #进入开机自启动文件

mount /dev/cdrom /mnt/ # 输入模式加入 挂载命令

source /etc/ bashrc #重新加载配置文件

.bash _profile:示例代码中为用户添加了2个环境变量(JAVA_HOMA和CLASSPATH),并修改了已有环境变量PATH的值.(PATH的查找是从前开始查找,找到就返回)

CLASSPATH环境变量的值是在JAVA运行时查找加载类的默认classpath.

.bashrc

:例子中定义了路径,语言,命令别名(使用rm删除命令时总是加上-i参数需要用户确认,使用1s命令列出文件列表时加上颜色显示)。

每次修改.bashrc后,使用source ~/ .,bashrc(或者﹒~/.bashrc)就可以立刻加载修改后的设置,使之生效。

一般会在.bash_profile文件中显式调用.bashrc。登ilinux启动bash时首先会去读取~/.bash_profile文件,这样~ / .bashrc也就得到执行了,你的个性化设置也就生效了。

关于环境变量的读取顺序:

用户登录->>加载~/.bash_profile --> bash _profile中配置了首先是使~ / .bashrc生效

3 .bash_ logout

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

~ /.bash_logout

#在当前用户登出时,打印出Logout和当前的时间

echo ”Logout,’date‘“

例子:

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

组账号文件

与组账号相关的配置文件也有两个,分别是/etc/group 和/etc/gshadow。前者用于保存-组账号名称、GID号、组成员等基本信息,后者用于保存组账号的加密密码字串等信息(但

是很少使用到)。某一个组账号包含哪些用户成员,将会在 group文件内最后一个字段中体现出来(基本组对应的用户账号默认可能不会列出),多个组成员之间使用","(逗号)分隔

grep "^root" /etc/group #//检索root组包括哪些用户

grep "root" /etc/group #//检索哪些组包括root用户

groupadd命令

groupadd [-g GID] 组账号名

groupadd -g 1200 market

tail -1 /etc/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 -M root, ***, ***,*** adm #批量将用户放入一个组,root为超级管理员 adm为组名

grep "^adm" /etc/group ###通过grep 查看adm组的信息

adm: x:4 : root, ***, *** ,*** #查询结果

删除组账号 groupdel

groupdel 命令

groupdel 组账号名

groupdel market #注:得先将组内除属组以外成员全部删除

grep "market" /etc/group

查询账号信息

groups命令

查询用户所属的组

groups [用户名]

id命令

查询用户身份标识

id [用户名]

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,后面的数字代表登录的时间顺序,越小证明登录的越早

yum install finger -y #需要yum下载,但并不常用

2.管理目录和文件的属性

文件/目录的权限和归属

访问权限

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

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

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

归属(所有权)

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

属组: 拥有该文件或目录的组帐号

查看文件/目录的权限和归属

 

设置文件和目录的权限 chmod

上述格式中,字符组合"[ugoa..][+-=][rwx]"或数字组合"nnn"的形式表示要设置的权限模式。其中,"nnn"为需要设置的具体权限值,如"755""644”"等;而“[ugoa...][+-=][rwx]"的形式中,三个组成部分的含义及用法如下所述。

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

"+-="表示设置权限的操作动作。"+"代表增加相应权限,"-"代表减少相应权限,"=”代表仅设置对应的权限。rwx”是权限的字符组合形式,也可以拆分使用,如"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 dir01

[ root@localhost ~]#chmod -R 755 mymkdir(-R 递归,重要)

[root@localhost ~]#ls -ld mymkdir

drwxr-xr-x. 1 root root 79768 Apr 18 09:38 mymkdir

设置文件和目录的归属 chown

权限掩码 umask

umask作用

控制新建的文件或者目录的权限

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

umask设置:umask 022

umask查看: umask

示例

将umask设为000,新建目录或者文件,查看权限

将umask设为022,新建目录或者文件,再查看权限

反掩码

[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 ~] # umask 022

[root@kgc ~]# mkdir /umask2

[root@kgc ~]# ls -ld / umask2/

drwxr-xr-x 2 root root 40963月13 17:03 /umask2/

本章总结

用户账号管理(useradd、passwd、usermod、userdel)

组账号管理(groupadd、gpasswd、groupdel)

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

查询账号相关信息的命令(groups、id、finger、w)

设置目录与文件权限(chmod)

设置目录与文件归属(chown)

  • 0
    点赞
  • 0
    收藏
  • 打赏
    打赏
  • 1
    评论

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

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:深蓝海洋 设计师:CSDN官方博客 返回首页
评论 1

打赏作者

wangsh315

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值