Linux基础知识之用户与用户组管理、磁盘管理

2020/03/06
第四课

五、Linux系统用户与用户组管理

5.1 认识/etc/passwd 和/etc/shadow

[root@localhost ~]# cat /etc/passwd | head
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
  • head前面的符号|叫做管道符,它的作用是把前面的命令的输出再输入给后面的命令。
5.1.1 /etc/passwd 解说

/etc/passwd文件:用户账户信息文件
Linux系统使用一个特殊文件将登录名与相应的UID值匹配,这就是/etc/passwd文件。

 如:root:x:0:0:root:/root:/bin/bash
 我们可以看到,/etc/passwd中一行记录对应着一个用户,每行记录又被冒号(:)分隔为7个字段,具体含义如下: 
 用户名:口令:用户标识号:组标识号:注释说明:家目录:Shell   
  • 第一个字段是用户名:(如:root)是代表用户账号的字符串。通常长度不超过8个字符,并且由大小写字母和/或数字组成,点或下划线,并且不使用连字符(-)和加号(+)打头,其他字符不合法。

  • 第二个字段是口令:(这里的x)虽然这个字段存放的只是用户口令的加密串,不是明文,但基于安全因素,Linux系统都使用了shadow技术,把真正的加密后的用户口令字存放到/etc/shadow文件中,而在/etc/passwd文件的口令字段中只存放一个“x”代替。

  • 第三个字段是用户标识号(UID):(如这里的“0”)是一个整数,系统通过这个数字识别用户身份。取值范围是0-65535(实际上已经支持到429 496 729 4)。0是超级用户root的标识号,如果我们自定义建立一个普通用户,该账号的标识号是大于或等于1000的。

  • 第四个字段是组标识号(GID):(如这里的“0”)字段记录的是用户所属的用户组。它对应着/etc/group文件中的一条记录。

  • 第五个字段是注释说明:(如这里的root)没有实际意义。通常记录该用户的一些属性,如姓名、电话、地址等。

  • 第六个字段是家目录:(如这里的root)就是用户的起始目录,它是用户在登录到系统之后所处的目录。root的家目录是/root,普通用户的家目录则为/home/username目录下,用户家目录是可以自定义的。

  • 第七个字段是Shell:(这里的/bin/bash)用户登录后,要启动一个进程,负责将用户的操作传给内核,这个进程是用户登录到系统后运行的命令解释器或某个特定的程序,即Shell。Shell是用户与Linux系统之间的接口。Linux的Shell有许多种,每种都有不同的特点。常用的有sh(BourneShell),csh(CShell),ksh(KornShell),tcsh(TENEX/TOPS-20typeCShell),bash(BourneAgainShell)等。系统管理员可以根据系统情况和用户习惯为用户指定某个Shell。如果不指定Shell,那么系统使用sh为默认的登录Shell,即这个字段的值为/bin/sh。Linux的shell有sh、csh、ksh、tcsh、bahs等多种。

5.1.2 /etc/shadow 解说

/etc/shadow文件:用户密码文件。/etc/shadow文件只有根用户才能访问/etc/shadow文件。
对于系统上的每个用户账户,/etc/shadow文件都包含一个相应的记录,例如:

# cat /etc/shadow | grep -n 3
1:root:$6$OIcDHvR30kEE2EDz$tMDWC4b9h13q19cQWI9phxB9WLJAGCX5Pc6Zn08d630BN2qq1NA6dWwjuUgbd8RCQylvlj4SRj55F0klsQ1An.::0:99999:7:::
14:avahi-autoipd:!!:18325::::::
15:systemd-bus-proxy:!!:18325::::::
16:systemd-network:!!:18325::::::
17:dbus:!!:18325::::::
18:polkitd:!!:18325::::::
19:tss:!!:18325::::::
20:postfix:!!:18325::::::
21:sshd:!!:18325::::::
  
每个/etc/shadow文件都有9个字段
  • 用户名:与/etc/passwd文件中的登录名相一致的用户账号。

  • 用户密码:存放的是加密后的用户真正密码。但是黑客还是能够解密的,所以将文件属性设置为000,但root用户是可以访问或更改的,如

     # ls -l /etc/shadow
     ----------. 1 root root 644 Mar  4 04:46 /etc/shadow
    
  • 上次更改密码的时间:这个时间起点是1970年1月1日和上次修改密码的日期为基准计算而来的。

  • 要过多少天能够修改密码,默认是0,即不受限制。

  • 密码还有多少天后到期,即多少天内必须要修改密码。默认是99999,可以理解为永远不需要改。

  • 密码到期前的警告期限,距密码逾期并警告用户修改密码的天数。

  • 密码失效期限。表示的是用户没有登录活动但账号仍能保持有效的最大天数。

  • 账号的生命周期。这个周期为自1970年1月1日开始的天数,在这个日期前可以使用,到期后账号作废。

5.2 用户和用户组管理

5.2.1 新增组的命令 groupadd

groupadd [组名]

[root@localhost ~]# groupadd grptest1
[root@localhost ~]# tail -n1 /etc/group
grptest1:x:1000:

groupadd -g [组名] (-g:指定gid)

[root@localhost ~]# groupadd -g 1008 grptest2
[root@localhost ~]# tail -n2 /etc/group
grptest1:x:1000:
grptest2:x:1008:
5.2.2 删除组的命令 groupdel

groupdel:不能删除包含有用户的组,只有删除用户后才可以删除组。

格式:groupdel [组名]

[root@localhost ~]# groupdel grptest1
[root@localhost ~]# tail -n2 /etc/group
sshd:x:74:
grptest2:x:1008:
5.2.3 新增用户的命令 useradd

user:增加用户。
格式:useradd [-u UID] [-g GID] [-d HOME] [-M] [-s]

  • -u 表示自定义UID。
  • -g 使新增用户属于已经存在的某个组,后面可跟组名,也可以跟组ID。
  • -d 表示自定义用户的家目录 。
  • -M 表示不建立家目录。
  • -s 表示自定义shell。

直接添加用户不加参数,系统默认添加同名组

5.2.4删除账户的命令 userdel

格式:userdel [-r] 账户名(-r:当删除用户时,一并删除用户的家目录)

5.2.5 使用命令chfn更改用户的finger

chfn:用于更改用户的finger。finger即在/etc/passwd文件第五个字段中显示的信息。

# chfn test1
Changing finger information for test1.
Name []: test1
Office []: test1'office
Office Phone []: 000000
Home Phone []: 000000

Finger information changed.
[root@localhost ~]# grep 'test1' /etc/passwd
test1:x:1000:1000:test1,test1'office,000000,000000:/home/test1:/bin/bash

5.3 用户密码管理

5.3.1 命令passwd

passwd:为用户设置密码。
格式:passwd [username](如果不跟用户名,则是为自己设置密码)

# passwd test1
Changing password for user test1.
New password: 
BAD PASSWORD: The password is a palindrome
Retype new password: 
passwd: all authentication tokens updated       successfully.

root 用户可以修改其他用户的密码,普通用户只能修改自己的密码。

5.3.2 命令 mkpasswd

mkpasswd:用于生成密码。

  • -l 指定生成密码长度
  • -s 指定特殊字符个数
  • -d 指定数字个数

默认安装的Linux是没有这个命令的,需要安装一个expert软件包。

5.4 用户身份切换

5.4.1 命令 su

su:切换用户。格式为:su [-] username

  • 普通用户的su命令不加username时,就是切换到root用户。
  • root用户也可以使用su命令切换到普通用户。
  • su命令后面加-后,会初始化当前用户的各种环境变量。
5.4.2 命令 sudo

sudo:是linux下常用的允许普通用户使用超级用户权限的工具,允许系统管理员让普通用户执行一些或者全部的root命令。这样不仅减少了root用户的登陆和管理时间,同样也提高了安全性。sudo命令以系统管理者的身份执行指令,也就是说,经由 sudo 所执行的指令就好像是 root 亲自执行。

  • 编辑配置文件命令:visudo
    注意:sudo的配置文件/etc/sudoers是一般使用visudo(必须使用root用户)去编辑。

    ## Allow root to run any commands anywhere
    root    ALL=(ALL)       ALL
    test     ALL=(root)      /usr/sbin/test       ##添加权限,这里的/usr/sbin/useradd表示普通用户执行时必须使用全路径,可以使用which 命令查看哦!
    ## Allows members of the 'sys' group to run networking, software,
    
  • 增加一个用户就设置一行,有点麻烦,可以这么做:#%wheel ALL=(ALL) ALL前面的#起掉,让这一行生效。然后把要设置sudo权限的用户加入到这个组就可以了。
    在这里插入图片描述

  • 只允许普通用户登录,而普通账户登录后,可以不输入密码就能用sudo切换到root账户:

    # visudo
    User_Alias USER_SU = test,test1,aming //user别名,USER_SU相当于    test,test1,aming 三个账户
    Cmnd_Alias SU = /usr/bin/su    //命令别名,SU相当于/usr/bin/su
    USER_SU ALL=(ALL) NOPASSWD:SU 
    

在这里插入图片描述

示例
①、创建test并为其创建密码

      # useradd test
      # passwd test
      Changing password for user test.
      New password: 
      BAD PASSWORD: The password is a palindrome
      Retype new password: 
      passwd: all authentication tokens updated successfully.

②、修改配置文件,为test添加特殊权限test

      ## Allow root to run any commands anywhere
      root    ALL=(ALL)       ALL
      tom     ALL=(root)      /usr/sbin/test     ##添加权限,这里的/usr/sbin/useradd表示普通用户执行时必须使用全路径,可以使用which 命令查看哦!
      ## Allows members of the 'sys' group to run networking, software,

在这里插入图片描述
③、切换到用户test,验证特殊权限

[root@localhost ~]# su test
[test@localhost root]$ sudo -l

We trust you have received the usual lecture from the local System
Administrator. It usually boils down to these three things:

    #1) Respect the privacy of others.
    #2) Think before you type.
    #3) With great power comes great responsibility.

[sudo] password for test: 
Matching Defaults entries for test on this host:
    requiretty, !visiblepw, always_set_home, env_reset, env_keep="COLORS
    DISPLAY HOSTNAME HISTSIZE INPUTRC KDEDIR LS_COLORS", env_keep+="MAIL PS1
    PS2 QTDIR USERNAME LANG LC_ADDRESS LC_CTYPE", env_keep+="LC_COLLATE
    LC_IDENTIFICATION LC_MEASUREMENT LC_MESSAGES", env_keep+="LC_MONETARY
    LC_NAME LC_NUMERIC LC_PAPER LC_TELEPHONE", env_keep+="LC_TIME LC_ALL
    LANGUAGE LINGUAS _XKB_CHARSET XAUTHORITY",
    secure_path=/sbin\:/bin\:/usr/sbin\:/usr/bin

User test may run the following commands on this host:
    (ALL) ALL
[test@localhost root]$ 

在这里插入图片描述
④、查看日志/vat/log/secure
在这里插入图片描述

5.4.3 不允许root远程登录Linux

默认允许root用户远程登录ssh的配置文件为/etc/ssh/sshd_config

 # vi /etc/ssh/sshd_config
 PermitRootLogin yes  //去掉#号,把yes改成no,然后保存退出
 # systemctl sshd.service

只适用于通过ssh远程登录Linux的情况。

六、Linux的磁盘管理

6.1 查看磁盘或者目录的容量

6.1.1 命令df

df:用于查看已挂载磁盘的总容量、使用容量、剩余容量等。
在这里插入图片描述

  • -i:表示查看inodes的使用情况;如已使用100%,即使磁盘空间有富余,也会提示磁盘空间已满。
  • -h:表示使用合适的单位显示。
  • -k、-m:分别表示以KB、MB为单位显示。
    在这里插入图片描述
6.1.2 命令du

du:用于查看某个目录或文件所占的大小

  • 格式:du [-abckmsh] [文件名或目录名]

    -a:表示全部文件和目录的大小都列出来。
    -b:表示列出的值以B为单位输出。
    -k:表示以KB的单位输出。
    -m:表示以MB的单位输出。
    -h:表示系统自动调节单位。
    -c:表示最后加总。
    -s:表示只列出总和。

6.2 磁盘的分区和格式化

6.2.1 增加虚拟磁盘

①右击虚拟机选项卡,选择“设置”,会弹出“虚拟机设置”对话框,在左侧选择“硬盘”,然后点击下方的“添加”按钮,会弹出“添加硬件向导”对话框,点击“下一步”按钮。
在这里插入图片描述
在这里插入图片描述
②“选择磁盘类型”对话框这里保持默认,无需更改,点击“下一步”;
在这里插入图片描述
③“选择磁盘”对话框这里也保持默认,无需更改,点击“下一步”;
在这里插入图片描述
④“指定磁盘容量”对话框这里设定“最大磁盘大小”为5GB,然后选择“将虚拟磁盘存储为单个文件”。
在这里插入图片描述

⑤点击“完成”,完成添加虚拟磁盘,虚拟磁盘添加后,需要重启一下系统。
在这里插入图片描述
在这里插入图片描述

6.2.2 命令fdisk

fdisk:是Linux下磁盘的分区工具,但是只能划分小于2TB的分区。
格式为:fdisk [-l] [设备名称]

  • fdisk [-l] [设备名称](如果不加-l后不加设备名称,会直接列出系统所有的磁盘设备以及分区表;加上设备名称,则列出该设备的分区表。)
    在这里插入图片描述
  • fdisk(后面不加-l,则进入另一种模式,可以对磁盘进行分区操作) 在这里插入图片描述
    ,t_70)
    这里primary表示主分区,extended表示拓展分区。Linux系统中最大多只能创建4个主分区,如果想要对创建几个分区,就可以在创建3个主分区后,创建1一个拓展分区,然后在拓展分区里面创建逻辑分区。如图sdb1、sdb2、sdb3是主分区,sdb4是拓展分区,sdb5、sdb6是逻辑分区。

6.3 格式化磁盘分区

6.3.1 命令mke2fs、mkfs.ext2、mkfs.ext3、mkfs.ext4和 mkfs.xfs

mke2fs、mkfs.ext2、mkfs.ext3、mkfs.ext4这四个命令是一样的,mke2fs命令常用的选项如下所示:

  • -b:表示分区时设定每个数据区块所占用的空间大小;
  • -i:表示设定inode的大小;
  • -N:表示设定inode的数量;
  • -c:表示在格式化前检测一下磁盘是否有问题;
  • -L:表示预设该分区的标签(label);
  • -j:表示建立ext3格式的分区;如果使用mkfs.ext3格式,就不用加这个选项了。
  • -t:用来指文件系统的类型,可以是ext2、ext3,也可以是ext4。
    在这里插入图片描述
    mke2fs -t ext4 /dev/sdb5相当于mkfs.ext4 /dev/sdb5,然而mke2fs并不支持把分区格式化成CFS,而只能使用mkfs.xfs;
    在这里插入图片描述
    -L选项指定标签,标签会在挂载磁盘时使用,也可以写入配置文件。
    在这里插入图片描述

格式化磁盘中-t和-L这两个选项比较常用及重要

6.3.1 命令e2label

e2label:用于查看或修改分区的标签,只支持ext格式的文件系统,不支持XFS文件系统。
在这里插入图片描述

6.4 挂载/卸载磁盘

6.4.1 命令mount

mount:查看当前系统已经挂载的所有分区、分区文件系统的类型、挂载点及一些选项等消息。

  • 挂载
    (在挂载某个分区前,先建立一个挂载点,这个挂载点是以目录的形式出现的。一旦把某个分区挂载到这个挂载点(目录)下,要再往这个目录写数据时,就都会写到该分区中。所以,在挂载该分区前,挂载点(目录)必须是个空目录,若不是空目录的话,一旦挂载,该目录下以前的东西就看不到了(数据并没有丢失),除非卸载该分区。)
    在这里插入图片描述
    也可以用LABEL的方式挂载分区。
    在这里插入图片描述
  • 卸载
    在这里插入图片描述
6.4.2 /etc/fstab配置文件

/etc/fstab文件内容如下:
在这里插入图片描述

  • 第1列:分区的标识;可以写分区的LABEL、分区的UUID,也可以写分区名(/dev/sda1)
  • 第2列:挂载点;
  • 第3列:分区的格式;
  • 第4列:mount的一些挂载参数;一般情况下,直接写defaults即可;

常用选项有:

async/syncasync表示与磁盘和内存不同步;系统每隔一段时间就会把内存数据写入磁盘中,而sync则会时时同步内存和磁盘中的数据
auto/noauto表示开机自动挂载/不自动挂载
default表示按照大多数永久文件系统的默认值设置挂载定义.它包含了rw、 suid、dev、exec、auto、nouser和async
ro表示按只读权限挂载
rw表示按可读可写权限挂载
exec/noexec表示允许/不允许可执行文件执行,但千万不要把根分区挂载为 noexec,否则将无法使用系统,甚至连mount命令都无法使用
user/nouser表示允许/不允许root外的其他用户挂载分区。为了安全,请用 nouser
suid/nosuid表示允许/不允许分区有suid属性,一般设置nosuid
usrquota表示启动用户的磁盘配额模式。磁盘配额会针对用户限定他们使用的磁盘额度
grquota表示启动群组的磁盘配额模式
  • 第5列:表示是否被dump备份。1表示备份,0表示不备份。
  • 第6列:表示开机时是否自检磁盘;1和2表示检测,0表示不检测。1比2优先级高,所有先检测1,再检测2。如果有多个分区需要开机自动自检,就都设置成2,1检测完后会同时检测2。

在/etc/fstab文件中增加一行来挂载新增分区:
在这里插入图片描述

  • -a:会把/etc/fstab中出现的所有磁盘分区挂载上;
    在这里插入图片描述
  • -t:用来指定挂载的分区类型,默认不指定,会自动识别。
  • -o:用来指定挂载的分区有哪些特性,即上面/etc/fstab配置文件中的第4列那些。
    在这里插入图片描述
6.4.3 命令 blkid

blkid:获取各分区的UUID。
在这里插入图片描述
分区在开机后自动挂载
①在/etc/fstab文件中添加一行

UUID="57fc2df9-005d-4ded-b442-95770af04fa8" /newdir ext4 defaults    0  0

②把挂载命令写到/etc/rc.d/rc.local文件中去,然后执行chmod a+x /etc/rc.d/rc.local命令
在这里插入图片描述

6.4.4 命令 umount

umount:卸载磁盘。其格式为:umount [-l] [挂载点或分区命](不可以跟LABEL和UUID)
在这里插入图片描述

6.5 建立一个swap文件增加虚拟内存

基本思路:建立swapfile——格式化为swap格式——启动该虚拟磁盘
在这里插入图片描述
其中用到的dd命令:

  • if:指定源(一般写/dev/zero,它是UNIX系统特有的一个文件,它可以源源不断地提供“0”)
  • of:指定目标文件
  • bs:定义块的大小
  • count:定义块的数量
  • 目标文件的大小=bs*count
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值