Linux友人帐之账号用户管理-CSDN博客

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6

一、账号管理

1.1简介

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

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

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

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

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

  • 用户账号的添加、删除与修改。

  • 用户口令的管理。

  • 用户组的管理。

1.2用户账号的管理

用户账号的管理工作主要涉及到用户账号的添加、修改和删除。

添加用户账号就是在系统中创建一个新账号然后为新账号分配用户号、用户组、主目录和登录Shell等资源。

添加账号 useradd

useradd 选项 用户名

参数说明

  • 选项 :

    • -c comment 指定一段注释性描述。

    • -d 目录 指定用户主目录如果此目录不存在则同时使用-m选项可以创建主目录。

    • -g 用户组 指定用户所属的用户组。

    • -G 用户组用户组 指定用户所属的附加组。

    • -m 使用者目录如不存在则自动建立。

    • -s Shell文件 指定用户的登录Shell。

    • -u 用户号 指定用户的用户号如果同时有-o选项则可以重复使用其他用户的标识号。

  • 用户名 :

    • 指定新账号的登录名。

# 此命令创建了一个用户kuangshen其中-m选项用来为登录名kuangshen产生一个主目录 /home/kuangshen
[root@kuangshen home]# useradd -m kuangshen

 增加用户账号就是在/etc/passwd文件中为新用户增加一条记录同时更新其他系统文件如/etc/shadow, /etc/group等。

删除帐号  userdel

如果一个用户的账号不再使用可以从系统中删除。

删除用户账号就是要将/etc/passwd等系统文件中的该用户记录删除必要时还删除用户的主目录。

删除一个已有的用户账号使用userdel命令其格式如下

userdel 选项 用户名

常用的选项是 -r它的作用是把用户的主目录一起删除。

[root@kuangshen home]# userdel -r kuangshen

此命令删除用户kuangshen在系统文件中主要是/etc/passwd, /etc/shadow, /etc/group等的记录同时删除用户的主目录。

 修改帐号usermod

修改用户账号就是根据实际情况更改用户的有关属性如用户号、主目录、用户组、登录Shell等。

修改已有用户的信息使用usermod命令其格式如下

usermod 选项 用户名

常用的选项包括-c, -d, -m, -g, -G, -s, -u以及-o等这些选项的意义与useradd命令中的选项一样可以为用户指定新的资源值。

例如

# usermod -s /bin/ksh -d /home/z –g developer kuangshen

此命令将用户kuangshen的登录Shell修改为ksh主目录改为/home/z用户组改为developer。

切换用户 

1.切换用户的命令为su username 【username是你的用户名哦】

2.从普通用户切换到root用户还可以使用命令sudo su

3.在终端输入exit或logout或使用快捷方式ctrl+d可以退回到原来用户其实ctrl+d也是执行的exit命令

4.在切换用户时如果想在切换用户之后使用新用户的工作环境可以在su和username之间加-例如【su - root】

$表示普通用户

#表示超级用户也就是root用户

 sudo命令

 

用户的密码设置问题 

我们一般通过root创建用户的时候要配置密码
LinuX上输入密码是不会显示的你正常输入就可以了并不是系统的问题

用户口令的管理

用户管理的一项重要内容是用户口令的管理。用户账号刚创建时没有口令但是被系统锁定无法使用必须为其指定口令后才可以使用即使是指定空口令。

指定和修改用户口令的Shell命令是passwd。超级用户可以为自己和其他用户指定口令普通用户只能用它修改自己的口令。

命令的格式为

passwd 选项 用户名

可使用的选项

  • -l 锁定口令即禁用账号。

  • -u 口令解锁。

  • -d 使账号无口令。

  • -f 强迫用户下次登录时修改口令。

如果默认用户名则修改当前用户的口令。

例如假设当前用户是kuangshen则下面的命令修改该用户自己的口令

$ passwd
Old password:******
New password:*******
Re-enter new password:*******

如果是超级用户可以用下列形式指定任何用户的口令

# passwd kuangshen
New password:*******
Re-enter new password:*******

普通用户修改自己的口令时passwd命令会先询问原口令验证后再要求用户输入两遍新口令如果两次输入的口令一致则将这个口令指定给用户而超级用户为用户指定口令时就不需要知道原口令。

为了系统安全起见用户应该选择比较复杂的口令例如最好使用8位长的口令口令中包含有大写、小写字母和数字并且应该与姓名、生日等不相同。

为用户指定空口令时执行下列形式的命令

# passwd -d kuangshen

此命令将用户 kuangshen的口令删除这样用户 kuangshen下一次登录时系统就不再允许该用户登录了。

passwd 命令还可以用 -l(lock) 选项锁定某一用户使其不能登录例如

# passwd -l kuangshen

1.3用户组管理

每个用户都有一个用户组系统可以对一个用户组中的所有用户进行集中管理。不同Linux 系统对用户组的规定有所不同如Linux下的用户属于与它同名的用户组这个用户组在创建用户时同时创建。

用户组的管理涉及用户组的添加、删除和修改。组的增加、删除和修改实际上就对/etc/group文件的更新。

 增加一个新的用户组

groupadd 选项 用户组

可以使用的选项有

  • -g GID 指定新用户组的组标识号GID。

  • -o 一般与-g选项同时使用表示新用户组的GID可以与系统已有用户组的GID相同。

实例1

# groupadd group1

此命令向系统中增加了一个新组group1新组的组标识号是在当前已有的最大组标识号的基础上加1。

实例2

# groupadd -g 101 group2

此命令向系统中增加了一个新组group2同时指定新组的组标识号是101。

删除一个已有的用户组

如果要删除一个已有的用户组使用groupdel命令

groupdel 用户组

例如

# groupdel group1

此命令从系统中删除组group1。

 修改用户组的属性

groupmod 选项 用户组

常用的选项有

  • -g GID 为用户组指定新的组标识号。

  • -o 与-g选项同时使用用户组的新GID可以与系统已有用户组的GID相同。

  • -n新用户组 将用户组的名字改为新名字

    # 此命令将组group2的组标识号修改为102。
    groupmod -g 102 group2
    
    # 将组group2的标识号改为10000组名修改为group3。
    groupmod –g 10000 -n group3 group2
    

1.4linux主机上的用户信息查询

w命令

linux w命令是一个用于显示当前登录系统的用户信息和他们正在执行的程序的命令。它也可以显示系统运行时间当前系统时间和系统平均负载情况

linux w命令的基本语法格式是

w [选项] [用户名称]

常用的选项有

-f 开启或关闭显示用户从何处登录系统1。
-h 不显示各栏位的标题信息列1。
-l 使用详细格式列表这是默认值1。
-s 使用简洁格式列表不显示用户登录时间终端机阶段作业和程序所耗费的CPU时间1。
-u 忽略执行程序的名称以及该程序耗费CPU时间的信息1。
-V 显示版本信息

who命令

linux who命令是一个用于显示当前登录到系统中的用户信息的命令。它显示用户的登录名用户登录的终端用户登录的时间以及远程主机名如果有

linux who命令的基本语法格式是

who [选项]... [ 文件 | ARG1 ARG2 ]

常用的选项有

-a 显示所有用户信息包括死进程和系统启动时间。
-b 显示最后一次系统启动的时间。
-d 显示死进程已终止但未从utmp文件中删除的进程。
-H 显示标题行。
-l 显示长格式的登录进程。
-m 只显示在ARG1 ARG2指定的终端上登录的用户的名字和行。
-q 显示已登录用户的数量。
-u 显示拥有未脱离进程的用户的信息。
-w 显示已经登录的用户信息格式与utmp文件相同

last命令

linux last命令是一个用于显示用户最近登录信息的命令。它读取位于/var/log目录下名称为wtmp的文件并把该文件记录的登录系统或终端的用户名单全部显示出来。记录按照时间的反向顺序打印从最近的记录开始 

linux last命令的基本语法格式是

last [选项] [用户名] [终端]

常用的选项有

-a 把从何处登入系统的主机名称或IP地址显示在最后一行。
-d 将IP地址转换成主机名称。
-f <记录文件> 指定记录文件而不是默认的/var/log/wtmp。
-n <显示行数> 或 -<显示行数> 设置列出名单的显示行数。
-R 不显示登入系统的主机名称或IP地址。
-x 显示系统关机重新开机以及执行等级的改变等信息。
如果不带任何选项或参数运行last命令会显示所有用户的登录名、终端、登录时间、登出时间和会话时长。如果指定一个或多个用户名或终端作为参数只会显示给定用户或终端的信息

 lastlog命令

linux lastlog命令是一个用于显示系统中所有用户最近一次登录信息的命令。它读取位于/var/log目录下名称为wtmp的文件并把该文件记录的登录系统或终端的用户名单全部显示出来。记录按照时间的反向顺序打印从最近的记录开始

linux lastlog命令的基本语法格式是

lastlog [选项] [用户名] [终端]

常用的选项有

-b <天数> 显示指定天数前的登录信息。
-t <天数> 显示指定天数以来的登录信息。
-u <用户名> 显示指定用户的最近登录信息。
-h 显示帮助信息

1.5文件解析

完成用户管理的工作有许多种方法但是每一种方法实际上都是对有关的系统文件进行修改。

与用户和用户组相关的信息都存放在一些系统文件中这些文件包括/etc/passwd, /etc/shadow, /etc/group等。

/etc/passwd

/etc/passwd文件是用户管理工作涉及的最重要的一个文件。

Linux系统中的每个用户都在/etc/passwd文件中有一个对应的记录行它记录了这个用户的一些基本属性。

这个文件对所有用户都是可读的。它的内容类似下面的例子

 cat /etc/passwd

root:x:0:0:Superuser:/:
daemon:x:1:1:System daemons:/etc:
bin:x:2:2:Owner of system commands:/bin:
sys:x:3:3:Owner of system files:/usr/sys:
adm:x:4:4:System accounting:/usr/adm:
uucp:x:5:5:UUCP administrator:/usr/lib/uucp:
auth:x:7:21:Authentication administrator:/tcb/files/auth:
cron:x:9:16:Cron daemon:/usr/spool/cron:
listen:x:37:4:Network daemon:/usr/net/nls:
lp:x:71:18:Printer administrator:/usr/spool/lp:

从上面的例子我们可以看到/etc/passwd中一行记录对应着一个用户每行记录又被冒号(:)分隔为7个字段其格式和具体含义如下

用户名:口令(x不可见):用户标识号:组标识号:注释性描述:主目录:登录Shell

1"用户名"是代表用户账号的字符串。

通常长度不超过8个字符并且由大小写字母和/或数字组成。登录名中不能有冒号(:)因为冒号在这里是分隔符。

为了兼容起见登录名中最好不要包含点字符(.)并且不使用连字符(-)和加号(+)打头。

2“口令”一些系统中存放着加密后的用户口令字。

虽然这个字段存放的只是用户口令的加密串不是明文但是由于/etc/passwd文件对所有用户都可读所以这仍是一个安全隐患。因此现在许多Linux 系统如SVR4都使用了shadow技术把真正的加密后的用户口令字存放到/etc/shadow文件中而在/etc/passwd文件的口令字段中只存放一个特殊的字符例如“x”或者“*”

3“用户标识号”是一个整数系统内部用它来标识用户。

一般情况下它与用户名是一一对应的。如果几个用户名对应的用户标识号是一样的系统内部将把它们视为同一个用户但是它们可以有不同的口令、不同的主目录以及不同的登录Shell等。

通常用户标识号的取值范围是065 535。0是超级用户root的标识号199由系统保留作为管理账号普通用户的标识号从100开始。在Linux系统中这个界限是500。

4“组标识号”字段记录的是用户所属的用户组。

它对应着/etc/group文件中的一条记录。

5)“注释性描述”字段记录着用户的一些个人情况。

例如用户的真实姓名、电话、地址等这个字段并没有什么实际的用途。在不同的Linux 系统中这个字段的格式并没有统一。在许多Linux系统中这个字段存放的是一段任意的注释性描述文字用作finger命令的输出。

6)“主目录”也就是用户的起始工作目录。

它是用户在登录到系统之后所处的目录。在大多数系统中各用户的主目录都被组织在同一个特定的目录下而用户主目录的名称就是该用户的登录名。各用户对自己的主目录有读、写、执行搜索权限其他用户对此目录的访问权限则根据具体情况设置。

7)用户登录后要启动一个进程负责将用户的操作传给内核这个进程是用户登录到系统后运行的命令解释器或某个特定的程序即Shell。

Shell是用户与Linux系统之间的接口。Linux的Shell有许多种每种都有不同的特点。常用的有sh(Bourne Shell), csh(C Shell), ksh(Korn Shell), tcsh(TENEX/TOPS-20 type C Shell), bash(Bourne Again Shell)等。

系统管理员可以根据系统情况和用户习惯为用户指定某个Shell。如果不指定Shell那么系统使用sh为默认的登录Shell即这个字段的值为/bin/sh。

用户的登录Shell也可以指定为某个特定的程序此程序不是一个命令解释器。

利用这一特点我们可以限制用户只能运行指定的应用程序在该应用程序运行结束后用户就自动退出了系统。有些Linux 系统要求只有那些在系统中登记了的程序才能出现在这个字段中。

/etc/shadow

1、除了上面列出的伪用户外还有许多标准的伪用户例如audit, cron, mail, usenet等它们也都各自为相关的进程和文件所需要。

由于/etc/passwd文件是所有用户都可读的如果用户的密码太简单或规律比较明显的话一台普通的计算机就能够很容易地将它破解因此对安全性要求较高的Linux系统都把加密后的口令字分离出来单独存放在一个文件中这个文件是/etc/shadow文件。有超级用户才拥有该文件读权限这就保证了用户密码的安全性。

2、/etc/shadow中的记录行与/etc/passwd中的一一对应它由pwconv命令根据/etc/passwd中的数据自动产生

它的文件格式与/etc/passwd类似由若干个字段组成字段之间用":"隔开。这些字段是

登录名:加密口令:最后一次修改时间:最小时间间隔:最大时间间隔:警告时间:不活动时间:失效时间:标志
  1. "登录名"是与/etc/passwd文件中的登录名相一致的用户账号

  2. "口令"字段存放的是加密后的用户口令字长度为13个字符。如果为空则对应用户没有口令登录时不需要口令如果含有不属于集合 { ./0-9A-Za-z }中的字符则对应的用户不能登录。

  3. "最后一次修改时间"表示的是从某个时刻起到用户最后一次修改口令时的天数。时间起点对不同的系统可能不一样。例如在SCO Linux 中这个时间起点是1970年1月1日。

  4. "最小时间间隔"指的是两次修改口令之间所需的最小天数。

  5. "最大时间间隔"指的是口令保持有效的最大天数。

  6. "警告时间"字段表示的是从系统开始警告用户到用户密码正式失效之间的天数。

  7. "不活动时间"表示的是用户没有登录活动但账号仍能保持有效的最大天数。

  8. "失效时间"字段给出的是一个绝对的天数如果使用了这个字段那么就给出相应账号的生存期。期满后该账号就不再是一个合法的账号也就不能再用来登录了。

/etc/group

用户组的所有信息都存放在/etc/group文件中。

将用户分组是Linux 系统中对用户进行管理及控制访问权限的一种手段。

每个用户都属于某个用户组一个组中可以有多个用户一个用户也可以属于不同的组。

当一个用户同时是多个组中的成员时在/etc/passwd文件中记录的是用户所属的主组也就是登录时所属的默认组而其他组称为附加组。

用户要访问属于附加组的文件时必须首先使用newgrp命令使自己成为所要访问的组中的成员。

用户组的所有信息都存放在/etc/group文件中。此文件的格式也类似于/etc/passwd文件由冒号(:)隔开若干个字段这些字段有

组名:口令:组标识号:组内用户列表
  1. "组名"是用户组的名称由字母或数字构成。与/etc/passwd中的登录名一样组名不应重复。

  2. "口令"字段存放的是用户组加密后的口令字。一般Linux 系统的用户组都没有口令即这个字段一般为空或者是*。

  3. "组标识号"与用户标识号类似也是一个整数被系统内部用来标识组。

  4. "组内用户列表"是属于这个组的所有用户的列表/b]不同用户之间用逗号(,)分隔。这个用户组可能是用户的主组也可能是附加组。

/etc/sudoers
 

 visudo命令

visudo命令是一个用于管理Linux系统中的sudoers文件的命令。sudoers文件用于控制哪些用户可以执行特定的命令以及控制它们执行命令的方式。使用visudo命令打开sudoers文件可以保证sudoers文件在编辑时保持锁定状态防止多个用户同时编辑造成冲突。visudo命令还会在保存修改前检查sudoers文件的语法错误避免导致sudo命令无法使用

visudo命令的基本语法格式是

visudo [选项]

常用的选项有

-c 启用检查模式只检查sudoers文件的语法错误所有者和模式不进行编辑。
-q 启用安静模式不显示错误信息。
-s 启用严格模式如果sudoers文件有语法错误不允许保存。
-f 指定要编辑的sudoers文件的位置而不是默认的/etc/sudoers。
visudo命令默认使用vi编辑器来编辑sudoers文件但也可以通过设置VISUAL或EDITOR环境变量来指定其他编辑器

二、磁盘管理

2.1概述

Linux磁盘管理好坏直接关系到整个系统的性能问题。

Linux磁盘管理常用命令为 df、du。

  • df 列出文件系统的整体磁盘使用量

  • du检查磁盘空间使用量

2.2df命令

df命令参数功能检查文件系统的磁盘空间占用情况。可以利用该命令来获取硬盘被占用了多少空间目前还剩下多少空间等信息。

语法

df [-ahikHTm] [目录或文件名]

选项与参数

  • -a 列出所有的文件系统包括系统特有的 /proc 等文件系统

  • -k 以 KBytes 的容量显示各文件系统

  • -m 以 MBytes 的容量显示各文件系统

  • -h 以人们较易阅读的 GBytes, MBytes, KBytes 等格式自行显示

  • -H 以 M=1000K 取代 M=1024K 的进位方式

  • -T 显示文件系统类型, 连同该 partition 的 filesystem 名称 (例如 ext3) 也列出

  • -i 不用硬盘容量而以 inode 的数量来显示

# 将 /etc 底下的可用的磁盘容量以易读的容量格式显示

[root@kuangshen /]# df -h /etc
Filesystem     Size Used Avail Use% Mounted on
/dev/vda1       40G  6.3G   32G  17% /

 2.3du命令

Linux du命令也是查看使用空间的但是与df命令不同的是Linux du命令是对文件和目录磁盘使用的空间的查看还是和df命令有一些区别的这里介绍Linux du命令。

语法

du [-ahskm] 文件或目录名称

选项与参数

  • -a 列出所有的文件与目录容量因为默认仅统计目录底下的文件量而已。

  • -h 以人们较易读的容量格式 (G/M) 显示

  • -s 列出总量而已而不列出每个各别的目录占用容量

  • -S 不包括子目录下的总计与 -s 有点差别。

  • -k 以 KBytes 列出容量显示

  • -m 以 MBytes 列出容量显示

# 检查根目录底下每个目录所占用的容量
[root@kuangshen home]# du -sm /*
0/bin
146/boot
.....中间省略....
0/proc
.....中间省略....
1/tmp
3026/usr  # 系统初期最大就是他了啦
513/var
2666/www

 通配符 * 来代表每个目录。

与 df 不一样的是du 这个命令其实会直接到文件系统内去搜寻所有的文件数据。

2.4磁盘挂载与卸除 

根文件系统之外的其他文件要想能够被访问都必须通过“关联”至根文件系统上的某个目录来实现此关联操作即为“挂载”此目录即为“挂载点”,解除此关联关系的过程称之为“卸载”

Linux 的磁盘挂载使用mount命令卸载使用umount命令。

磁盘挂载语法

mount [-t 文件系统] [-L Label名] [-o 额外选项] [-n] 装置文件名 挂载点

测试

# 将 /dev/hdc6 挂载到 /mnt/hdc6 上面
[root@www ~]# mkdir /mnt/hdc6
[root@www ~]# mount /dev/hdc6 /mnt/hdc6
[root@www ~]# df
Filesystem           1K-blocks     Used Available Use% Mounted on
/dev/hdc6              1976312     42072   1833836   3% /mnt/hdc6

磁盘卸载命令 umount 语法

umount [-fn] 装置文件名或挂载点

选项与参数

  • -f 强制卸除可用在类似网络文件系统 (NFS) 无法读取到的情况下

  • -n 不升级 /etc/mtab 情况下卸除。

卸载/dev/hdc6

[root@www ~]# umount /dev/hdc6

 

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6
标签: linux