① linux命令之用户组管理
Linux中每个用户都要属于一个或多个组,有了用户组,就可以将用户添加到组中,这样就方便管理员对用户的集中管理。 Linux系统中用户组分为root组、系统组、普通用户组三类。当一个用户属于多个组时,这些组中只能有一个作为该用户的主属组,其他组就被称为此用户的次属组。 组基本信息在文件/etc/group中;组密码信息在文件/etc/gshadow中。通过命令:cat /etc/group、cat /etc/gshadow可查看文件内容。
各用户组中,以 ":" 作为字段之间的分隔符,分为 4 个字段,每个字段对应的含义为:
组名:密码:GID:该用户组中的用户列表
而在gshadow文件中,每行代表一个组用户的密码信息,各行信息用 ":" 作为分隔符,分为 4 个字段,每个字段的含义如下:
组名:加密密码:组管理员:组附加用户列表
root用户可以直接修改/etc/group文件达到管理组的目的,也可以使用以下命令:groupadd、groupdel、groupmod -n、gpasswd -a、gpasswd -d、newgrp。
下面使用案例分别讲解这些命令:
添加用户组的命令是 groupadd,命令格式如下:
groupadd [ -g gid [ -o ] ] [ -r ] [ -f ] group
参数说明:
-g:指定新建工作组的 id;
-r:创建系统工作组,系统工作组的组ID小于 500;
-K:覆盖配置文件 "/ect/login.defs";
-o:允许添加组 ID 号不唯一的工作组。
-f,--force: 如果指定的组已经存在,此选项将失明了仅以成功状态退出。当与 -g 一起使用,并且指定的GID_MIN已经存在时,选择另一个唯一的GID(即-g关闭)。
示例:创建一个新的组,并添加组 ID。
[root@VM-4-4-centos ~]# groupadd -g 888 newgroup
此时在/etc/group文件中产生了一个id为888的项目:
删除用户组时,可用groupdel(group delete)指令来完成。倘若该组中仍包括某些用户,则必须先删除这些用户后,方能删除组。 注意:删除的组不能为主属组! 命令格式:
groupdel [组名]
示例:删除用户组 newgroup
[root@VM-4-4-centos ~]# groupdel newgroup
此时再查看/etc/group文件时可以看到用户组newgroup已经不存在,删除成功!
要更改用户组识别码或名称可使用 groupmod 来完成。命令格式:
groupmod [ -g <群组识别码> < -o > ] [ -n <新群组名称 > ] [原群组名称]
参数说明 :
-g <群组识别码> 设置欲使用的群组识别码。
-o 重复使用群组识别码。
-n <新群组名称> 设置欲使用的群组名称。
示例:创建用户组newgroup并修改其名称为modifiedgroup
[root@VM-4-4-centos ~]# groupadd newgroup
[root@VM-4-4-centos ~]# groupmod -n modifiedgroup newgroup
查看/etc/group文件,只存在名称为modifiedgroup的用户组,修改成功!
gpasswd 是 Linux 下工作组文件 /etc/group 和 /etc/gshadow 管理工具,用于将一个用户添加到组或者从组中删除。命令格式:
gpasswd [可选项] 组名
可选项参数 :
-a:添加用户到组;
-d:从组删除用户;
-A:指定管理员;
-M:指定组成员和-A的用途差不多;
-r:删除密码;
-R:限制用户登入组,只有组中的成员才可以用newgrp加入该组。
示例1:将用户yangwei添加到组modifiedgroup中
[root@VM-4-4-centos ~]# gpasswd -a yangwei modifiedgroup
此时查看/etc/group文件发现组 modifiedgroup中出现用户yangwei
示例2:将用户yangwei从组modifiedgroup中给删除
[root@VM-4-4-centos ~]# gpasswd -d yangwei modifiedgroup
再次查看/etc/group文件发现用户yangwei已经不存在。
当需要在不同的群组下工作的时候我们需要进行切换群组操作,这个操作由newgrp指令来完成。命令格式如下:
newgrp [群组名称]
注意!当前用户必须都是两个群组的成员,否则切换群组时需要输入切换组的组密码,这时候当前用户作为临时成员在切换组下工作,所创建的文件全都属于切换组。
示例1:用户yangwei不属于群组modifiedgroup,请将当前工作组切换为modifiedgroup。
示例2:将用户yangwei添加到组modifiedgroup中,并切换工作组为modifiedgroup。
总结:Linux用户组管理需要掌握最基本的几个命令及其选项参数: groupadd 、groupdel 、groupmod 、gpasswd 、newgrp !
② Linux /etc 解读
/etc 是Linux下的一个目录,在很多的配置过程中我们很可能都接触过它,关于 etc 的字面意思,有人说是“et cetera” (直译是“等等,用于放其它目录下不匹配的东西,什么杂七杂八的都有”),也有传言说是"Editable Text Configuration",也有人戏说是“Every Thing Config”,但是至今没有一个明确的定论。
The file system hierarchy standard [ FSHS ] explains /etc as follows :
It further goes on to say :
While this is the long and short of the matter, some believe that '/etc' is indeed an acronym and stands for "Editable Text Configuration". Oh well, the media is still not out with the verdict.
/etc/group 文件是管理Linux的用户组的文件,一般的group文件形式如下所示:
该文件的解读方法如下所示:
Ref:
③ Linux 中文件属性以及文件权限
可以看到列出了当前目录下的所有文件,包括权限信息,所属用户,日期和文件名,其它很好理解但是看到 -rwxrwxr-x 这一串字符的时候完全是懵逼状态的,我是谁?我在哪?我要干什么?😆先来对里面的字符一步步拆分吧。
首先第一个字符用来标识是文件还是目录,这里只列出两个有代表性的:
然后在接下来的剩余字符中,以三个为一组,且均为『rwx』 的三个参数的组合。其中,[ r ] 代表可读 (read)、[ w ] 代表可写 (write)、[ x ] 代表可执行 (execute)。我们知道,在 Linux 中,文件的基本权限就有九个,分别是
owner/group/others 三种身份各有自己的 read/write/execute 权限。那我们就明白了,并且可以得出结论:
我们如果想要查看单个文件的默认权限可以使用命令: ls -al 文件名
可以看到文件 hello.c 的默认权限为 -rwxr-xr-- ,要改变它的权限为 rwxrwxr-x ,我们可以使用 chmod 命令,有两种方法设置方法:
1、符号类型改变文件权限: chmod u=rwx,g=rwx,o=rx 文件名
从上示例中可以看到 hello.c 的权限已经变成 rwxrwxr-x 。
2、数字类型改变文件权限,各权限的分数对照表如下:
每种身份(owner/group/others)各自的三个权限(r/w/x)分数是需要累加的,例如当权限为: [-rwxrwx---] 分数则是:
变更权限的指令 chmod 的语法是这样的:
选项与参数:
如果要将 hello.c 的所有权限都启用,那么可以这样:
一顿操作猛如虎, hello.c 的文件权限变更为 rwxrwxrwx ,😆美滋滋。
刚接触 Linux,如果有写得不对的地方,希望能指出,一起交流,一起学习😯。
④ Linux 基础命令
不管是重启系统还是关闭系统,通常先要要运行 sync 命令,把内存中的数据写到磁盘中
Linux 每个用户都有一个用户组,系统可以对一个用户组中的所有用户进行集中管理。
类似于角色,系统可以对有共性的多个用户进行统一的管理。
(1)/etc/passwd 文件
用户(user)的配置文件,记录用户的各种信息
每行的含义:用户名:口令:用户标识号:组标识号:注释性描述:主目录:登录
(2)/etc/shadow 文件
口令的配置文件
每行的含义:登录名:加密口令:最后一次修改时间:最小时间间隔:最大时间间隔:警告时间:不活动时间:失效时间:保留
(3)/etc/group 文件
组(group)的配置文件,记录 Linux 包含的组的信息
每行含义:组名:口令:组标识号:组内用户列表
运行级别说明:
0 :关机
1 :单用户 [类似安全模式, 这个模式可以帮助找回 root 密码]
2:多用户状态没有网络服务
3:多用户状态有网络服务 [使用最多]
4:系统未使用保留给用户
5:图形界面
6:系统重启
常用运行级别是 3 和 5 ,要修改默认的运行级别可改文件
如果指定运行级别
/etc/inittab 的
id:5:initdefault:这一行中的数字
也可以通过 init 来切换不同的运行级别
假设我们的 root 密码忘记了,请问如何找回密码
启动时->快速输入 enter->输入 e-> 进入到编辑界面-> 选择中间有 kernel 项->
输入 e(edit)-> 在该行的最后写入 1 [表示修改内核,临时生效]-> 输入 enter->
输入 b [boot]-> 进入到单用户模式 【这里就可以做补救工作】
2.4 挂载
2.5 上面的方式,只是临时生效,当你重启系统,挂载的关系没有, 配置 linux 的分区表,实现启动时,自动挂载
2.6 重启后,会自动挂载.
2.7 卸载
指令:umount 设备名 | 挂载路径
1.修改配置文件
文件中内容
NETWORKING=yes
NETWORKING_IPV6=no
HOSTNAME= hadoop //写入新的主机名
注意:主机名称不要有“_”下划线
这种方式只是临时生效,当重启系统后,还是回归以前对服务的设置。
如果希望设置某个服务自启动或关闭永久生效,要使用 chkconfig 指令
4.3 应用实例
4.4 使用细节
chkconfig重新设置服务后自启动或关闭,重启机器就会按设置的状态运行
查看系统网络情况
⑤ Linux文件基本属性
Linux系统是一种典型的多用户系统,不同的用户处于不同的地位,拥有不同的权限。为了保护系统的安全性,Linux系统对不同的用户访问同一文件(包括目录文件)的权限做了不同的规定。
在Linux中我们可以使用ll或者ls –l命令来显示一个文件的属性以及文件所属的用户和组,如:
[root@www /]# ls -l
total 64
dr-xr-xr-x 2 root root 4096 Dec 14 2012 bin
dr-xr-xr-x 4 root root 4096 Apr 19 2012 boot
……
实例中,bin文件的第一个属性用"d"表示。"d"在Linux中代表该文件是一个目录文件。
在Linux中第一个字符代表这个文件是目录、文件或链接文件等等。
接下来的字符中,以三个为一组,且均为『rwx』 的三个参数的组合。其中,[ r ]代表可读(read)、[ w ]代表可写(write)、[ x ]代表可执行(execute)。 要注意的是,这三个权限的位置不会改变,如果没有权限,就会出现减号[ - ]而已。
每个文件的属性由左边第一部分的10个字符来确定(如下图)。
从左至右用0-9这些数字来表示。
第0位确定文件类型,第1-3位确定属主(该文件的所有者)拥有该文件的权限。
第4-6位确定属组(所有者的同组用户)拥有该文件的权限,第7-9位确定其他用户拥有该文件的权限。
其中,第1、4、7位表示读权限,如果用"r"字符表示,则有读权限,如果用"-"字符表示,则没有读权限;
第2、5、8位表示写权限,如果用"w"字符表示,则有写权限,如果用"-"字符表示没有写权限;第3、6、9位表示可执行权限,如果用"x"字符表示,则有执行权限,如果用"-"字符表示,则没有执行权限。
语法:
chgrp [-R] 属组名 文件名
参数选项
语法:
chown [–R] 属主名 文件名
chown [-R] 属主名:属组名 文件名
进入 /root 目录(~)将install.log的拥有者改为bin这个账号:
[root@www ~]# chown bin install.log
[root@www ~]# ls -l
-rw-r--r-- 1 bin users 68495 Jun 25 08:53 install.log
将install.log的拥有者与群组改回为root:
[root@www ~]# chown root:root install.log
[root@www ~]# ls -l
-rw-r--r-- 1 root root 68495 Jun 25 08:53 install.log
Linux文件属性有两种设置方法,一种是数字,一种是符号。
Linux文件的基本权限就有九个,分别是owner/group/others三种身份各有自己的read/write/execute权限。
先复习一下刚刚上面提到的数据:文件的权限字符为:『-rwxrwxrwx』, 这九个权限是三个三个一组的!其中,我们可以使用数字来代表各个权限,各权限的分数对照表如下:
每种身份(owner/group/others)各自的三个权限(r/w/x)分数是需要累加的,例如当权限为: [-rwxrwx---] 分数则是:
所以等一下我们设定权限的变更时,该文件的权限数字就是770啦!变更权限的指令chmod的语法是这样的:
chmod [-R] xyz 文件或目录
选项与参数:
举例来说,如果要将.bashrc这个文件所有的权限都设定启用,那么命令如下:
[root@www ~]# ls -al .bashrc
-rw-r--r-- 1 root root 395 Jul 4 11:45 .bashrc
[root@www ~]# chmod 777 .bashrc
[root@www ~]# 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。
还有一个改变权限的方法,从之前的介绍中我们可以发现,基本上就九个权限分别是:
那么我们就可以使用 u, g, o 来代表三种身份的权限!
此外, a 则代表 all ,即全部的身份。读写的权限可以写成 r, w, x ,也就是可以使用下表的方式来看:
<colgroup><col span="1" width="166"><col span="1" width="166"><col span="1" width="166"><col span="1" width="166"><col span="1" width="166"></colgroup>
| chmod | u
g
o
a | +(加入)
-(除去)
=(设定) | r
w
x | 文件或目录 |
如果我们需要将文件权限设置为 -rwxr-xr-- ,可以使用 chmod u=rwx,g=rx,o=r 文件名 来设定:
-rw-r--r-- 1 root root 0 Nov 15 10:32 test1
-rwxr-xr-- 1 root root 0 Nov 15 10:32 test1
而如果是要将权限去掉而不改变其他已存在的权限呢?例如要拿掉全部人的可执行权限,则:
-rw-r--r-- 1 root root 0 Nov 15 10:32 test1