Linux下的用户和组

用户和组

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创建用户。该命令还会设置用户信息和密码,囊括了chfn和passwd两个命令的功能。

使用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/*


主目录

时间: 11-16

Linux下的用户和组的相关文章

linux下的用户及组的创建

1.增加用户 [[email protected] testdir]# useradd –help Usage: useradd [options] LOGIN Options: -b, –base-dir BASE_DIR       设置基本路径作为用户的登录目录 -c, –comment COMMENT         对用户的注释 -d, –home-dir HOME_DIR       设置用户的登录目录 -D, –defaults                改变设置 -e, –e

【Linux系统】用户与组账号管理实例与讲解

用户账号与组账号管理 下面是我对用户账号与组账号之间的一些整理与实例配置. 在Linux系统中用户和组账号分为以下几点: 超级用户:root用户是Linux默认的超级用户具有相当于windows系统中的administrator的作用. 普通用户:普通用户的账号需要由root或其它管理员用户创建. 程序用户:用于添加Linux系统中的一些特定的低权限的用户.(这些用户只用于维持或某个程序的正常运行) 组账号 基本组(私有组):每一个账号都有自己的属于自己的组. 附加组(公共组):与其他用户在同一

linux下创建用户

linux下创建用户(一) Linux 系统是一个多用户多任务的分时操作系统,任何一个要使用系统资源的用户,都必须首先向系统管理员申请一个账号,然后以这个账号的身份进入系统.用户的账号一方面可以帮助系统管理员对使用系统的用户进行跟踪,并控制他们对系统资源的访问:另一方面也可以帮助用户组织文件,并为用户提供安全性保护.每个用户账号都拥有一个惟一的用户名和各自的口令.用户在登录时键入正确的用户名和口令后,就能够进入系统和自己的主目录. 实现用户账号的管理,要完成的工作主要有如下几个方面: · 用户账

linux命令(15)---用户和组管理命令

计算机中用户的作用:主要实现资源分享,在分享资源同时涉及到资源安全,又新增用户密码认证,使其资源由特定权限的用户或用户组才可访问. linux系统中用户和组分类: 用户分为:管理员用户(root).普通用户和系统用户(对守护进程获取资源进行权限分配,也就是在系统启动时或需要启动某进程服务时需要的用户,也称为"伪用户") 用户组分为:管理员组.普通用户组,当然在创建用户时会同时创建一个同用户名的基本组,因此伪用户也有着自己的基本组.另外用户组针对用户来说还有一个"附加组&quo

linux下添加用户并赋予root权限(转)

转自:http://blog.csdn.net/stormbjm/article/details/9086163 1.添加用户,首先用adduser命令添加一个普通用户,命令如下: #adduser tommy //添加一个名为tommy的用户#passwd tommy   //修改密码 Changing password for user tommy.New UNIX password:     //在这里输入新密码Retype new UNIX password:  //再次输入新密码pas

linux下删除用户脚本----不是userdel -r 那么简单

linux下删除用户不仅仅是userdel -r 那么简单. 如果你删除用户时,该用户有许多进程正在进行,你是不是要一个个kill掉再删除: 如果你成功删除该用户后,系统中还有需要改用户的文件是不是还要删除. 如上,岂不麻烦.下面的脚本可以帮你快速删除一个或多个用户. #!/bin/bash #delete user from system #by slitobo 2017/6/2 #check user is root [ `id -u` -ne 0 ] && echo "Pl

Linux重定向及用户和组管理

一.bash的I/O重定向及管道 1.Linux下一般缺省的输入称之为标准输入,即键盘输入,缺省的输出称之为标准输出,即显示器输出.Linux给程序提供了三种I/O设备: 标准输入(STDIN)--0:默认接受来自键盘的输入 标准输出(STDOUT)--1:默认输出到终端窗口 标准错误(STDERR)--2:默认输出到终端窗口 I/O重定向即改变默认位置. 输出重定向常用语法: CMD > file:把STDOUT重定向到file文件中,原有文件内容会被覆盖: CMD >> file:在

linux基础:用户与组,权限管理

linux中用户与权限管理 与Window的单用户系统不同,Linux操作系统在设计之初就遵循着多用户.多任务的理念.而在这种情况下,安全问题非常重要,不同用户,不同的用户组之间的隐私保护,安全管理就非常有必要.对于这个问题,Linux就有了对于不同的用户,不同的组对于文件有不同的权限,以使用确保安全. 用户的概念 用户:由于Linux系统是一个多用户系统,每个用户又有不同的组.为了便于管理用户,所以在我们注册帐号时,系统会自动分配给我们一个ID,标识此用户的唯一性.而ID信息一般都存储与/et

Linux初学之——用户和组的管理

Linux系统可以支持多个用户使用不同的终端设备登录系统,用户又按不同的属性划分成不同的组,为了系统的安全性需要对不同用户设置不同的权限,所以涉及到对用户和组的管理. 用户和组的管理 用户账户 组账户 权限的分配 Cisco开发的AAA认证体系 Authentication: 认证,核实身份是否正确 Authorization: 授权,对已经核实身份的用户进行资源分配 Accounting: 审计,监管资源被使用的情况 多用户多任务的操作系统: 能够实现资源使用和完成任务的主体是:应用程序的进程