1.用户和用户组概念

回到顶部

Linux是典型的多用户多任务操作系统,在使用linux操作系统之前,必须首先向系统管理员申请账号,然后通过帐号登录系统。

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

默认情况下,系统上所有账号包括root的相关信息, 都是记录在/etc/passwd文件中。用户的口令密码记录在/etc/shadow文件中。Linux用户组纪录在/etc/group文件内!

在每次使用linux系统之前,我们需要先登录linux。这时就需要用户账号和密码了,

用户的账号一方面可以控制用户对系统资源的访问,帮助系统管理员对使用系统的用户进行跟踪;

另一方面也可以帮助用户组织文件,并为用户提供安全性保护。

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

不同的用户拥有不同的权限,在linux中,root拥有至高无上的权限。

linux的每个用户,都会加入至少一个用户组中。在一个用户组中的用户,就会拥有该用户组的相应权限。

每个用户都会有一个用户名,一个用户一定会加入一个用户组,称为主用户组,可能会加入多个用户组,称为附属用户组。

2.用户UID和用户组GID

回到顶部

系统中每个用户和用户组都分别对应唯一的ID,用户ID称为UID(User ID),用户组ID称为GID(Group ID)。

linux内部通过ID号识别用户和用户组。而用户则通过用户名和用户组名识别用户。

linux用户信息记录在/etc/passwd文件中,用户组信息记录在/etc/group文件中。

除了查看/etc/passwd和/etc/group文件外,我们也可以使用id命令观察用户的UID和GID,

id命令可以查询某个用户的UID和GID等信息,不需要刻意关注id的选项,只需要使用默认选项就可以了!

id命令常用格式如下:

[root@study ~]# id [username]

如果不加任何参数,id默认显示当前登录用户的id信息,假设当前登录账号为root,用id查看root的ID:

[root@study ~]# id

uid=0(root) gid=0(root) groups=0(root)

可以看到超级用户root的uid和gid都是0,root也只有一个群组,那就是root组。

用id看看peter的id:

[root@study ~]# id peter

uid=1000(peter) gid=1000(peter) groups=1000(peter),0(root),4(adm),24(cdrom),27(sudo),30(dip),46(plugdev),112(lpadmin),127(sambashare),999(vboxsf)

可以看到当前登录用户为peter,uid和gid都是1000. groups就是peter所加入的所有用户组id,上面我们可以看出peter加入了好多用户组。

如果是系统中不存在的用户,id也会给出用户不存在的提示,可以据此判断系统中是否存在某个账号:

[root@study ~]# id peterr

id: ‘peterr’: no such user

3.linux文件的拥有者和所属用户组

回到顶部

linux文件的拥有者和所属用户组是文件的两个重要属性,在用ls -al显示文件属性的时候,

linux会根据文件的用户ID和所属用户组ID分别从/etc/passwd和/etc/group文件中找到对应的用户名和用户组名并显示出来。

所以在用ls -al查看linux文件属性的时候,我们看到的是文件的拥有者名称和所属用户组名称。

但是在linux内部,linux文件的拥有者和所属用户组属性记录的是拥有者和所属用户组对应的ID。

有时候我们在网络上下载一些文件,文件的拥有者和所属用户组属性显示的是ID号,

因为这个下载的文件的拥有者和所属用户组并不是linux主机中的存在的用户,linux无法找到和ID号对应的用户和用户组,

只能显示ID号码。不过这种情况是极少发生的,因为linux的处理是谁下载的文件这个文件就属于谁。

不过我们依然可以做个小实验验证一下,例如当前的登录账号为peter,peter的ID为1000,

我们通过ls -al /home/peter发现该目录下的所有文件的拥有者就是peter:

[root@study ~]# ls -al /home/peter

drwxr-xr-x 6 peter peter 4096 Feb 23 11:09 .

drwxr-xr-x 39 peter peter 4096 Feb 23 11:16 ..

...省略...

-rw-r--r-- 1 peter peter 101213499 Jul 13 2019 kblog.tar.gz

drwxr-xr-x 8 peter peter 4096 Oct 6 21:14 linuxsource

...省略...

我们切换到root账号,以root身份编辑vim /etc/passwd文件,将peter的ID改成系统中还没有分配的一个号码,例如1010。

[root@study ~]# vim /etc/passwd

...省略...

peter:x:1010:1000:peter,,,:/home/peter:/bin/bash #将ID号1000改为1010

...省略...

再次观察/home/peter目录中的文件属性,会发现该目录的下所有文件的拥有者变成了1000:

[root@study ~]# ls -al /home/peter

drwxr-xr-x 6 1000 peter 4096 Feb 23 11:09 .

drwxr-xr-x 39 1000 peter 4096 Feb 23 11:16 ..

...省略...

-rw-r--r-- 1 1000 peter 101213499 Jul 13 2019 kblog.tar.gz

drwxr-xr-x 8 1000 peter 4096 Oct 6 21:14 linuxsource

...省略...

这是因为我们把peter的ID号改成1010后,ls无法找到1000对应的用户名了,只能显示ID号码了。

做完这个小实验后请立即将/etc/passwd文件恢复原样:

[root@study ~]# vim /etc/passwd

...省略...

peter:x:1000:1000:peter,,,:/home/peter:/bin/bash #将ID号改回1000

...省略...

不过这里我们留个一个大坑,上面的切换到root账号的方法有很多,可能想到的方法是:

1.先登出系统,再以root身份登录;

2.用ctl+alt+[F1-F6]切换到其他终端,以root身份登录;

3.使用su命令切换到root;

4.在执行编辑文件命令的前面加上sudo;

特别要注意的是第四种方法,如果用sudo的话,再次编辑/etc/passwd文件的时候,系统已经无法识别你了,所以无法使用root权限了,也无法切换到root账号了:

[peter@study ~]# sudo vim /etc/passwd

sudo: unknown uid 1000: who are you?

[peter@study ~]# su

su: Cannot determine your user name.

[peter@study ~]# su -

su: Cannot determine your user name.

如果你是用的这种方法修改的/etc/passwd文件,赶紧登出系统再以为root身份登录或者使用ctl+alt+[F1-F6]切换到其他终端,以root身份登录,

然后将/etc/passwd文件恢复原样。

如果没有将/etc/passwd文件恢复原样,那么下次peter再次登录系统时,原本属于peter的文件将不在属于peter了,会面临许多权限问题,甚至无法进入自己的家目录!

如果是在企业生产环境下出现这样的问题,将是一个不小的企业生产事故。

以上的练习只能在自己的练习机上操作,切忌千万不可在企业生产环境下操作。

在正常运行的Linux系统环境上已经有很多的数据被建立了,随意修改系统上某些账号的UID,很可能会由于权限问题而导致某些程序无法进行,

导致整个系统无法顺利运行!

initroot编辑整理,转载请注明www.initroot.com

linux中root所属的组的gid为,linux用户和用户组相关推荐

  1. 在linux下 用户的密码错误,linux中root用户密码错误如何解决

    linux中root用户密码错误如何解决 发布时间:2020-04-27 10:53:03 来源:亿速云 阅读:230 作者:小新 今天小编给大家分享的是linux中root用户密码错误如何解决,相信 ...

  2. linux存放脚本目录,linux中Shell脚本所在目录的绝对路径linux操作系统 -电脑资料...

    linux shell 脚本里面如果想得到当前脚本文件存放的绝对路径,也没有太现成的命令可以调用,不过可以通过下面的语句来获取:代码如下复制代码 baseDirForScriptSelf=$(cd & ...

  3. linux中如何设置群组路径,入门指南:管理Ubuntu用户和群组

    Ubuntu Linux用户群组可以帮你管理用户,为用户设置使用权限,甚至还可以设置用户使用电脑的时间.操作起来简单好用,一点也不比Windows差,最重要的呢肯花点时间去研究一下.本文将通过浅显易懂 ...

  4. linux添加有效群组,Linux中的有效群组和初始群组

    在Linux中,每个账号都可以加入多个群组,那用户登录后默认的用的是哪个群组呢?关于这个问题就要说说有效群组和初始群组了. 在用户账号信息文件/etc/passwd中,那个由冒号分割的7个栏目中,第四 ...

  5. linux中什么是软件包组,Linux软件包组的选择

    当分区被选定并按配置格式化后,你便可以选择要安装的软件包了. 除非你选择的是定制安装,安装程序将会自动为你选择多数软件包. 例如,如果你要执行个人桌面安装,你会看到一个和以下类似的屏幕: 图 3-25 ...

  6. linux中的ftp是什么意思,什么是linux的ftp

    vsftpd是一款在Linux发行版中最受推崇的FTP服务器程序. 特点是小巧轻快,安全易用.并且是一个完全免费开放源码的ftp软件 ftp的作用: FTP(File Transfer Protoco ...

  7. linux中ll下第一个字符是l,linux ls -l 详解

    以root的家目录为例: 可以看到,用ls -l命令查看某一个目录会得到一个7个字段的列表. 第1行:总计(total) Total后面的数字是指当前目录下所有文件所占用的空间总和.可以使用ls –l ...

  8. linux中设备文件的主要内容包括什么,LINUX期末考试复习题.doc

    LINUX期末考试复习题 LINUX期末考试复习题一.单项选择题 1.Linux是( )年由芬兰赫尔辛基大学的学生( )在Minix系统的基础上开发完成的. A.1991,Linus Benedict ...

  9. openssl生成证书linux,linux中openssl生成证书和自签证书linux操作系统 -电脑资料

    下面来给大家介绍关于linux中openssl生成证书和自签证书的例子,整个过程都讲述的非常详细有兴趣的朋友可进入参考, 1.首先要生成服务器端的私钥(key文件):代码如下复制代码 openssl ...

最新文章

  1. MySQL视图的创建、修改与删除
  2. node 修改html文件路径,好程序员前端教程-nodejs如何读取文件夹目录的内容
  3. 无缓冲channel
  4. 电信运营商x86服务器定制策略
  5. swag您的装置不支持_209P型铁路客车转向架之轮对轴箱弹簧定位装置简介
  6. (转载)C#提取汉字拼音首字母的方法
  7. ETH突破620美元关口 日内涨幅为5.36%
  8. 阿里云获ITSS最高等级认证:公共云、专有云服务能力双一级...
  9. TortoiseGit安装配置详解同时支持github,gitee,gitlab
  10. 在微信公众号中写html代码吗,微信公众号代码编写怎么做
  11. pythonexcel源码_Python对Excel操作详解_Python教程
  12. 夜间灯光数据dn值_DMSP/OLS和VIIRS/DNB夜间灯光影像的校正及拟合
  13. 修改网站背景图html代码,网站首页顶部添加背景图片的修改代码
  14. java导入excel数据为树形处理
  15. XDG0062 XAML 与XDG0008 XAML 错误的解决办法
  16. RFBNet模型推理
  17. 用LSTM生成武侠人名
  18. 如何使用windos远程桌面连接
  19. 蚂蚁金服面试题及答案-总结
  20. 搜狗并入腾讯,看点再战头条?

热门文章

  1. 关于用.9.png格式处理图标失真问题
  2. commands out of sync mysql_MySQL问题一则:Commands out of sync; you can't run this command now以及相关问题...
  3. 3-RRR 并行机械结构分析
  4. (c++)请编写程序,输入正整数 n,计算平方和 s=1 平方 +2 平方+3平方+⋯+n 平方。
  5. 计算机网络中 碰撞检测,虚拟现实中碰撞检测算法研究
  6. IntelliJ IDEA快捷键大全 + 动图演示,建议收藏!
  7. 关于List index out of bounds(0)的问题
  8. 工作岗位和职责的认识
  9. Zabbix,Nagios,OneAPM Servers 安装部署大比拼
  10. ifstream一次性读取文件的全部内容