文档章节

Linux下的用户和组

大培哥
 大培哥
发布于 2015/11/17 19:14
字数 1527
阅读 108
收藏 6

用户和组

GNU/Linux 通过用户和用户组实访问控制 —— 包括对文件访问、设备使用的控制。Linux 默认的访问控制机制相对简单直接,不过还有一些更加高级的机制,包括 ACL 和 LDAP Authentication.

简述

用户一般指使用计算机的人。在本文语境中,该词指用来识别用户的用户名称,既可以是 Mary 或 Bill 这样的真名,也可以是 Dragonlady, Pirate 这样的昵称。关键是,计算机给每个账户分配了特定的名称,而用户则使用这些名称访问计算机。除了人之外,一些系统服务也以有部分限制,又享有部分特权的用户账户身份运行。

由于安全需要,「用户管理」应运而生,以加以明确限制各个用户账户的权限。超级用户 root 于计算机里拥有至高无上的管理权限,所以一般只作管理用。非特权用户则可以用 su 或sudo 程序以临时获得特权。

个体可以拥有多账户,只不过彼此名称当然不同。但有一些用户名称已事先被系统占用,比如 "root".

此外,任意用户可能从属某个「用户组」。此外用户也能够新加入某些已经存在的用户组,以获取该组所拥有的特权。

一、权限与属主

 

第一列是文件访问权限(例如,文件initramfs-linux.img的权限为-rw-r--r--),第三列和第四列分别是属主和属组(本例中所有文件属主都是root用户,属组都是root组)。

 

上述例子中,sf_Shared目录由root用户和vboxsf组所有。使用stat命令也可以查看文件所有权和权限:

$ stat -c %U /media/sf_Shared/

root

$ stat -c %G /media/sf_Shared/

vboxsf

$ stat -c %A /media/sf_Shared/

drwxrwx---

二、用户管理

使用who命令,可以查看目前已登陆的用户。

使用useradd命令添加用户:

# useradd -m -g [初始组] -G [附加组] -s [登陆shell] [用户]

-m:创建用户主目录/home/[用户名];在自己的主目录内,即使不是root用户也可以读写文件、安装程序等等。

-g:设置用户初始组的名称或数字ID;该组必须是存在的;如果没有设置该选项,useradd会根据/etc/login.defs文件中的USERGROUPS_ENAB环境变量进行设置。

-G:用户要加入的附加组列表;使用逗号分隔多个组,不要添加空格;如果不设置,用户仅仅加入初始组。

-s:用户默认登录shell的路径;Arch Linux的init脚本使用bash;启动过程结束后,默认启动的登录shell在此处设定;请确保使用的shell已经安装。

以典型的桌面系统为例,要添加一个名为archie的用户,并使用bash作为登录shell:

# useradd -m -g users -s /bin/bash archie

有关useradd的高级用法,参见man页:

$ man useradd

通过下列命令设置GECOS字段(用户信息,例如用户全名):

# chfn [用户名]

(这样将会以交互式模式启动chfn

通过下列命令设置用户密码:

# passwd [用户名]

另一个交互式界面的添加用户的工具:

# adduser

adduser会询问一些常见的设置,并使用合适的默认值,调用useradd创建用户。该命令还会设置用户信息和密码,囊括了chfnpasswd两个命令的功能。

使用userdel命令删除用户:

# userdel -r [用户名]

-r选项表示一并删除用户主目录和邮件。

三、用户信息存储

本地用户信息储存在/etc/passwd文件中。要查看系统上所有用户账户:

$ cat /etc/passwd

一行代表一个用户,格式如下:

account:password:UID:GID:GECOS:directory:shell

此处:

§ account:用户名

§ password:用户密码

§ UID:用户的数字ID

§ GID:用户所在主组的数字ID

§ GECOS:可选的注释字段,通常记录用户全名

§ directory:用户的主目录($HOME

§ shell:用户的登陆shell(默认为/bin/sh

注意: Arch Linux 使用影子密码。passwd文件对所有人可读,在里面存储密码(无论是否加密过)是很不安全的。在password字段,通常使用一个占位字符(x)代替。加密过的密码储存在/etc/shadow文件,该文件对普通用户限制访问。

四、用户组管理

/etc/group文件储存了系统中用户组的信息,详情参见:man group

使用groups命令查看用户所在组的名称:

$ groups [用户名]

若省略用户名,默认显示当前用户所在组。

id命令提供额外的信息,包括用户UID以及相关用户组GID:

$ id [用户名]

查看所有组:

$ cat /etc/group

使用groupadd创建新的组:

# groupadd [组名]

使用gpasswd将用户添加到组:

# gpasswd -a [用户名] [组名]

删除用户组:

# groupdel [组名]

将用户从组中移除:

# gpasswd -d [用户名] [组名]

如果用户已登录,必须重新登录使更改生效。

五、文件列表

警告: 不要手动编辑这些文件。有些工具可以更好的处理锁定、避免数据库错误。

文件

作用

/etc/shadow

保存用户安全信息

/etc/passwd

用户账户信息

/etc/gshadow

保存组账号的安全信息

/etc/group

定义用户所属的组

/etc/sudoers

可以运行 sudo 的用户

/home/*

主目录

 

 

 

本文转载自:https://wiki.archlinux.org/index.php/Users_and_groups_(%E7%AE%80%E4%BD%93%E4%B8%AD%E6%96%87)

共有 人打赏支持
大培哥
粉丝 5
博文 31
码字总数 29758
作品 0
浦东
程序员
私信 提问
Linux文件、用户、用户组的简单解释

用户组 在linux中的每个用户必须属于一个组,不能独立于组外。在linux中每个文件有所有者、所在组、其它组的概念 所有者 一般为文件的创建者,谁创建了该文件,就天然的成为该文件的所有者 ...

丌官尚雄
02/21
0
0
后端程序员必备的Linux基础知识

本文同步更新在我的Github上:网页链接 我自己总结的Java学习的系统知识点以及面试问题,目前已经开源,会一直完善下去,欢迎建议和指导欢迎Star: https://github.com/Snailclimb/Java-Gui...

Amsour丶
2018/07/06
0
0
“用户组”在 Linux 上到底是怎么工作的?

嗨!就在上周,我还自认为对 Linux 上的用户和组的工作机制了如指掌。我认为它们的关系是这样的: 每个进程都属于一个用户(比如用户 ) 当这个进程试图读取一个被某个组所拥有的文件时, Li...

14%
2018/09/29
0
0
Android安全模型之Linux安全模型

Android系统以Linux内核为基础,理解Android的安全设计首先要理清Linux安全模型的主要概念与元素,包括用户与权限,进程与内存空间等。 用户与权限 Linux安全模型的基础是用户与用户组。Lin...

柳哥
2014/11/30
0
0
Linux 用户(user)和用户组(group)管理概述

一、理解Linux的单用户多任务,多用户多任务概念; Linux 是一个多用户、多任务的操作系统;我们应该了解单用户多任务和多用户多任务的概念; 1、Linux 的单用户多任务; 单用户多任务;比如...

长平狐
2013/06/03
158
0

没有更多内容

加载失败,请刷新页面

加载更多

Java单例模式学习记录

在项目开发中经常能遇见的设计模式就是单例模式了,而实现的方式最常见的有两种:饿汉和饱汉(懒汉)。由于日常接触较多而研究的不够深入,导致面试的时候被询问到后有点没底,这里记录一下学习...

JerryLin123
昨天
4
0
VSCODE 无法调试

VSCODE 无法调试 可以运行 可能的原因: GCC 的参数忘了加 -g

shzwork
昨天
5
0
理解去中心化 稳定币 DAI

随着摩根大通推出JPM Coin 稳定币,可以预见稳定币将成为区块链落地的一大助推器。 坦白来讲,对于一个程序员的我来讲(不懂一点专业经济和金融),理解DAI的机制,真的有一点复杂。耐心看完...

Tiny熊
昨天
4
0
5.线程实现

用于线程实现的Python模块 Python线程有时称为轻量级进程,因为线程比进程占用的内存少得多。 线程允许一次执行多个任务。 在Python中,以下两个模块在一个程序中实现线程 - _thread 模块 th...

Eappo_Geng
昨天
7
0
ServiceLoader

创建一个接口文件在resources资源目录下创建META-INF/services文件夹在services文件夹中创建文件,以接口全名命名创建接口实现类 内容me.zzp.ar.d.PostgreSQLDialectme.zzp.ar.d.Hype...

Cobbage
昨天
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部