从虚拟机上安装linux(超详细)以及linux的一些简单教程(四)

上篇文章我们已经介绍了 管道符、重定向与环境变量Vim编辑器与Shell命令脚本等,接下来我们将介绍本教程的最后一章。

第四章 用户身份与文件权限

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

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

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

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

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

  • 用户账号的添加、删除与修改。
  • 用户口令的管理。
  • 用户组的管理。

为了更好的进行下面的操作,请使用root管理员的身份进行如下操作。

一、用户及群组设置

① useradd命令

 useradd命令用于创建新的用户,格式为“useradd [选项] 用户名”。

useradd用户参数以及作用。

扫描二维码关注公众号,回复: 3203574 查看本文章
参数 作用
-d 指定用户的家目录(默认为/home/username)
-e 账户的到期时间,格式为YYYY-MM-DD.
-u 指定该用户的默认UID
-g 指定一个初始的用户基本组(必须已存在)
-G 指定一个或多个扩展用户组
-N 不创建与用户同名的基本用户组
-s 指定该用户的默认Shell解释器

演示如下:

命令:useradd -d /home/linux -u 2037 example 

表示 创建一个example用户,家目录为/home/linux,uid为2037.

su命令:使用su命令可以在普通用户与root用户之间来回切换

② groupadd命令

groupadd命令用于创建用户组,格式为“groupadd [选项] 群组名”。

命令 groupadd zg 用于创建一个zg群组

 ③ usermod命令

usermod命令用于修改用户的属性,格式为“usermod [选项] 用户名”

usermod参数如下:

参数 作用
-c 填写用户账户的备注信息
-d -m 参数-m与参数-d连用,可重新指定用户的家目录并自动把旧的数据转移过去
-e 账户的到期时间,格式为YYYY-MM-DD
-g 变更所属用户组
-G 变更扩展用户组
-L 锁定用户禁止其登录系统
-U 解锁用户,允许其登录系统
-s 变更默认终端
-u 修改用户的UID

演示如下:

命令 usermod -s /bin/ksh -d /home/z –g ex example

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

④ passwd命令

passwd命令用于修改用户密码、过期时间、认证信息等,格式为“passwd [选项] [用户名]”。

普通用户只能使用passwd命令修改自身的系统密码,而root管理员则有权限修改其他所有人的密码。更酷的是,root管理员在Linux系统中修改自己或他人的密码时不需要验证旧密码,这一点特别方便。既然root管理员可以修改其他用户的密码,就表示完全拥有该用户的管理权限。

 passwd命令参数和作用:

参数 作用
-l 锁定用户,禁止其登录
-u 解除锁定,允许用户登录
--stdin 允许通过标准输入修改用户密码,如echo "NewPassWord" | passwd --stdin Username
-d 使该用户可用空密码登录系统
-e 强制用户在下次登录时修改密码
-S 显示用户的密码是否被锁定,以及密码所采用的加密算法名称

 演示如下:

例如,假设当前普通用户是example,则下面的命令修改该用户自己的口令:

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

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

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

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

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

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

# passwd -d example

此命令将用户sam的口令删除,这样用户sam下一次登录时,系统就不再询问口令。

 ⑤ userdel命令

userdel命令用于删除用户,格式为“userdel [选项] 用户名”。

如果我们确认某位用户后续不再会登录到系统中,则可以通过userdel命令删除该用户的所有信息。在执行删除操作时,该用户的家目录默认会保留下来,此时可以使用-r参数将其删除。userdel命令的参数以及作用如表5-4所示。

userdel命令的参数以及作用

参数 作用
-f 强制删除用户
-r 同时删除用户及用户家目录

下面使用userdel命令将linuxprobe用户删除,其操作如下:

[root@example ~]# id example
uid=8888(example) gid=1000(example) groups=1000(example),0(root)
[root@linuxprobe ~]# userdel -r example
[root@linuxprobe ~]# id example
id: example: no such user

二、文件权限与归属

Linux系统是一种典型的多用户系统,不同的用户处于不同的地位,拥有不同的权限。在Linux里面,任何一个档案都具有“User, Group及Others”三种身份的个别权限。

① 首先我们用ls -al命令来查看一个文件的属性以及所属的用户和群组。演示如下:

  • 第一栏代表这个档案的类型与权限(permission):如上,文件的第一个属性用"d"表示。"d"在Linux中代表该文件是一个目录文件。 常见的字符如下:

 -:普通文件。

d:目录文件。

l:链接文件。

b:块设备文件。

c:字符设备文件。

p:管道文件。

 接下来的字符中,以三个为一组,且均为『rwx』 的三个参数的组合。其中,[ r ]代表可读(read)、[ w ]代表可写(write)、[ x ]代表可执行(execute)。 要注意的是,这三个权限的位置不会改变,如果没有权限,就会出现减号[ - ]而已。

  • 第二栏表示有多少档名连结到此节点(i-node)
  • 第三栏表示这个档案(或目录)的『拥有者帐号』
  • 第四栏表示这个档案的所属群组 
  • 第五栏为这个档案的容量大小,预设单位为bytes
  • 第六栏为这个档案的建档日期或者是最近的修改日期:这一栏的内容分别为日期(月/日)及时间。如果这个档案被修改的时间距离现在太久了,那么时间部分会仅显示年份而已
  • 第七栏为这个档案的档名:比较特殊的是:如果档名之前多一个『 . 』,则代表这个档案为『隐藏档』,例如上表中的.config那一行,该档案就是隐藏档

② getfacl命令

如果想更简洁的查看某个文件的属性及所属群组,可以使用getfacl命令。getfacl命令用于显示文件上设置的ACL信息,格式为“getfacl 文件名称”。演示如下:

 

三、更改文件权限

1、chgrp:更改文件属组

语法:

chgrp [-R] 属组名 文件名

参数选项

  • -R:递归更改文件属组,就是在更改某个目录文件的属组时,如果加上-R的参数,那么该目录下的所有文件的属组都会更改。

2、chown:更改文件属主,也可以同时更改文件属组

语法:

chown [–R] 属主名 文件名
chown [-R] 属主名:属组名 文件名

进入 /root 目录(~)将install.log的拥有者改为bin这个账号:

[root@zg1037~] cd ~
[root@zg1037 ~]# chown bin install.log
[root@zg1037 ~]# ls -l
-rw-r--r--  1 bin  users 68495 Jun 25 08:53 install.log

将install.log的拥有者与群组改回为root:

[root@zg1037 ~]# chown root:root install.log
[root@zg1037 ~]# ls -l
-rw-r--r--  1 root root 68495 Jun 25 08:53 install.log

3、chmod:更改文件9个属性

Linux文件属性有两种设置方法,一种是数字,一种是符号。

Linux文件的基本权限就有九个,分别是owner/group/others三种身份各有自己的read/write/execute权限。

先复习一下刚刚上面提到的数据:文件的权限字符为:『-rwxrwxrwx』, 这九个权限是三个三个一组的!其中,我们可以使用数字来代表各个权限,各权限的分数对照表如下:

  • r:4
  • w:2
  • x:1

每种身份(owner/group/others)各自的三个权限(r/w/x)分数是需要累加的,例如当权限为: [-rwxrwx---] 分数则是:

  • owner = rwx = 4+2+1 = 7
  • group = rwx = 4+2+1 = 7
  • others= --- = 0+0+0 = 0

所以等一下我们设定权限的变更时,该文件的权限数字就是770啦!变更权限的指令chmod的语法是这样的:

 chmod [-R] xyz 文件或目录

选项与参数:

  • xyz : 就是刚刚提到的数字类型的权限属性,为 rwx 属性数值的相加。
  • -R : 进行递归(recursive)的持续变更,亦即连同次目录下的所有文件都会变更

举例来说,如果要将.bashrc这个文件所有的权限都设定启用,那么命令如下:

[root@zg1037~]# ls -al .bashrc
-rw-r--r--  1 root root 395 Jul  4 11:45 .bashrc
[root@zg1037 ~]# chmod 777 .bashrc
[root@zg1037 ~]# ls -al .bashrc
-rwxrwxrwx  1 root root 395 Jul  4 11:45 .bashrc

那如果要将权限变成 -rwxr-xr-- 呢?那么权限的分数就成为 [4+2+1][4+0+1][4+0+0]=754。

符号类型改变文件权限

还有一个改变权限的方法呦!从之前的介绍中我们可以发现,基本上就九个权限分别是(1)user (2)group (3)others三种身份啦! 那么我们就可以藉由u, g, o来代表三种身份的权限!

此外, a 则代表 all 亦即全部的身份!那么读写的权限就可以写成r, w, x!也就是可以使用底下的方式来看:

chmod u
g
o
a
+(加入)
-(除去)
=(设定)
r
w
x
文件或目录

如果我们需要将文件权限设置为 -rwxr-xr-- ,可以使用 chmod u=rwx,g=rx,o=r 文件名 来设定:

#  touch test1    // 创建 test1 文件
# ls -al test1    // 查看 test1 默认权限
-rw-r--r-- 1 root root 0 Nov 15 10:32 test1
# chmod u=rwx,g=rx,o=r  test1    // 修改 test1 权限
# ls -al test1
-rwxr-xr-- 1 root root 0 Nov 15 10:32 test1

而如果是要将权限去掉而不改变其他已存在的权限呢?例如要拿掉全部人的可执行权限,则:

#  chmod  a-x test1
# ls -al test1
-rw-r--r-- 1 root root 0 Nov 15 10:32 test1

四、挂载硬件设备

本人在学习linux系统时,被“挂载”这个问题困扰过很久,之前一直用的都是windows系统,根本没有“挂载”这个概念。现在就让我们来认识一下什么是挂载。

我们在用惯了Windows系统后总觉得一切都是理所当然的,平时把U盘插入到电脑后也从来没有考虑过Windows系统做了哪些事情,才使得我们可以访问这个U盘的。我们在拿到一块全新的硬盘存储设备后要先分区(fdisk命令用于管理磁盘分区,格式为“fdisk  [磁盘名称]”),然后格式化(用于格式化操作的命令是mkfs),最后才能挂载并正常使用。,但“挂载”又是什么呢?当用户需要使用硬盘设备或分区中的数据时,需要先将其与一个已存在的目录文件进行关联,而这个关联动作就是“挂载”。简单的说,在linux系统中如果你有一块u盘想在linux系统上使用,就要用到挂载操作。

mount命令用于挂载文件系统,格式为“mount 文件系统 挂载目录。挂载是在使用硬件设备前所执行的最后一步操作。只需使用mount命令把硬盘设备或分区与一个目录文件进行关联,然后就能在这个目录中看到硬件设备中的数据了。

首先给大家介绍一下常用硬件设备及文件名称:

常见的硬件设备及其文件名称

硬件设备 文件名称
IDE设备 /dev/hd[a-d]
SCSI/SATA/U盘 /dev/sd[a-p]
软驱 /dev/fd[0-1]
打印机 /dev/lp[0-15]
光驱 /dev/cdrom
鼠标 /dev/mouse
磁带机 /dev/st0或/dev/ht0

例如,要把设备/dev/sdb2挂载到/backup目录,只需要在mount命令中填写设备与挂载目录参数就行,系统会自动去判断要挂载文件的类型,因此只需要执行下述命令即可:

[root@linuxprobe ~]# mount /dev/sdb2 /backup

虽然按照上面的方法执行mount命令后就能立即使用文件系统了,但系统在重启后挂载就会失效。 

如果想让硬件设备和目录永久地进行自动关联,就必须把挂载信息按照指定的填写格式“设备文件 挂载目录 格式类型 权限选项 是否备份 是否自检” 写入到/etc/fstab文件中。这个文件中包含着挂载所需的诸多信息项目,一旦配置好之后就能一劳永逸了。

 用于挂载信息的指定填写格式中,各字段所表示的意义 

字段 意义
设备文件 一般为设备的路径+设备名称,也可以写唯一识别码(UUID,Universally Unique Identifier)
挂载目录 指定要挂载到的目录,需在挂载前创建好
格式类型 指定文件系统的格式,比如Ext3、Ext4、XFS、SWAP、iso9660(此为光盘设备)等
权限选项 若设置为defaults,则默认权限为:rw, suid, dev, exec, auto, nouser, async
是否备份 若为1则开机后使用dump进行磁盘备份,为0则不备份
是否自检 若为1则开机后自动进行磁盘自检,为0则不自检
[root@linuxprobe ~]# vim /etc/fstab
#
# /etc/fstab
# Created by anaconda on Wed May 4 19:26:23 2017
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
/dev/mapper/rhel-root / xfs defaults 1 1
UUID=812b1f7c-8b5b-43da-8c06-b9999e0fe48b /boot xfs defaults 1 2
/dev/mapper/rhel-swap swap swap defaults 0 0
/dev/cdrom /media/cdrom iso9660 defaults 0 0 
/dev/sdb2 /backup ext4 defaults 0 0

 umount命令用于撤销已经挂载的设备文件,格式为“umount [挂载点/设备文件]”。 

最后使用df -h命令来查看挂载状态和硬盘使用量信息。

猜你喜欢

转载自blog.csdn.net/qq_39038465/article/details/81558073