赞
踩
目录
• 理解用户账户分类、用户账户密码文件及组群文件。
• 掌握Ubuntu的超级用户权限与管理员。
• 掌握用户账户管理及组群维护与管理。
• 理解su和sudo命令的使用方法。
• 掌握文件和目录的权限以及详解文件和目录的属性信息。
• 掌握使用数字表示法与文字表示法修改文件和目录的权限的方法。
• 掌握文件访问控制列表的配置方法。
Ubuntu Linux是一个多用户、多任务的操作系统,可以让多个用户同时使用系统。
为了保证用户之间的独立性,允许用户保护自己的资源不被非法访问,用户之间可以共享信息和文件,也允许用户分组工作,对不同的用户分配不同的权限,使每个用户都能各自不受干扰地独立工作,因此,作为系统的管理员,掌握系统配置、用户权限设置与管理、文件和目录的权限设置是至关重要的。
本章主要讲解了用户账户、组群管理、su和sudo命令的使用以及文件和目录权限管理。
为了实现安全控制,每次登录Linux操作系统时都要选择一个用户并输入密码,每个用户在系统中有不同的权限,其所能管理的文件、执行的操作也不同。下面来介绍用户账户分类、用户账户密码文件以及用户账户管理等相关内容。
(1)超级用户(root)管理员账户,具有一切权限,对普通用户和整个系统进行管理,超级用户具有绝对的控制权。ID:0
(2)系统用户 正常工作所必需的内建用户,为了满足响应的系统进程对文件的属主的要求建立的。ID1~999
(3)普通用户 只能进行普通工作,只能访问或者修改拥有权限的文件或目录。ID1000~65535
用户默认配置信息目录 /etc/login.defs
vim /etc/login.defs
用户基本信息 /etc/passwd
vim /etc/passwd
用户密码等安全信息 /etc/shadow
可以实现对用户的管理,每个用户在文件中对应一行,记录该用户的相关信息。
(1)用户账户管理文件 /etc/passwd
cat -n /etc/passwd
创建的用户账户及相关信息(除密码外)均放在/etc/passwd配置文件中。
账户名称:密码:UID:GID:用户信息:主目录:命令解释器(登录shell)
passwd文件中各字段的功能说明详见P82,表3-1
字段 | 功能说明 |
---|---|
账户名称 | 用户账户名称;用户登录时所使用的用户名 |
密码 | 用户口令,这里的密码会显示为特定的字符“X”,真正的密码被保存在 shadow 文件中 |
UID | 用户的标识,是一个数值,Linux操作系统内部使用它来区分不同的用户 |
GID | 用户所在的主组的标识,是一个数值,Linux 操作系统内部使用它来区分不同的组,相同的有相同的 GID |
用户信息 | 可以记录用户的个人信息,如用户姓名、电话等 |
主目录 | 用户的宿主目录,用户成功登录后的默认目录 |
命令解释器 | 用户所使用的 Shell类型,默认为/bin/bash |
(2)用户密码文件 /etc/shadow
在/etc/passwd文件中,有一个字段用来存放经过加密后的密码。
x字段
下面先来查看/etc/passwd文件的权限,执行命令如下。
ls -l /etcpasswd
可以看到任何用户对它都有读的权限,虽然密码已经经过加密,但是仍不能避免“别有用心”的人轻易地获取加密后的密码并进行解密。
为了增强系统的安全性,Linux 操作系统对密码提供了更多的保护,即把加密后的密码重定向到另一个文件/etc/shadow 中,只有 root 用户能够读取/etc/shadow文件的内容,这样密码就安全多了。
查看/etc/shadow文件的权限,执行命令如下。
ls -l /etc/shadow
可以看到/etc/shadow和/etc/passwd文件的内容类似,前者中的每一行都和后者中的每一行对应,每个用户的信息在/etc/shadow文件中占用一行,并用“:”分隔为9个字段。
其格式如下。
账户名称:密码:最后一次修改时间:最小时间间隔:最大时间间隔:警告时间:不活动时间:失效时间:标志字段
shadow文件中各字段的功能说明详见P83,表3-2
字段 | 功能说明 |
---|---|
账户名称 | 用户账户名称,用户登录时所使用的用户名,即/etc/passwd文件中相对应的用户名 |
密码 | 加密后的用户口令,*表示用户被禁止登录,!表示用户被锁定,!!表示没有设置密码 |
最后一次修改时间 | 用户最后一次修改密码的时间(从 1970年1月1日起计的天数) |
最小时间间隔 | 两次修改密码允许的最小天数,即最短口令存活期 |
最大时间间隔 | 密码保持有效的最多天数,即最长口令存活期 |
警告时间 | 从系统提前警告到密码正式失效的天数 |
不活动时间 | 口令过期多少天后账户被禁用 |
失效时间 | 表示用户被禁止登录的时间 |
标志字段 | 保留域,用于功能扩展,未使用 |
用户的管理是系统至关重要的环节,Linux操作系统中用户开机时要求必须提供用户名和密码,因此设置的用户名和密码必须牢记,密码的长度要求至少是6位。
因为可以手动修改/etc/passwd文件,更容易出现问题,因此建议用户在使用的时候,用命令或者图形用户界面设置用户名和密码,不要直接更改/etc/passwd 文件的内容。
建议:用命令或者图形界面设置用户名和密码,不要直接更改/etc/passwd文件的内容。
Linux操作系统中具有最高权限的 root账户可以对系统做任何事情,这对系统安全来说可能是一种严重威胁。
Ubuntu Linux是一个多用户、多任务的操作系统,任何一个用户要获得系统的使用授权,都必须要拥有一个用户账户。
多数Linux发行版安装完毕都会要求设置两个用户账户的密码,一个是root账户,另一个是用于登录系统的普通账户,并且允许root账户直接登录到系统,这样 root 账户的任何误操作都有可能带来灾难性的后果。
然而,许多系统配置和管理操作需要 root 权限,如安装软件、添加或删除用户和组、添加或删除硬件和设备、启动或禁止网络服务、执行某些系统调用、关闭和重启系统等,为此Linux提供了特殊机制,让普通用户临时具备root权限。
普通用户临时具备root权限:
(1)su: 将自己提升为root权限(临时)
(2)sudo: 临时以root身份运行程序,需要输入密码,执行完毕后自动返回到普通用户,时间间隔为5min,超时之后需要重新输入密码
默认禁止root账户,系统安装时创建的第一个用户自动成为Ubuntu管理员。
Ubuntu 将普通用户进一步分为两种类型:标准用户和管理员。
Ubuntu 管理员是指具有管理权限的普通用户,有权删除用户、安装软件和驱动程序、修改日期和时间,或者进行一些可能导致计算机不稳定的操作。
标准用户不能进行这些操作,只能修改自己的个人设置。
Ubuntu管理员主要执行系统配置管理任务,但不能等同于Windows系统管理员,其权限比标准用户高,比超级用户低很多。
在工作中,当需要超级用户权限时,管理员可以通过sudo命令获得 root用户的所有权限。
管理员可通过sudo命令获得root用户所有权限。
Linux操作系统中包含私有组、系统组、标准组。
(1)私有组:建立用户账户时,若没有指定其所属的组,则系统会建立一个组名和用户名相同的组,这个组就是私有组,它只容纳了一个用户。
user01
(2)系统组:这是Linux操作系统正常运行所必需的组,安装Linux操作系统或添加新的软件包时会自动建立系统。系统自动生成的组。
(3)标准组:可以容纳多个用户,组中的用户都具有组所拥有的权限。
一个用户可以属于多个组,用户所属的组又有基本组(也称主组)和附加组之分。
可以给用户组设置权限(组内所有的用户都具有了该权限)
用户所属组中的第一个组称为基本组,基本组在/etc/passwd文件中指定;其他组为附加组,附加组在letc/group文件中指定。属于多个组的用户所拥有的权限是它所在的组的权限之和。
相对于用户信息,用户组的信息要少一些。
与用户一样,用户分组也是由一个唯一的身份来标识的,该标识叫作用户组ID ( Group ID, GID),在Linux操作系统中,关于组群账户的信息存放在/etc/group文件中,而关于组群管理的信息,如组群密码、组群管理员等,则存放在/etc/gshadow文件中。
用于存放用户的组群账户信息,任何用户都可以读取该文件内容,每个组群账户在group文件中占一行,并用“:”分隔为4个字段。
其格式如下:
组群名称:组群密码(一般为空,用x占位):GID:组群成员
group 文件中各字段的功能说明如表 3.3 所示。
字段 | 功能说明 |
---|---|
组群名称 | 组群的名称 |
组群密码 | 通常不需要设定,一般很少用组群登录,其密码也被记录在/etc/gshadow中 |
GID | 组群的ID |
组群成员 | 组群所包含的用户,用户之间用",,分隔,如果没有成员,则默认为空 |
group文件中显示的用户的组只有用户的附加组,用户的主组在这里是看不到的,它的主组在/etc/passwd文件中显示。
一般情况下,管理员不必手动修改这个文件,系统提供了一些命令来完成组的管理。
查看/etc/group 文件的内容,相关命令如下。
- useradd -p 123456 user02 #创建用户user02,设置密码为123456
- cat /etc/passwd #查看最后一行,user02用户创建成功
- useradd -p 123456 user03 #创建用户user03,设置密码为123456
- cat /etc/passwd #查看最后一行,user03用户创建成功
- usermod -G root user01 #将user01用户加入到root用户组
- cat /etc/group #查看第一行
- usermod -G bin user02
- usermod -G bin user03
- cat -n /etc/group #查看第3行
- id user01 #查看user01用户的相关信息
- id user02
从以上配置可以看出,root 组的ID为0,包含用户 user01 组成员; bin 组的ID 为2,包含用户user02和user03组成员,各成员之间用",”分隔。
在/etc/group文件中,用户的主组群并不把该用户作为成员列出,只有用户的附属组群才会把该用户作为成员列出。
例如,用户bin的主组群是bin,但/etc/group文件的组群的成员列表中并没有用户bin,只有用户user02和user03。
/etc/gshadow文件用于存放组群的加密口令、组管理员等信息。
该文件只有root用户可以读取,每个组群账户在gshadow文件中占一行,并用":”分隔为4个字段。
其格式如下。
组群名称:加密后的组群密码:组群的管理员:组群成员
gshadow文件中的各字段说明 p85 表3-4
字段 | 功能说明 |
---|---|
组群名称 | 组群的名称 |
加密后的组群密码 | 通常不需要设定,没有时用“!”占位 |
组群的管理员 | 组群的管理员,默认为空 |
组群成员 | 组群所包含的用户,用户之间用“,”分隔,如果没有成员,则默认为空 |
查看/etc/gshadow文件的内容,相关命令如下。
cat -n /etc/gshadow
文件是操作系统用来存储信息的基本结构,是一组信息的集合,文件通过文件名来唯一标识。
在Linux操作系统中,文件名称最长允许有255个字符,可用a~z、A~Z、0~9、特殊字符等来表示。
与其他操作系统相比,Linux操作系统最大的不同就是没有“扩展名”的概念,也就是说,文件的名称和该文件的类型并没有直接联系。
例如,file01.txt 有可能是一个运行文件,而 file01.exe 有可能是一个文本文件,甚至可以不使用扩展名。
另外,Linux 操作系统文件名区分字母大小写,如file01.txt、File01.txt、 FILE01.TXT, file01.TXT在Linux操作系统中分别代表不同的文件,但在Windows操作系统中代表同一个文件。
在Linux操作系统中,如果文件名以“.”开始,则表示该文件为隐藏文件,需要使用Is -a命令才能显示出来。
隐藏文件:ls -a 显示
Linux操作系统中的每一个文件或目录都包含访问权限,这些访问权限决定了哪些用户能访问和如何访问这些文件和目录,可以通过设定权限来实现访问权限的限制。
(1)只允许用户自己访问。
(2)允许一个预先指定的用户组中的用户访问。
(3)允许系统中的任何用户访问。
- drwxr-xr-x:
- d:表示该文件类型
- 第一组rwx:文件的创建者所拥有的权限
- 第二组r-x:组群内成员的权限
- 第三组r-x:组群外其他用户的权限
- 有一个用户zhangsan,所属组为user,用户zhangsan设了一个文件a.txt
- 1.第一组权限:zhangsan
- 2.第二组权限:给user组下所有成员的
- 3.第三组权限:给user组以外成员的
设置某文件权限
- mkdir /hadoop #创建/hadoop目录
- chmod 777 /hadoop #将hadoop目录权限全部放开
- r-4 w-2 x-1 数字4,2,1分别代表的是读写执行权限,有该数字即为拥有该权限,0代表无该权限。
- 642 753
- 7:421
- 7:421
- 7:421
r w x 777
取值范围:000~111
4 2 1=7,6,5,4,3,2,1,0
一个文件或目录可能有读、写及执行权限,当创建一个文件时,系统会自动赋予文件所有者读和写的权限,这样可以允许所有者显示文件内容和修改文件。
文件或目录所有者可以将这些权限改变为任何其想要指定的权限,一个文件或目录也许只有读权限,禁止任何修改;也可能只有执行权限,允许它像一个程序一样执行。
根据赋予权限的不同,不同的用户(所有者、用户组或其他用户)能够访问不同的文件或目录,所有者是创建文件的用户,文件的所有者能够授予所在用户组的其他成员以及系统中的除所属组之外的其他用户的文件访问权限。
每一个用户针对系统中的所有文件都有其自身的读r、写w和执行权限x。
(1)第一套权限控制为访问自己的文件权限,即文件或目录所有者。
(2)第二套权限控制为用户组群访问其中一个用户的文件或目录权限。
(3)第三套权限控制为其他用户访问一个用户的文件或目录权限。
以上三套权限赋予了用户不同类型(所有者、用户组或其他用户)的读、写和执行权限,构成了一个有9种类型的权限组。
用户可以使用 Is -l 或者 ll 命令来显示文件的详细信息,其中包括文件或目录的权限,命令显示如下:
ls -l
文件或目录的详细信息,共分为7组,各组信息的含义,如图3.3所示。
文件和目录的属性信息解读如下:
(1)第一组表示文件/目录类型权限。
每一行的第一个字符一般用来区分文件的类型,一般取值为-、b、c、d、l、s、p,其具体含义,如表3.5所示。
0,1,2,3,4,5,6,7,8,9
每一行的2-10个字符表示文件的访问权限,这9个字符每3个为一组,分别为所有者权限、与所有者同一组的用户权限、其他用户权限。
① 字符2、3、4 表示该文件所有者的权限,有时简称为u(user)的权限。
②字符5、6、7表示该文件所有者属组的组成员的权限,如此文件所有者属于workgroup组群,该组群中有5个成员,表示这5个成员都有此处指定的权限,简称为g (group)的权限。
③字符8、9、10表示该文件所有者所属组群以外的其他用户的权限,简称(other)的权限。
这9个字符根据权限种类的不同而分为以下3种类型。
r:read(读取)4 对于文件有读取权限,目录是浏览权限
w:write(写入)2 对于文件具有新增、修改文件内容的权限,对于目录来讲,具有删除、移动目录中文件的权限
x:execute(执行)1 对于文件具有执行权限,对于目录有进入权限
-:表示不具有该项权限
解读文件类型权限属性信息如下。
①-rw-rw-rw-:该文件为普通文件,文件所有者、同组用户和其他用户对文件都只具有读、写权限,不具有执行权限。
② brwxr--r--:该文件为块设备文件,文件所有者具有读、写和执行的权限,同组用户和其他用户具有读取的权限。
③ drwx--x--x: 该文件是目录文件,目录所有者具有读、写和执行的权限,同组用户和其他用户能进入该目录,但无法读取任何数据。
④ Irwxrwxrwx:该文件是符号链接文件,文件所有者、同组用户和其他用户对文件都具有读、写和执行权限。
每个用户都拥有自己的主目录,通常在/home目录下,这些主目录的默认权限为drwx对于执行mkdir命令所创建的目录,其默认权限为drwxr-xr-x,用户可以根据需要修改目录权限。
相关命令如下。
- ls -l /home
- #或者
- ll /home
- #如果不加目录,则查看当前目录下的文件详情
(2)第二组表示连接数
每个文件都会将其权限与属性记录到文件系统的 i -node中,但这里使用的目录树却使用了文件记录,因此每个文件名会连接到一个 i -node,这个属性记录的就是有多少个不同的文件名连接到一个相同的 i -node。
(3)第三组表示文件/目录的拥有者
具有分配或修改权限的能力
(4)第四组表示文件/目录所数组
在Linux操作系统中,用户的账户会附属到一个或多个组群中,例如,user01、user02、user03用户均属于workgroup组群。
如果某个文件所属的组群为workgroup,且这个文件的权限为-rwxrwx---,则user01、user02、 user03用户对这个文件都具有读、写和执行的权限,但如果是不属于 workgroup 的其他用户,则其对此文件不具有任何权限。
(5)第五组表示文件/目录的容量,默认单位Byte
此组信息显示文件或目录的容量
(6)第六组表示文件/目录最后被修改的时间
此组信息显示日期(月/日)及时间。如果这个文件被修改的时间距离现在太久了,那么时间部分会仅显示年份;如果想要显示完整的时间格式,则可以利用Is的选项,即 Is -l --full -time,执行命令如下:
ls -l --full -time
(7)第七组表示文件/目录名称
文件或目录最后一项属性的信息为其名称,比较特殊的是,如果文件名称之前多了一个"." ;则代表这个文件为隐藏文件,可以使用 Is 和 Is -a 命令来查看隐藏文件,执行命令如下。
- ls
- ls -a
时间戳:
1.创建用户账户
设置——用户——解锁——认证——添加或移除用户
2.用户帐户管理
安装图形化系统管理应用程序Gnome-system-tools
sudo apt install gnome-system-tools
安装完成后,Dash面板的搜索框中输入用户
点击进入即可
3.创建和管理组帐户
用户账户管理包括建立用户账户、设置用户账户密码和用户账户维护等内容。
1.useradd(adduser)命令建立用户账户
useradd [选项] 用户名
useradd命令选项及其功能说明 P91 3-6
选项 | 功能说明 |
---|---|
-c comment | 用户的注释性信息,如全名、办公电话等 |
-d home_dir | 设置用户的主目录,默认值为"/home/用户名” |
-e YYYY-MM-DD | 设置账户的有效日期,此日期以后,用户将不能使用该账户 |
-f days | 设置账户过期多少天后用户账户被禁用,如果为0,则账户过期为-1,则账户过期后将不被禁用 |
-g group | 用户所属主组群的组群名称或者 GID |
-G group-list | 用户所属的附属组群列表,多个组群之间用逗号分隔 |
-m | 自动建立用户的主目录 |
-M | 不要自动建立用户的主目录 |
-n | 不要为用户创建用户私人组群 |
-p passwd | 加密的口令 |
-r | 建立系统账户 |
-s shell | 指定用户登录所使用的Shell,默认为/bin/bash |
-u UID | 指定用户ID,它必须是唯一的 |
使用useradd命令新建用户user10,UID为2000,用户主目录为/home/user10,用户的shell为/bin/bash,用户的密码为admin@123,用户账户永不过期,执行命令如下:
- useradd -u 2000 -d /home/user10 -s /bin/bash -p admin@123 -f -1 user10
- tail -1 /etc/passwd
如果新建用户已经存在,那么执行 useradd 命令时,系统会提示该用户已经存在。
useradd user01
2.passwd命令设置用户账户密码
超级用户可以为自己和其他用户设置密码,普通用户只能给自己设置密码
passwd [选项] 用户名
表 3.7 passwd 命令各选项及其功能说明
选项 | 功能说明 |
---|---|
-d | 删除已命名账户的密码(只有超级用户才能进行此操作) |
-l | 锁定指明账户的密码(仅限超级用户) |
-u | 解锁指明账户的密码(仅限超级用户) |
-e | 终止指明账户的密码(仅限超级用户) |
-f | 强制执行操作 |
-x | 密码的最长有效时限(只有超级用户才能进行此操作) |
-n | 密码的最短有效时限(只有超级用户才能进行此操作) |
-w | 在密码过期前多少天开始提醒用户(只有超级用户才能进行此操作) |
-i | 当密码过期多少天后该账户会被禁用(只有超级用户才能进行此操作) |
-S(大写字母 | 报告已命名账户的密码状态(只有超级用户才能进行此操作) |
使用passwd命令修改用户root和用户user10的密码 时,执行命令如下:
- root@linux01:/home# passwd #用户root修改自己的密码,直接按“Enter”键即可
- 新的 密码:
- 重新输入新的 密码:
- passwd:已成功更新密码
- root@linux01:/home#
-
- root@linux01:/home# passwd user10 #更改其他账户密码
- 新的 密码:
- 重新输入新的 密码:
- passwd:已成功更新密码
- root@linux01:/home#
3.chage命令修改用户账户口令属性 chage命令也可以修改用户账户的口令等相关属性。
其命令格式如下:
chage [选项] 用户名
表 3.8 chage 命令各选项及其功能说明
选项 | 功能说明 |
---|---|
-d | 将最近一次密码设置时间设置为“最近日期” |
-E | 将账户过期时间设置为“过期日期” |
-h | 显示此帮助信息并退出 |
I(大写的i) | 过期失效多少天后,设定密码为失效状态 |
l(小写的L) | 列出账户口令属性的各个数值 |
-m | 将两次改变密码之间相距的最小天数设为“最小天数” |
-M | 将两次改变密码之间相距的最大天数设为“最大天数" |
-W | 将过期警告天数设为“警告天数” |
使用chage命令设置用户user01的最短口令存活期为10天,最长口令存活期为90天,口令到期前3天提醒用户修改口令,设置完成后查看各属性值。
执行命令如下:
- chage -m 10 -M 90 -W3 user01
- chage -l user01
4.usermod命令修改用户账户
用户信息保存在/etc/passwd文件中,对用户的修改、添加、删除其实就是对文件的修改
(1)可以直接通过文本编辑器(vi/vim)修改文件参数(不推荐)
(2)使用usermod命令修改已经创建的用户信息,比如ID、用户所属组、默认终端等。
usermod [选项] 用户名
【选项】:-l:登录新的名称、-L:锁定用户账户信息 -u:用户新ID
usermod命令各选项及其功能说明 p93 表3-9
选项 | 功能说明 |
---|---|
-d | 用户的新主目录 |
-e | 设定账户过期的日期 |
-f | 过期失效多少天后,设定密码为失效状态 |
-g | 强制使用 GROUP 为新主组,变更所属用户组 |
-G | 新的附加组列表 GROUPS,变更附加用户组 |
-a | 将用户追加到-G 提到的附加组中,并不从其他组中删除此用户 |
-h | 显示此帮助信息并退出 |
-l | 新的登录名称 |
-L | 锁定用户账户 |
-m | 将家目录内容移动到新位置(仅与-d一起使用) |
-o | 允许使用重复的(非唯一的)UID |
-p | 将加密过的密码设为新密码 |
-R | 改变根目录到指定目录 |
-s | 用户账户的新登录 Shell |
-u | 用户账户的新ID |
-U | 解锁用户账户 |
-Z | 用户账户的新 SELinux 用户映射 |
【案例】使用usermod命令维护用户账户、禁用和恢复用户账户。
创建user02用户
- useradd -u 1800 -d /home/user02 -s /bin/bash -p admin@123 -f -1 user02 #创建user02用户
- tail -5 /etc/passwd #查看passwd文件最近5条用户信息,是否有user02用户
先来看用户user02的默认信息
id user02
将用户user02加入root用户组,这样附加组列表中会出现root用户组的字样,而基本组不会受影响。
- usermod -G root user02
- id user02
可以使用-u选项修改用户user02的ID,操作命令如下:
- usermod -u 5000 user02
- id user02
修改用户user02的主目录为/var/user02,把启动Shell修改为/bin/tabs,操作命令如下:
- usermod -d /var/user02 -s /bin/tabs user02
- tail -4 /etc/passwd
有时候需要临时禁用一个账户而不删除它,禁用用户账户可以使用passwd或usermod命令来实现,也可以通过直接修改/etc/passwd或/etc/shadow文件来实现。
【案例】暂时禁用和恢复用户user10。
可使用如下三种方式实现:
(1)使用passwd命令
- passwd -l user10
-
- tail -1 /etc/shadow
-
- passwd -u user10
(2)使用usermod命令
- usermod -L user10
-
- tail -1 /etc/shadow
-
- usermod -U user10
(3)直接修改用户账户配置文件
可以在/etc/passwd或/etc/shadow文件中,在用户user10的passwd域的第一个字符前面加”*“,以达到禁用账户的目的,在需要恢复的时候只需要删除字符”*“即可。
需要临时禁用一个用户而不删除它:可以使用passwd或usermod实现
5.userdel命令删除用户账户
想要删除一个用户账户,可以直接删除/etc/passwd或/etc/shadow文件中要删除的用户账户所对应的行,也可以使用userdel命令进行删除。
其命令格式如下:
userdel [选项] 用户名
表 3.10 userdel 命令各选项及其功能说明
选项 | 功能说明 |
---|---|
-h | 显示此帮助信息并退出 |
-r | 删除主目录及目录下的所有文件 |
-f | 强制删除主目录及目录下的所有文件 |
-R | 改变根目录到指定目录 |
-Z | 为用户账户删除所有的SELinux用户映射 |
例如,使用userdel命令删除用户账户,先创建用户user20和user30,再查看用户目录相关信息,最后删除用户user20、 user30,并查看用户主目录的变化。
- useradd -p 123456 -m user20
- useradd -p 123456 -m user30
- tail -5 /etc/passwd
删除用户user20和user30
- userdel -r user30
- userdel -f user20
- tail -5 /etc/passwd
6.groupadd命令创建组群
groupadd 命令用来在Linux 操作系统中创建用户组,只需要为不同的用户组赋予不同的权限,再将不同的用户加入不同的组,用户即可获得所在组群拥有的权限。
这种方法在Linux操作系统中有许多用户时使用非常方便。
其命令格式如下。
groupadd [选项] 组群名
groupadd 命令各选项及其功能说明如表 3.11 所示。
选项 | 功能说明 |
---|---|
-f | 如果组已经存在,则成功退出;如果 GID 已经存在,则取消-g 操作 |
-g | 新组使用 GID |
-h | 显示此帮助信息并退出 |
-k | 不使用/etc/ogin.defs 中的默认值 |
-o | 允许创建有重复 GID 的组 |
-p | 为新组使用此加密过的密码 |
-r | 创建一个系统账户 |
-R | 改变根目录到指定目录 |
例如,使用 groupadd 命令创建用户组 workgroup10,执行命令如下。
- groupadd workgroup10
- tail -5 /etc/group
- tail -5 /etc/shadow
7.groupdel命令删除组群
groupdel命令用来在Linux操作系统中删除组群,如果该组群中仍包括某些用户,则必须先使用userdel命伞删除这些用户,才能使用groupdel命令删除组群;如果有任何一个组群的使用者在线,则不能删除该组群。
其命令格式如下。
groupdel [选项] 组群名
groupdel命令各选项及其功能说明
选项 | 功能说明 |
---|---|
-h | 显示此帮助信息并退出 |
-R | 改变根目录到指定目录 |
例如,使用 groupdel 命令删除组群,执行命令如下。
- groupadd workgroup-1 #创建组群workgroup-1
- groupadd workgroup-2 #创建组群workgroup-2
- tail -6 /etc/group #查看组群是否创建成功
-
- groupdel workgroup-2 #删除workgroup-2组群
- tail -6 /etc/group #查看组群是否删除成功
8.groupmod命令更改组群识别码或名称
groupmod 命令用来在 Linux 操作系统中更改组群识别码或名称。 其命令格式如下。
groupmod [选项] 组群名
表 3.13 groupmod 命令各选项及其功能说明
选项 | 功能说明 |
---|---|
-g | 更改群组识别码 GID |
-h | 显示此帮助信息并退出- |
-n | 改名为 NEW_GROUP(新组群名) |
-o | 允许使用重复的 GID |
-р | 将密码更改为(加密过的) PASSWORD |
-R | 改变根目录到指定目录 |
例如,使用groupmod命令更改组群识别码或名称,将workgroup-1组群ID修改为3000,同时将组群名称修改为workgroup-student,并显示相关结果,执行命令如下。
- groupmod -g 3000 -n workgroup-student workgroup-1
- tail -5 /etc/group
9.gpasswd命令管理组群
可以将用户加入群组,也可以删除组群中的用户,指定管理员、设置组群成员列表、删除密码等操作。
命令格式如下:
gpasswd [选项] 组群名
例如,使用 gpasswd 命令管理组群,执行命令如下。
- #添加user01到workgroup-student组中
- gpasswd -a user01 workgroup-student #-a选项:向组中添加用户
- #添加user02到workgroup-student组中
- gpasswd -a user02 workgroup-student
- #查看是否添加成功
- tail -5 /etc/group
删除组中的用户
- gpasswd -d user02 workgroup-student #-d选项 删除组中用户
- tail -5 /etc/group #查看是否删除成功
10.chown命令修改文件的拥有者和组群
chown 命令可以将指定文件的拥有者改为指定的用户或组:
用户可以是用户名或者用户ID,组可以是组名或者组ID;
文件是以空格分开的要改变权限的文件列表,支持通配符。
系统管理员经常使用 chown 命令,如在将文件复制到另一个用户的目录下后,通过 chown 命令改变文件的拥有者和群组,使用户拥有使用该文件的权限。
在更改文件的所有者或所属群组时,可以使用用户名称或用户识别码进行设置,普通用户不能将自己的文件改成其他的拥有者,文件的操作权限一般为管理员。
其命令格式如下。
chown [选项] user[root:group] 文件名
例如,使用 chown 命令修改文件的拥有者和组群,执行命令如下。
(1)将 test01.txt 文件的属主改为 test 用户。
- root@linux01:/home# useradd -p 123456 -m test #创建test用户
- root@linux01:/home# tail -5 /etc/passwd #查看用户是否创建成功
-
-
- root@linux01:/home# touch test01.txt #创建test01.txt文件
- root@linux01:/home# ll #查看文件属性
-
- root@linux01:/home# chown test:root test01.txt #将 test01.txt 文件的属主改为 test 用户
- root@linux01:/home# ll #再次查看文件属性
(2)chown所接的新的属主和新的属组之间可以使用":"连接,属主和属组其中之一可以为空。如果属主为空,则应该是“:属组”;如果属组为空,则可以不加“:
- root@linux01:/home# ls -l test01.txt
- -rw-r--r-- 1 test root 0 3月 26 14:29 test01.txt
- root@linux01:/home# chown :test test01.txt
- root@linux01:/home# ls -l test01.txt
- -rw-r--r-- 1 test test 0 3月 26 14:29 test01.txt
- root@linux01:/home#
(3)chown也提供了-R选项,这个选项在对目录改变属主和属组时极为有用,可以通过添加-R选项来改变某个目录下的所有文件到新的属主或属组中。
- root@linux01:/home# mkdir testdir #创建testdir目录
-
- root@linux01:/home# ls -ld testdir/ #查看testdir目录的相关属性
-
- root@linux01:/home# touch testdir/test1.txt #创建文件test1.txt
- root@linux01:/home# touch testdir/test2.txt #创建文件test2.txt
- root@linux01:/home# touch testdir/test3.txt #创建文件test3.txt
- root@linux01:/home# ls -l testdir/ #查看testdir目录下文件是否创建成功
-
- root@linux01:/home# chown -R test:test testdir #批量更改testdir目录下的所有文件属主和属组为test
- root@linux01:/home# ls -l testdir/ #查看testdir目录下所有文件的相关属性
11.chgrp命令修改文件与目录所属组群
在Linux操作系统中,文件与目录的权限控制是以拥有者及所属组群来管理的,可以使用chgrp目录的所属群组,使用权限是 root 用户。
chgrp 命令是 change group的缩写,被改变的组群名必须在/etc/group 文件中。
其命令格式如下。
chgrp [选项] 组 文件名
例如,通过使用chgrp命令修改组群名称或组群识别码的方式改变了文件或目录的所属组群,相关命令如下。
(1)改变文件的组群属性,将test01用户的所属组群属性由 test更改为 bin。
- root@linux01:/home# ls -l test01.txt #更改前查看test01.txt文件信息
- root@linux01:/home# chgrp -v bin test01.txt #-v选项 运行时显示详细信息
- root@linux01:/home# ls -l test01.txt #更改后查看test01.txt文件信息
(2)改变文件test02.txt的组群属性,使得文件test02.txt的组群属性和参考文件test01.txt的组群属性相同。
- root@linux01:/home# touch test02.txt #创建test02.txt文件
- root@linux01:/home# ls -l test02.txt #查看文件属性
- root@linux01:/home# chgrp --reference=test01.txt test02.txt #将test02文件属性改为和test01.txt文件相同的属性
- #--reference选项:将指定的文件或目录的所有者与所属组都设置为参考文件或目录的所有者和所属组
- root@linux01:/home# ls -l test02.txt #查看文件属性
(3)改变指定目录及其子目录下的所有文件的组群属性。
- root@linux01:/home# ls -l testdir/
-
- root@linux01:/home# chgrp -R bin testdir/
- root@linux01:/home# ls -l testdir/
(4)通过组群识别码来改变文件组群属性。
- root@linux01:/home# tail -5 /etc/group #指定为workgroup-student组群识别码3100
- root@linux01:/home# chgrp -R 3100 test01.txt
- root@linux01:/home# ls -l test01.txt
在Ubuntu桌面环境使用文件管理器进行文件操作。打开文件管理器,执行文件浏览管理任务。
1.文件管理
要创建文件的用户必须对所创建的文件的文件夹具有写权限。
一般用户只能在自己的主目录(主文件夹)中进行文件操作。
在应用程序中,选择“文本编辑器”选项,打开文本编辑器,如图所示,
输入文件内容,单击“保存(S)”按钮,弹出“保存”对话框,如图所示,
输入文件名test01.txt,单击"保存(S)"按钮,保存文件。
Ubuntu 支持右键菜单操作,选择相应文件并单击右键,弹出右键菜单,选择“属性(R)"选项,弹出文件属性对话框,如图所示,可以进行文件权限设置。
除了用户主目录外,普通用户无法进行文件创建、删除和修改操作,除非以root身份登录。而在命令行中可以临时切换到root身份进行操作。如果权限允许,则可在文件管理器中找到相应的文本文件,直接使用gedit编辑器打开并查看文件内容。
2.文件夹管理
在图形用户界面中可通过查看或修改文件或文件夹的属性来管理访问权限,可以为所有者、所属组和其他用户设置访问权限。
打开文件管理器,在主文件夹中单击右键,在弹出的快捷菜单中选择“新建文件夹(F)”选项,弹出“新建文件夹”对话框,如图所示,
输入文件夹名称为data,单击“新建”按钮,返回用户文件夹,如图所示。
选中要设置的文件夹并单击右键,选择“属性”选项,弹出相应的文件夹属性对话框,如图所示
文件夹属性对话框中显示了该文件夹的基本信息,选择"权限"选项卡,如图所示
分别列出了所有者、所属组和其他用户的当前访问权限。要修改访问权限,可以在“访问"下拉列表中选择所需的权限。
Ubuntu Linux 对文件夹可以设置以下4种权限。
(1)无:没有任何访问权限(不能对所有者设置此权限)。
(2)只能列出文件:可列出文件清单。
(3)访问文件:可以查看文件,但是不能做任何更改。
(4)创建和删除文件:这是最高权限。
文件夹下的文件或子文件夹默认继承上级文件夹的访问权限,还可以个别定制其访问权限。
在"权限”选项卡中,单击"更改内含文件的权限”按钮,弹出“更改内含文件的权限”对话框,如图所示
可查看或设置所包含的文件和文件夹的访问权限。选择“本地网络共享”选项卡,如图所示,可以进行文件夹共享设置。
再次强调一下,只有文件所有者或root账户才有权限修改文件。
Ubuntu默认禁用root账户,在命令行中可以使用sudo命令获取root权限,而图形用户界面中的文件管理器不支持root授权,这给文件权限的管理带来了不便。
例如,管理员可以查看自己主目录之外的文件或目录的权限,但不能修改,否则将给出提示。当然,如果以 root 身份登录系统,则使用文件管理器操作文件和文件基本上不受任何限制,因此用户在操作上需要特别注意。
建立文件时,系统会自动设置文件的权限,如果这些默认权限无法满足需要,则需要使用命令来进行修改。
1.数字表示法修改文件和目录的权限
可以使用 chmod 命令来修改文件权限。通常,在修改权限时可以用两种方法来表示权限类型:数字表示法和文字表示法。
chmod [选项] 文件
读取(r)、修改(w)、执行(x)分别以数字4、2、1来表示,没有赋予的权限用0表示,再将授予的权限相加。
原始权限 | 转换为数字 | 数字表示 |
---|---|---|
rwxrwxrwx | (421)(421)(421) | 777 |
rw-rw-rw- | (420)(420)(420) | 666 |
rwxrw-rw- | (421)(420)(420) | 766 |
rwxr--r-- | (421)(400)(400) | 744 |
r--r--r-- | (400)(400)(400) | 444 |
例如,使用 chmod 命令修改文件和目录的权限,为文件/mnt/test01 设置权限,其默认权限为rw-rw-r--,要求赋予拥有者和组群成员读取和写入权限,而其他用户只有读取权限,应该将权限设置为rw-r--r--,而该权限的数字表示法为644,进行相关操作,执行命令如下。
- root@linux01:/home/zhy# ls -l test01.txt
- root@linux01:/home/zhy# chmod 644 test01.txt
- root@linux01:/home/zhy# ls -l test01.txt
2.字符表示法修改文件
(1)使用权限的文字表示法时,系统以4种字母来表示不同的用户
u:user,所有者
g:group,属组
o:others,其他用户
a:all,以上三种用户
(2)使用以下3种字符的组合表示法设置操作权限。
r:read,表示可读取。
w: write,表示可写入。
x: execute,表示可执行。
(3)操作符号包括以下 3种。
+:表示添加某种权限。
-:表示取消某种权限。
=:表示赋予给定权限并取消原来的权限。
以文字表示法修改文件权限时,使用 chmod 命令后,设置权限的命令如下。
- root@linux01:/home/zhy# ls -l test01.txt
-
- root@linux01:/home/zhy# chmod u=rwx,g=rw,o=rx test01.txt
- root@linux01:/home/zhy# ls -l test01.txt
修改目录权限和修改文件权限的方法相同,都是使用chmod命令,但不同的是,要使用通配符""来表示目录下的所有文件。
例如,修改/mnt/test 的权限时,要同时将/mnt/test 目录下的所有文件权限都设置为所有人都可以读取及写入,在/mnt/test目录下新建文件test01.txt、test02.txt、test03.txt,设置相关权限,执行命令如下。
- cd /mnt #切换目录为/mnt
- mkdir test #创建test文件夹或目录
- chmod 666 test #修改目录权限为所有人 读和写
在/mnt/test目录下新建文件test01.txt、test02.txt、test03.txt,设置相关权限,所有人都可以读取和写入,执行命令如下。
- root@linux01:/mnt# touch test/test01.txt
- root@linux01:/mnt# touch test/test02.txt
- root@linux01:/mnt# touch test/test03.txt
- root@linux01:/mnt# ls -l test
- #设置相关权限,所有人都可以读取和写入
- root@linux01:/mnt# chmod 666 test/test01.txt
- root@linux01:/mnt# chmod 666 test/test02.txt
- root@linux01:/mnt# chmod 666 test/test03.txt
- root@linux01:/mnt# ls -l test
如果目录下包含子目录,则必须使用-R选项来同时设置所有文件及子目录的权限,在/mnt/test目录下新建子目录/aaa 和/bbb,同时在子目录/aaa 下新建文件 user01.txt,在子目录/bbb 下新建文件 user02.txt,
- root@linux01:/mnt# cd test #进入test目录
- root@linux01:/mnt/test# ls #查看目录下有哪些文件
- test01.txt test02.txt test03.txt
- root@linux01:/mnt/test# mkdir aaa #创建aaa目录
- root@linux01:/mnt/test# mkdir bbb #创建bbb目录
- root@linux01:/mnt/test# ls #查看文件是否创建成功
- aaa bbb test01.txt test02.txt test03.txt
- root@linux01:/mnt/test# cd aaa/ #切换到aaa目录下
- root@linux01:/mnt/test/aaa# touch user01.txt #创建user01.txt文件
- root@linux01:/mnt/test/aaa# ls #查看文件是否创建成功
- user01.txt
- root@linux01:/mnt/test/aaa# cd .. #返回上一级目录
- root@linux01:/mnt/test# cd bbb/ #切换到bbb目录
- root@linux01:/mnt/test/bbb# touch user02.txt ##创建user02.txt文件
- root@linux01:/mnt/test/bbb# ls #查看文件是否创建成功
- user02.txt
- root@linux01:/mnt/test/bbb#
设置/mnt/test 子目录及文件的权限为只读,设置相关权限,执行命令如下。
r--r--r--:444
- root@linux01:/mnt/test/bbb# chmod -R 444 /mnt/test #chmod -R a=r /mnt/test也可以实现同样的效果
- root@linux01:/mnt/test/bbb# cd /mnt/test
- root@linux01:/mnt/test# ls -l
- 总用量 8
- dr--r--r-- 2 root root 4096 3月 26 15:56 aaa
- dr--r--r-- 2 root root 4096 3月 26 15:56 bbb
- -r--r--r-- 1 root root 0 3月 26 15:52 test01.txt
- -r--r--r-- 1 root root 0 3月 26 15:52 test02.txt
- -r--r--r-- 1 root root 0 3月 26 15:52 test03.txt
- root@linux01:/mnt/test# ls -l aaa/
- 总用量 0
- -r--r--r-- 1 root root 0 3月 26 15:56 user01.txt
- root@linux01:/mnt/test# ls -l bbb/
- 总用量 0
- -r--r--r-- 1 root root 0 3月 26 15:56 user02.txt
- root@linux01:/mnt/test#
例如,当要设定一个文件的权限为-rwxrw-rw-时,使用文字表示法所表述的含义如下。
(1)user (u):文件具有可读取、可写入及可执行的权限。
(2) group与other (g与o):文件具有可读取、可写入的权限,但不具有可执行的权限。 执行相关命令如下。
- root@linux01:/mnt/test# touch aa.txt #创建aa.txt文件
- root@linux01:/mnt/test# ls
- aaa aa.txt bbb test01.txt test02.txt test03.txt
- root@linux01:/mnt/test# ls -l aa.txt #查看文件权限
- -rw-r--r-- 1 root root 0 3月 26 16:05 aa.txt
- root@linux01:/mnt/test# chmod u=rwx,g=rw,o=rw aa.txt #按要求修改文件权限
- root@linux01:/mnt/test# ls -l aa.txt #查看文件权限
- -rwxrw-rw- 1 root root 0 3月 26 16:05 aa.txt
- root@linux01:/mnt/test#
如果要设定一个文件的权限为-rwxrw-r--,则应该如何操作呢?此时,可以通过
chmod u=rwx,g=rw,o=r filename
命令来设定。另外,如果不知道原先的文件属性,而想增加所有人均有写入的权限,应该如何操作?
设定/mnt/bbb.txt 文件,执行命令如下。
- root@linux01:/mnt/test# touch bbb.txt
- root@linux01:/mnt/test# ls -l bbb.txt
- -rw-r--r-- 1 root root 0 3月 26 16:09 bbb.txt
- root@linux01:/mnt/test# chmod a=w bbb.txt
- root@linux01:/mnt/test# ls -l bbb.txt
- --w--w--w- 1 root root 0 3月 26 16:09 bbb.txt
- root@linux01:/mnt/test# chmod a+w bbb.txt a-x:增加(+)所有人(a)的写入(w)权限
- root@linux01:/mnt/test# ls -l bbb.txt
- --w--w--w- 1 root root 0 3月 26 16:09 bbb.txt
- root@linux01:/mnt/test#
如果要将文件的某些权限取消而不改动其他已存在的权限,应该如何操作呢?
例如,要想取消所有人的可执行权限,可以执行如下命令。
- root@linux01:/mnt/test# chmod a-x aa.txt #a-x:取消(-)所有人(a)的执行(x)权限
- root@linux01:/mnt/test# ls -l aa.txt
- -rw-rw-rw- 1 root root 0 3月 26 16:05 aa.txt
- root@linux01:/mnt/test#
在+与-的状态下,只要不是指定的项目,权限是不会变动的。
例如,在前面的例子中,仅取消了× 的权限,其他权限值保持不变。如果想让用户拥有执行的权限,但又不知道该文件原来的权限,则使用chmod a+x filename命令即可使该程序有被执行的权限。
权限对于使用者来说是非常重要的,因为权限可以决定使用者能否进行读取、写入、修改、建立、删除、执行文件或目录等操作。
3.文件系统高级权限
SET位权限:特殊权限,一般文件的权限是rwx,某些特殊场合下,可能无法满足要求,为了方便普通用户执行特殊命令,可以通过SUID、SGID权限,允许普通用户执行某些程序。
因此,Linux操作系统提供了一些额外的权限,只要设置了这些权限,就会具有一些额外的功能。
chmod u+s 命令就是为某个程序的所有者授予SUID、SGID权限,使其可以像root用户一样进行操作。
使用chmod命令设置特殊权限时,其命令格式如下。
chmod u+s 或g+s 可执行文件
关于SET 位权限命令设置的几点说明如下。
①设置对象:可执行文件。完成设置后,此文件的使用者在使用文件的过程中会临时获得该文件的属主身份及部分权限。
②设置位置: SUID附加在文件属主的×权限位上,表示对该用户增加SET位权限; SGID附加在属组的 × 权限位上,表示对属组中的用户增加 SET 位权限。
③设置后的变化:此文件属主或属组的×权限位会变为s。
例如,设置/usr/bin/mkdir文件的SUID权限时,执行命令如下。
特殊权限也可以采用数字表示法, SUID、 SGID和SBIT权限(Sticky BIT粘带位权限,简称SBIT)分别以4、2和1来表示,使用chmod命令设置文件权限时,可以在普通权限的数字前面加上一位数字来表示特殊权限。
例如,设置/mnt/test01文件的特殊权限时,执行命令如下。
4.修改文件和目录的默认权限与隐藏权限
文件和目录的权限包括读取(r)、写入(w)、执行(×)等。决定文件和目录类型的属性包括目录(d)、文件(-)、连接(1)等。
修改权限时可以通过使用chmod、chown、chgrp等命令来实现。
在Linux的ext2、ext3、ext4文件系统中,除基本的读取、写入、执行权限外,还可以设置系统隐藏属性。
设置系统隐藏属性可以使用 chattr 命令,而使用Isattr命令可以查看隐藏属性。
另外,出于安全机制方面的考虑,可以设定文件不可修改的特性,即文件的拥有者也不能修改文件,这也是非常重要的。
查看文件默认权限方式:
(1)直接输入umask,可以看到数字形态的权限设定
(2)加-S选项,以符号方式进行权限显示
5.文件访问控制列表
通常情况下,在 Ubuntu Linux 中用户看到的普通用户命令提示符是$。当需要执行 root 权限的命令时,一种方式是在命令前面加上sudo,根据提示输入正确的密码后,,Ubuntu操作系统将会执行该命令,该用户就好像是超级用户;另一种方式是使用su命令切换到root用户,执行相关命令。
1.su命令
su 命令su命令可在不注销的情况下切换到系统中的另一个用户。
su命令可以让一个普通用户拥有root用户或其他用户的权限,也可以让root用户以普通用户的身份做一些事情。
若没有指定的使用者账户,则系统默认值为root用户。
普通用户使用这个命令时必须有root用户或其他用户的密码, root用户向普通用户切换时不需要密码。如果要离开当前用户的身份,则可使用exit命令,返回默认用户。
其命令格式如下。
su [选项] [-] [USER[参数]...]
su命令的优点:su 命令为管理带来了方便,只要把 root 用户的密码交给普通用户,普通用户就可以通过 su命令切换到 root用户,完成相应的管理工作任务。
su命令的缺点: root用户把密码交给了普通用户,这种方法存在安全隐患。如果系统有10个用户需要执行管理工作任务,则意味着要把root用户的密码告诉这10个用户,这在一定程度上对系统安全构成了威胁,因此su命令在多人参与的系统管理中不是非常好的选择。
为了解决该问题,可以使用 sudo 命令。
2.sudo命令
sudo 命令可以让用户以其他的身份来执行指定的命令,默认的身份为 root。
在/etc/sudoers文件中,系统设置了可执行sudo命令的用户,若未经授权的用户企图使用sudo命令,则系统会发送警告邮件给管理员。
用户使用sudo命令时,必须先输入密码,输入密码有5分钟的有效期限,超过有效期限时必须重新输入密码。
sudo提供的日志真实地记录了每个用户使用sudo命令时做了哪些操作,并将日志传到中心主机或者日志服务器中。
通过 sudo命令可以把某些超级权限有针对性地下放,且不需要普通用户知道root用户的密码,所以sudo命令相对于权限无限制的su命令来说是比较安全的,故sudo命令也被称为受限制的su命令;
另外, sudo命令是需要授权许可的,所以也被称为授权许可的su命令。
其命令格式如下。
sudo [选项] [-s] [-u用户] command
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。