Linux账号和权限管理

2021/12/26 7:11:47

本文主要是介绍Linux账号和权限管理,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

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

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

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

管理员组:root,0

普通组:GID

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

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

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

2.组账号

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

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

例如,用户 zhangsan是技术部的员工,与部门内的其他同事同属

于基本组tech,后来因工作安排需要,公司将zhangsan加入邮件管理员组mailadm,则此时用户 zhangsan同时属于tech、mailadm组,tech组是其基本组账号,而mailadm组是其附加组账号。

对组账号设置的权限将适用于组内的每一个用户账号。

简说:

用户和组的关系

用户是员工组是职位员工可以兼职多个岗位

总有一个最重要的身份主要组合附加组主要组必须要一个组有且唯一

附加组可有可无有可以有多个

默认行为当你创建一个新用户时会自动创建一个和之同名的主组

3.用户账号文件

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

 

文件位置:/etc/passwd

root❌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等信息,用户完成登录后使用的

3.2保存用户的密码、站好有效期等信息

文件位置:/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天,每次登录系统都会向该账户发出"修改密码”的警告信息

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

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

第九列:保留,未使用

3.3修改影子文件中关于密码参数的命令chage

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

chage[选项]用户名

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

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

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

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

-d:上一次更改的日期。

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

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

4.添加用户账号 useradd

useradd命令
​
useradd 【选项】  用户名
​
添加用户账号
​
-u:指定用户的UID号,要求该UID号码未被其他用户使用。
​
-d:指定用户的宿主目录位置(当与-M一起使用时,不生效)。
​
-e:指定用户的账户失效时间,可使用YYYY-MM-DD的日期格式。
​
-g:指定用户的基本组名(或使用GID号)。
​
-G:指定用户的附加组名(或使用GID号)。
​
-M:不建立宿主目录,即使/etc/login.defs 系统配置中已设定要建立宿主目录。-s:指定用户的登录shell
[root@localhost ~]# useradd -M zhang
[root@localhost ~]# ls /home
wtb  zxc

5.删除用户账号

userdel [-r] 用户名

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

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

passwd 【选项】 用户名
​
不指定用户名时,修改当前账号的密码
​
-d:清空指定用户的密码,仅使用用户名即可登录系统。
​
-l:锁定用户账户。
​
-S:查看用户账广的状态(是否被锁定)。
​
-u:解锁用户账户。

passwd命令

扩充

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

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

免交互设置密码

echo "123" l passwd --stdin wangsh

7.usermod命令

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命令行、脚本控制语句等),以便自动完成相应的任务。

1 .bash _profile:示例代码中为用户添加了2个环境变量(JAVA_HOME和CLASSPATH),并修改了已有环境变量PATH的值. (PATH的查找是从前开始查找,找到就返画) CLASSPATH环境变量的值是在JAVA运行时查找加载类的默认classpath. 2 .bashrc:例子中定义了路径,语言,命令别名(使用rm剔除命令时总是加上:-i参数需要用户确认,使用ls命令列出文件列表时加上颜色显示) 每次修改.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文件都会被删除-

三、组账号

1.组账号文件

与用户账号文件相类似

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

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

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

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

2.groupadd命令

groupadd [-g GID] 组账号名
​
[root@localhost~]#groupadd -g 1000 market
[root@localhost~]#tail -1 /etc/group

3.删除组账号groupdel

groupdel 组账号名

4.设置/更改组gpasswd

gpasswd命令

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

gpasswd [选项]... 组账号名
常用选项:a,d,M比较常用
-a:添加用户到组
-d:从组删除用户
-A:指定管理员
-M:指定组成员和-A的用途差不多
-r:删除密码
-R:限制用户登入组,只有组中的成员才可以用newgrp加入组

5.查询账号信息

1、finger命令 #查询用户账号的详细信息

finger [用户名]

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

四、文件、目录的权限和归属

1.访问权限:

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

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

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

2.归属(所有权)

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

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

     

 

查看目录和文件的属性root用户、 root组 如 "drwxr-xr-x"和l"-rw-r--r--”。权限字段由四部分组成,各自的含义如下所述。第1个字符:表示该文件的类型,可以是d(目录)、b(块设备文件)、c(字符设备文件)、"-”(普通文件)、字母"l”(链接文件)等。

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

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

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

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

3.设置文件和目录的权限chmod

chmod命令
chmod [ugoa] [+ - =] [rwx] 文件或目录...
u、g、o、a分别表示属主、属组、其他用户、所有用户
+ - =分别表示增加、去除、设置权限
r、w、x分别表示读、写、运行权限
或
chmod nnn 文件或目录...
nnn表示三位八进制数
​
-R:递归修改指定目录下所有子项的权限

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

chown命令
​
chown 属主 文件或目录
chown :属主 文件或目录
chown 属主:属主 文件或目录
​
-R:递归修改指定目录下所有文件、子目录的归属

5.权限掩码umask

1、umask作用:

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

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

2、umask设置:umask 022

2、umask查看:umask

3、示例

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

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

五、总结

1、用户账号管理:建立账号,设置密码,锁定密码,修改模式,锁定账号,解锁账号,修改登录方式,最后删除用户 2、组账号管理:建立组账号,添加用户进入组账号,添加组账号,删除组账号 3、用户账号文件与组账号文件:用户账号文件和组账号文件放置位置passwd shadow grpup看看位置在哪 然后如何查看 4、查询账号相关信息的命令:查看组账号 查看用户 查看用户详细信息 查看远程用户终端 5、设置目录与文件权限:给用户的每个目录每个文件修改其权限 属主/属组 6、设置目录与文件归属:给整个文件和目录的归属 给他们一个大权限 比如有些权限只能张三用户查看 还有root账户可以查看 root是最高权限 1、2创建用户和组并且对他们进行操作 3、4对前面的用户和组的账号进行查看 5、6对前面的用户和组进行一个权限的修改



这篇关于Linux账号和权限管理的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程