账号和权限管理

账号和权限管理

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

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

三.总结

 

一.用户账号和组账号概述

1.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和GID

UID(User IDentity,用户标识号)

GID(Group IDentify,组标识号)

 

UID:即每个用户的身份标示,类似于每个人的身份证号码.

管理员组:root,o

普通组:GID

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

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

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

 

 

2.用户账号文件/etc/shadow

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

文件位置:/etc/passwd

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

 

 

保存用户的密码.账号有效期等信息

  文件位置:/etc/shadow

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

 

3.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等信息,用户完成登陆后使用的

 

4.保存用户的密码.账号有效期等信息

  文件位置:/etc/shadow (影子文件)

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

 

 

/etc/shadow 文件只有root

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

 和/etc/passwd文件一样,文件中每行代表一个用户,同样使用“:”

作为分隔符,不同之处在于,每行用户信息被划分为9个字段

第一列:账户名

第二列:存放真正加密的密码,采用SHA512散列算法,更加安全 加密原来用MD5或DES!!和*表示没有密码不能登录,新创建用户也是!!,如果密码前面显示双感叹号表示该账户被锁定了。

第三列:上一次修改密码的时间,从1970年7月1日开始算的,因为1970年是linux的诞生日,date --d “1970-01-01 18983 days”可以查看哪一天改过

第四列:多久之后才可以修改密码,如果是0,则密码可以随时修改。最小修改间隔时间,也就是说该字段规定了从第三个字段(最后一次修改密码的日期)起,多长时间之内不能修改密码,如果是0则随时修改密码,如果是10,则代表密码修改后10天之内不能再次修改密码,此字段是为了针对某些人频繁更改账号密码而设计的。

第五列:密码有效期,默认99999(273年),表示永久生效。

第六列:密码到期前的第几天发出告警信息,默认是7天,每次登录系统都会向该账户发出“修改密码”的警告信息。

第七段:密码过期的宽限天数,过期后几天还是可以登陆的,如果过了宽限天数,系统将不再让此账户登录,也不会提示账户过期,是完全禁用

比如说,此字段规定的宽限天数是10,则代表密码过期10天后失效:如果是0则代表密码过期后立即失效;如果是-1则代表密码永远不会失效。

第八列:账号失效时间,使用自1970年1月1日依赖的总天数作为账户的失效时间

第九列:保留,未使用。

 

5.Chage命令:用来修改账号和密码的有效期限,针对目前系统已经存在的用户

 Chage[选项]用户名

命令

功能

-m

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

-M

密码保持有效的最大天数。Chage -M 60 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 -l root            查看信息

 

6.添加用户账号

 Useradd 命令

  Useradd[选项]……用户名

常用选项

命令

功能

-u

指定用户的UID号,要求该UID号码未被其他用户使用

-d

指定用户的宿主目录位置(当与-M一起使用时,不生效)

-e

指定用户的账户失效时间,可使用YYYY-MM-DD的日期格式

-g

指定用户的基本组名(或使用GID号)

-G

指定用户的附加组名(或使用GID号)

-M

不建立宿主目录,即使/etc/login.defs系统配置中已设定要建立宿主目录

-s

指定用户的登录shell(-s /sbin/nologin 用户)

例:

useradd zhangsan

id zhagnsan

tail -1 /etc/passwd

tail -1 /etc/shadow

ls /home

创建一个辅助管理员账号

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

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

id admin

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

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

 

7.删除用户账号userdel

 Userdel命令

 Userdel [-r] 用户名

添加-r选项时,表示连用户的宿主目录一并删除

[root@localhost ~]# useradd stu01

[root@localhost ~]# ls -ld /homelstu01/

drwx------ 2 stu01 stu01 4096 09-09 12:38 /homelstu01/

[root@localhost ~]# userdel -r stu01  删除用户帐号stu01

[root@localhost ~]# ls -ld /homelstu01/

ls: /homelstu01/:没有那个文件或目录

当用户被删除时却显示主目录依然存在

[root@localhost ~]# useradd -u 1402 -g oinstall -G dba,asmdba oracle

useradd:警告:此主目录已经存在。

不从 skel 目录里向其中复制任何文件。

正在创建信箱文件: 文件已存在

解决:

[root@localhost ~]# userdel -rf grid

 

8.设置/更改用户口令passwd

passwd命令

passwd [选项]... 用户名

常用选项

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

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

-l:锁定用户账户

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

-u:解锁用户账户

 

passwd -d zhang

passwd -l zhang

passwd -S zhang

passwd -u zhang

 

批量添加密码

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

echo “123” | passwd --stdin zhangsan

 

9.usermod命令 修改用户账号的属性

命令

功能

-l

更改用户账号的登录名称(Login Name)

-L

锁定用户账户

-U

解锁用户账户

-u

修改用户的UID

-d

修改用户的宿主目录位置

-e

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

-g

修改用户的基本组名(或使用GID号)

-G

修改用户的附加组名(或使用GID号)

-s

指定用户的登陆shell

 

用户账号的初始配置文件

文件来源

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

主要的用户初始配置文件

~/.bash_profile

~/.bashrc

~/.bash_logout

添加一个新的用户账号后,useradd命令会在该用户的宿主目录中建立一些初始配置文件。这些文件来自于账号模板目录/etc/skel,几倍呢上都是隐藏文件,较常用的初始配置文件包括“.bash_logout”、“.bash_profile”和".bashrc"。其中,“.bash_profile”文件中的命令将在该用户每次登录时被执行;“.bashrc”文件中的命令会在每次加载“/bin/bash”程序(当然也包括登录系统)时执行;而“.bash_logout”文件中的命令将在用户每次退出登录时执行。理解这些文件的作用,可以方便我们安排一些自动运行的后套管理任务。在“.bashrc”等文件中,可以添加用户自己的设置可执行语句(如linux命令行、脚本控制语句等),以便自动完成相应的任务。

~/.bash_profile

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

.bashrc

例子中定义了路径,语言,命令别名(使用rm删除命令时总是加上-i参数需要用户确认,使用ls命令列出文件列表时加上颜色显示)。每次修改.bashrc后,使用source ~/.bashrc(或者 . ~/ .bashrc)就可以立刻加载修改后的设置,使之生效。

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

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

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

.bash_logout

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

~/ .bash_logout

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

echo "Logout,'data'"

例:

如果需要每个用户登出时都清除输入的命令历史记录,可以在/etc/skel/.bash_logout文件中添加下面这行

rm -f $HOME/.bash_history

这样,当用户每次注销时,.bash_history文件都会被删除

组账号文件

与用户账号文件相类似

/etc/group:保存组账号基本信息

/etc/gshadow:保存组账号的密码信息

[root@localhost~]#grep"adm" /etc/group

sys:3:root,bin,adm

adm:x:4:root,adm,daemon

adm:组账号名

 daemon:组成员列表

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

 

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

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

 

10.添加组账号groupadd

groupadd命令

groupadd [-g GID] 组账号名

示例

[root@localhost~]#groupadd -g 1000 market

[root@localhost~]#tail -1 /etc/group

market:x:1000:

 

11.删除组账号groupdel

groupdel命令

groupdel 组账号名

示例:

[root@localhost~]#groupdel market          #删除组账号market

[root@localhost~]#grep "market" /etc/gourp

 

查询账号信息

finger命令

查询用户账号的详细信息

finger [用户名]

 

w、who、users命令

查询已登录到主机的用户信息

w、who、users #查询已登录到主机的用户信息通常使用tty来简称各种类型的终端设备,Centos7系统,tty1表示图形界面,tty2-tty6表示文字界面,可以用Ctrl+Alt+F1-F6切换。

按ctrl+A1t+F2登陆,执行w命令,查看使用的终端就是tty2

 

 

 

User:登录用户名

TTY:登录后系统分配的终端号

From:远程主机名,即从哪登录的login@:何时登录

IDLE:用户空闲时间。这是个计时器,一旦用户执行任何操作,改计时器就会被重置。

JCPU:和终端连接的所有进程占用时间。包括当前正在运行的后台作业占用时间

PCPU:当前进程所占用时间

WHAT:当前正在运行进程的命令行

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

 

12.设置/更改组gpasswd

gpasswd命令

设置组账号密码(极少用)、添加/删除组成员

gpasswd [选项]... 组账号名

 

常用选项

命令

功能

-a

添加用户到组

-d

从组删除用户

-A

指定管理员

-M

指定组成员和-A的用途差不多

-r

删除密码

-R

限制用户登入组,只有组中的成员才可以用newgrp加入组

例:

useradd mike

gpasswd -a mike root #确认mike用户已加入root组

groups mike

 

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

1.文件/目录的权限和归属

访问权限:

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

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

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

归属(所有权)

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

  属组:拥有该文件或目录的组账户

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

[root@localhost~]#ls-l install.log

-rw-r--r-- 1  root  root  34298  04-02  00:23  install.log

文件类型、权限  属主  属组

权限项

执行

执行

执行

字符表示

r

w

x

r

w

x

r

w

x

数字表示

4

2

1

4

2

1

4

2

1

权限分配

文件所有者

 

 

文件所属组

 

 

其他用户

 

 

root用户、 root组

如"drwxr-xr-x”和"-rw-r--r--"。权限字段由四部分组成,各自的含义如下所述。

  第1个字符:表示该文件的类型,可以是 d(目录)、b(块设备文件)、c(字符设备文件)、"-”(普通文件)、字母"l”(链接文件)等。

  第2~4个字符:表示该文件的属主用户(User)对该文件的访问权限。

  第5~7个字符:表示该文件的属组内各成员用户(Group)对该文件的访问权限。

  第8~10 个字符:表示其他任何用户 (other)对该文件的访问权限。

  第11 个字符:这里的"."与 SELinux有关,目前不必关注

 

2.设置文件和目录的权限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”等。

 

3.设置文件和目录的归属chown

  chown命令

chown 属主 文件或目录

chown :属主 文件或目录

chown 属主:属主 文件或目录

 

常用选项

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

 

权限掩码umask

umask作用:

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

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

umask设置:umask 022

umask查看:umask

 

示例

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

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

[root@localhost ~] # umask 000

[root@localhost ~]# mkdir /umask1

[root@localhost ~]# ls -ld /umask1/

drwxrwxrwx 2 root root 4096 3 月13 17:02 /umask1/

[root@localhost ~] # umask 022

[root@localhost ~] # mkdir /umask2

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

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

 

三.总结

1、用户账号管理:建立账号,设置密码,锁定密码,修改模式,锁定账号,解锁账号,修改登录方式,最后删除用户

2、组账号管理:建立组账号,添加用户进入组账号,添加组账号,删除组账号

3、用户账号文件与组账号文件:用户账号文件和组账号文件放置位置passwd shadow grpup看看位置在哪 然后如何查看

4、查询账号相关信息的命令:查看组账号  查看用户 查看用户详细信息 查看远程用户终端

5、设置目录与文件权限:给用户的每个目录每个文件修改其权限 属主/属组

6、设置目录与文件归属:给整个文件和目录的归属 给他们一个大权限 比如有些权限只能张三用户查看 还有root账户可以查看 root是最高权限

1、2创建用户和组并且对他们进行操作  3、4对前面的用户和组的账号进行查看 5、6对前面的用户和组进行一个权限的修改

 

posted @   零六零一  阅读(423)  评论(0编辑  收藏  举报
编辑推荐:
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
点击右上角即可分享
微信分享提示