第四章:用户和组管理

第四章:用户和组管理

1.基本概念

1.1.UID&GID

Linux是通过UID和GID号来识别用户和组。对某个文件或程序的访问也是以UID和GID为基础。一个执行中的程序继承了调用它的用户的权利和访问权限。

1.2.Linux用户类型

  • 根用户(0):UID为0的用户,能够访问系统任何文件和程序,而不论root根用户是否有权限。root用户通常称为“超级用户”
  • 系统/服务用户(1-999):UID为1-999.系统保留账号,或者某些服务才能使用的的账号
  • 普通用户(大于1000):UID大于1000,只能访问他们拥有的或者有权限执行的文件

1.3.用户根目录

  • 每一个登入系统的用户都需要有地方保存那些专属于该用户的配置文件,这个目录就是用户根目录(home directory),类似于windows中的c:\Documents and Settings
  • root用户的根目录对于大多数Unix/Linux操作系统来说都处于“/root”下
  • 普通用户的主目录位于“/home/yourname”(yourname是用户名)下,类似于windows下的c:\Documentsand Settings

1.4.用户脚本文件

Linux系统中,每个用户根目录下都有几个隐藏的脚本文件

例:查看root根目录下的几个脚本文件


[[email protected] ~]# ls -a

.                .bashrc  Documents              .local     Videos

..               .cache   Downloads             Music      .viminfo

anaconda-ks.cfg  .config   .esd_auth             Pictures

.bash_history    .cshrc   gyh                   Public

.bash_logout      .dbus     .ICEauthority         .tcshrc

.bash_profile     Desktop   initial-setup-ks.cfg  Templates

.bash_history :命令历史记录

.bash_logout :退出shell时执行此脚本

.bash_profile :登陆shell时执行此脚本

1.5.用户电子邮件

Linux下每一个用户默认都有一个电子邮箱账号。电子邮箱保存在/var/spool/mail子目录中,以用户名命名的文件制定

例:


[[email protected] ~]# id freeit_gyh

uid=1000(freeit_gyh) gid=1000(freeit_gyh)  groups=1000(freeit_gyh)

[[email protected] ~]# ls /var/spool/mail/

freeit_gyh   rpc

2.用户管理

2.1.用户配置文件

  • /etc/passwd

用户配置文件


[[email protected] ~]# ll /etc/passwd

-rw-r--r--. 1 root root 1926 Dec 11 22:59 /etc/passwd

[[email protected] ~]# head /etc/passwd

root:x:0:0:root:/root:/bin/bash

bin:x:1:1:bin:/bin:/sbin/nologin

daemon:x:2:2:daemon:/sbin:/sbin/nologin

adm:x:3:4:adm:/var/adm:/sbin/nologin

lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin

sync:x:5:0:sync:/sbin:/bin/sync

shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown

halt:x:7:0:halt:/sbin:/sbin/halt

mail:x:8:12:mail:/var/spool/mail:/sbin/nologin

operator:x:11:0:operator:/root:/sbin/nologin

说明:

文件内容从左到右依次为:用户名、密码、UID、GID、描述说明、用户主目录、shell(默认为/bin/bash)

  • /etc/shadow

用户密码文件


[[email protected] ~]# ll /etc/shadow

----------. 1 root root 1141 Dec 11 22:59 /etc/shadow

[[email protected] ~]# head /etc/shadow

root:$6$DcnwECzSOErax9TE$b0NLl5K.t6ouyQwS8Ewz8sn4Y9yQTYne7dodqlhpiNn2PCapPsvZG1s/XisrG.yxbgeWmn.xnKqsZ1S1.Q2.r/:16415:0:99999:7:::

bin:*:16141:0:99999:7:::

daemon:*:16141:0:99999:7:::

adm:*:16141:0:99999:7:::

lp:*:16141:0:99999:7:::

sync:*:16141:0:99999:7:::

shutdown:*:16141:0:99999:7:::

halt:*:16141:0:99999:7:::

mail:*:16141:0:99999:7:::

operator:*:16141:0:99999:7:::

说明:

文件内容从左到右依次为:

用户名

密码   :   默认MD5加密,密码前加*或!锁定账号

密码更改时间:   从1970.1.1开始算起

密码不可更改时间:   0表示可随时更改

密码失效时间:   99999表示永不失效

密码失效前警告时间:   默认7天

密码过期后的宽限时间

账号失效时间:   从1970.1.1开始计算

保留

2.2.用户操作命令

2.2.1.创建用户

命令:

Useradd [username]

参数:

-u:指定UID

-g:指定组

-G:指定附属组

-d:指定家目录

-m:自动建立用户的宿主目录

-s:指定shell环境

-c:描述说明和备注

-e:设定用户账号有效时间

-r:建立系统账号

例1:不带参数创建user1用户


[[email protected] ~]# useradd user1

[[email protected] ~]# id user1

uid=1001(user1) gid=1001(user1)  groups=1001(user1)

例2:带参数创建user2用户


[[email protected] ~]# useradd -u 1111 -G user1  -d /home/user2 -s /sbin/nologin -c gyh user2

//UID为1111、附属组为user1,shell为/sbin/nologin(不能交互式登录)、描述为gyh

[[email protected] ~]# id user2

uid=1111(user2) gid=1111(user2)  groups=1111(user2),1001(user1)

注:用户私有组

  • 当一个用户被创建时,与其同名的私有组会被同时创建,用户被关联到这个私有组,用户的新文件从属于这个组。
  • 优点:防止用户的新文件属于一个“公众”组;
  • 缺点:可能会导致用户把自己的文件都改成所有人可以访问

2.2.2.用户密码

命令:

psswd [username]

参数:

-l:锁定账户

-u:解开账户锁定状态

-d:删除使用者的密码

-S:大s,检查指定使用者的密码认证种类

-x:--maximum=DAYS:最大密码使用时间(天)

-n:--minimum=DAYS:最小密码使用时间(天)

注:

  • root用户可以修改所有用户的密码
  • 普通用户只能修改自己的密码

例:为user1用户更改密码


-----------------------------------------------方法一--------------------------------------------------------

[[email protected] ~]# passwd user1

Changing password for user user1.

New password: //输入密码时默认不显示

BAD PASSWORD: The password is shorter  than 7 characters

Retype new password:

passwd: all authentication tokens updated  successfully.

------------------------------------------------方法二---------------------------------------------------------

[[email protected] ~]# echo "redhat" | passwd user1 --stdin

Changing password for user user1.

passwd: all authentication tokens updated  successfully.

2.2.3.用户属性修改

命令:

usermod [option] [username]

参数:

-c:备注,修改账户的备注文字

-d:登入目录,修改用户登陆时的目录

-e:有效期限,修改账户的有效期限

-f:缓冲天数,修改在密码过期多少天即关闭该账号

-g:修改用户所属组

-G:修改用户所属的附加组

-l:修改用户账号名称

-L:锁定用户密码,是密码无效

-s:修改用户登陆后使用的shell

-u:修改用户ID

-U:解除密码锁定

例1:修改user1用户的UID为1110,GID为1111,附属组为user2,shell环境为/sbin/nologin


[[email protected] ~]# id user1

uid=1001(user1) gid=1001(user1)  groups=1001(user1)

[[email protected] ~]# cat /etc/passwd |grep  user1

user1:x:1001:1001::/home/user1:/bin/bash

[[email protected] ~]# usermod -u 1110 -g 1111  -G user2 -s /sbin/nologin  user1

[[email protected] ~]# id user1

uid=1110(user1)  gid=1111(user2) groups=1111(user2)

[[email protected]~]#cat /etc/passwd |grep  user1                       user1:x:1110:1111::/home/user1:/sbin/nologin

例2:把用户user1改为gyh

参数:-l

格式:usermod –l newuser olduser


[[email protected] ~]# usermod -l gyh user1

[[email protected] ~]# id user1

id: user1: No such user

[[email protected] ~]# id gyh

uid=501(gyh) gid=501(user1)  groups=501(user1)

2.2.4.chown

修改文件所有者

例:创建aaa文件,修改其所有者为user1


[[email protected] ~]# touch aaa

[[email protected] ~]# ll aaa

-rw-r--r--. 1 root root 0 May  4 08:35  aaa

[[email protected] ~]# chown user1 aaa

[[email protected] ~]# ll aaa

-rw-r--r--. 1 user1 root 0 May  4 08:35  aaa

3.组管理

3.1.组配置文件

  • /etc/group

组配置文件


[[email protected] ~]# ll /etc/group

-rw-r--r--. 1 root root 871 May  3 21:12 /etc/group

[[email protected] ~]# head /etc/group

root:x:0:

bin:x:1:

daemon:x:2:

sys:x:3:

adm:x:4:

tty:x:5:

disk:x:6:

lp:x:7:

mem:x:8:

kmem:x:9:

说明:从左向右依次为:组名、组密码、GID、组内用户(以UID显示)

  • /etc/gshadow

组密码文件


[[email protected] ~]# ll /etc/gshadow

----------. 1 root root 701 May  3 21:12 /etc/gshadow

[[email protected] ~]# head /etc/gshadow

root:::

bin:::

daemon:::

sys:::

adm:::

tty:::

disk:::

lp:::

mem:::

kmem:::

说明:从左向右依次为:组名、组密码、管理员账号、组内用户

3.2.组管理操作命令

  • 创建组

例:创建一个组gyh


[[email protected] ~]# groupadd gyh

[[email protected] ~]# tail /etc/group | grep  gyh

gyh:x:1112:

参数:

-g:指定GID

-r:创建一个系统账户

  • 删除组

例:删除gyh组


[[email protected] ~]# groupdel gyh

[[email protected] ~]# tail /etc/group | grep  gyh

[[email protected] ~]#

//删除之后,组配置文件中没有这个组

  • 设置组密码

例:创建一个freeit组,并为这个组设置一个密码,最后把用户加入到组验证


[[email protected] ~]# groupadd freeit

[[email protected] ~]# gpasswd freeit

Changing the password for group freeit

New Password:

Re-enter new password:

[[email protected] freeit ~]#

[[email protected] freeit ~]# su  user1

[[email protected] freeit root]$ newgrp freeit

Password:

//如上,组设置密码之后,用户想要加入到这个组,必须要有这个组的组密码方能加入,这样也就保证了组的安全性、专用性

  • 修改组属性

例:修改组freeit的GID


[[email protected] freeit  ~]# tail /etc/group |grep freeit

freeit:x:1112:

//修改之前为1112

[[email protected] freeit ~]# groupmod -g 2222 freeit

[[email protected] freeit ~]# tail /etc/group |grep  freeit

freeit:x:2222:

//修改之后变为2222

参数:

-g:修改GID

-o:允许重复

-p:更改组的密码

  • chgrp

修改文件所属组信息

例:在root用户下创建一个文件abc,更改其所属组为freeit


[[email protected] freeit ~]# touch abc

[[email protected] freeit ~]# ll abc

-rw-r--r--. 1 root root 0 May  4 08:27 abc

[[email protected] freeit ~]# chgrp freeit abc

[[email protected] freeit ~]# ll abc

-rw-r--r--. 1 root freeit 0 May  4 08:27 abc

4.特殊权限

4.1.SUID

当一个二进制文件(即命令)上应用了SUID后,任何人在执行该命令时,临时拥有命令拥有人的权限,只能应用在可执行文件上。

例1:创建用户user1,登录此用户,并在/tmp/test下使用mkdir命令创建目录gyh


[[email protected] freeit tmp]# mkdir test

[[email protected] freeit tmp]# ll

total 0

drwxr-xr-x.  2 root root 6 May  4 08:50 test

//文件拥有者有rwx的权限

[[email protected] freeit tmp]# su user1

[[email protected] freeit tmp]$ cd test/

[[email protected] freeit test]# ll /tmp

total 0

drwxr-xr-x. 3 root root 16 May  4 08:53 test

[[email protected] freeit test]$ mkdir gyh

mkdir: cannot create directory ‘gyh’:  Permission denied

//如上,没有创建的权限

例2:为mkdir赋予s权限,再次以同样方式创建


[[email protected] freeit ~]# whereis mkdir

mkdir: /usr/bin/mkdir /usr/share/man/man1/mkdir.1.gz  /usr/share/man/man1p/mkdir.1p.gz /usr/share/man/man2/mkdir.2.gz  /usr/share/man/man3p/mkdir.3p.gz

//查看二进制文件的位置

[[email protected] freeit ~]# ll /usr/bin/mkdir

-rwxr-xr-x. 1 root root 79712 Jan 25  2014 /usr/bin/mkdir

//查看二进制文件的权限,是可执行文件

[[email protected] freeit ~]# chmod u+s  /usr/bin/mkdir

[[email protected] freeit ~]# ll /usr/bin/mkdir

-rwsr-xr-x.  1 root root 79712 Jan 25  2014  /usr/bin/mkdir

[[email protected] freeit test]# su user1

[[email protected] freeit test]$ pwd

/tmp/test

[[email protected] freeit test]$ mkdir gyh

[[email protected] freeit test]$ ls

gyh

[[email protected] freeit test]$ ll

total 0

drwxrwxr-x.  2 root user1 6 May  4 08:53 gyh

//创建成功

说明:

当未给mkdir这个二进制文件s权限前,文件只有所有者root有rwx权限,其他用户只有rx权限,不能在没有w权限的文件(/tmp/test对于其他用户没有w权限)下使用此命令创建目录。当给二进制文件s权限后,使用此命令的用户就临时拥有了root的权限,所以user1后来就可以在/tmp/test下创建目录。

4.2.SGID

当在一个二进制文件上应用了SGID后,任何人在执行此命令时临时拥有文件所属组的权限,同样也只能用在可执行文件上。如果在一个目录上应用了Sgid,那么任何人在该目录下创建的文件/目录的所属组会继承该目录的组

实验一:

例1:去除上个实验/usr/bin/mkdir的SUID权限,修改此文件的所属组权限为775,


[[email protected] freeit test]# chmod u-s  /usr/bin/mkdir

[[email protected] freeit test]# ll /usr/bin/mkdir

-rwxr-xr-x.  1 root root 79712 Jan 25  2014  /usr/bin/mkdir

[[email protected] freeit test]# chmod 775  /usr/bin/mkdir

[[email protected] freeit test]# ll  /usr/bin/mkdir

-rwxrwxr-x.  1 root root 79712 Jan 25  2014  /usr/bin/mkdir

//此时,文件所属组内的用户也能执行w权限,即在所属组为同一个组,并且具有rwx权限的目录下创建目录

例2:给test所属组rwx权限、/usr/bin/mkdir SGID权限,cd到/tmp/test目录下,切换到user1用户继续创建


[[email protected] freeit test]# chmod 775 /tmp/test/

[[email protected] freeit test]# ll /tmp/

total 0

drwxrwxr-x.  2 root root 6 May  4 09:03 test

[[email protected] freeit test]# chmod g+s  /usr/bin/mkdir

[[email protected] freeit test]# ll /usr/bin/mkdir

-rwxrwsr-x. 1 root root 79712 Jan 25   2014 /usr/bin/mkdir

[[email protected] freeit test]# su user1

[[email protected] freeit test]$ pwd

/tmp/test

[[email protected] freeit test]$ mkdir gyh

[[email protected] freeit test]$ ll

total 0

drwxrwxr-x. 2 user1 root 6 May  4 09:17 gyh

//创建成功

说明:

给/usr/bin/mkdir&/tmp/test所属组root rwx权限前,我们是不能在/tmp/test下使用命令mkdir创建目录的。要同时赋予/usr/bin/mkdir以SGID权限方能创建成功。始初,由于其他用户没有在/tmp/test 下创建目录的权限,所以不能创建gyh目录。赋予SGID之后,user1使用mkdir命令,临时拥有了命令所属组的权限,在/tmp/test下具有rwx权限,所以能够创建成功。

实验二:

例1:删除上个实验所做的操作,创建user2用户,给/usr/bin/mkdir SUID权限。User1在/tmp下创建test目录,切换到user2,并在test下创建目录gyh,查看此时gyh的所属组


[[email protected] freeit tmp]# useradd user2

[[email protected] freeit tmp]# chmod u+s  /usr/bin/mkdir

//给SUID权限,就是为后面的user2创建目录做铺垫,让user2能够在user1创建的test目录下使用mkdir命令时临时拥有root的权限。本实验验证的是文件所属组的内容,所以给SUID无影响。

[[email protected] freeit tmp]# ll /usr/bin/mkdir

-rwsr-xr-x.  1 root root 79712 Jan 25  2014  /usr/bin/mkdir

[[email protected] freeit tmp]# su user1

[[email protected] freeit tmp]$ pwd

/tmp

[[email protected] freeit tmp]$ mkdir test

[[email protected] freeit tmp]$ ll

total 0

drwxrwxr-x. 2 user1 user1 6 May  4 09:44 test

[[email protected] freeit tmp]# su user2

[[email protected] freeit tmp]$ cd test/

[[email protected] freeit test]$ mkdir gyh

[[email protected] freeit test]$ ll

total 0

drwxrwxr-x. 2 root user2 6 May  4 09:40  gyhuser1

//如上,此时其他用户在user1创建的目录test下创建的目录,文件所属组是创建者本身的组

例2:给目录/tmp/test SGID权限,然后user2继续在其下创建目录aaa,查看此时的所属组


[[email protected] freeit test]# chmod g+s /tmp/test/

[[email protected] freeit test]# ll /tmp/

total 0

drwxrwsr-x. 3 user1 user1 16 May   4 09:45 test

[[email protected] freeit test]# su user2

[[email protected] freeit test]$ mkdir aaa

[[email protected] freeit test]$ ll

total 0

drwxrwsr-x.  2 root user1 6 May  4 09:50 aaa

drwxrwxr-x. 2 root user2 6 May  4 09:45 gyh

//如上,此时user2在目录下创建的目录的所属组继承了test的所属组

4.3.Sticky

如果在一个目录上应用了sticky权限,那么该目录中的文件仅文件拥有者和root能删除

例1:查看/tmp的权限,默认是O+t的,具有sticky权限。然后登陆user1&user2,分别在/tmp下创建自己的文件,然后其中一个用户删除另一个的文件。验证能否删除。然后去掉/tmp的t权限,再次验证


[[email protected] freeit tmp]# su user1

[[email protected] freeit tmp]$ mkdir user1

[[email protected] freeit tmp]$ ll

total 0

drwxrwxr-x. 2 user1 user1 6 May  4 09:55 user1

[[email protected] freeit tmp]# su user2

[[email protected] freeit tmp]$ mkdir user2

[[email protected] freeit tmp]$ ll

total 0

drwxrwxr-x. 2 user1 user1 6 May  4 09:55 user1

drwxrwxr-x. 2 user2 user2 6 May  4 09:55  user2

[[email protected] freeit tmp]$ rm -rf user1

rm: cannot remove ‘user1’: Operation not  permitted

//如上,因为/tmp具有o+t的权限,所以user2不能删除user1的文件。

------------------------------------------去除/tmp的o+t权限再次实验---------------------------------------

[[email protected] freeit tmp]# chmod o-t /tmp/

[[email protected] freeit tmp]# ll / |grep tmp

drwxrwxrwx.   4 root root   29 May   4 10:01 tmp

[[email protected] freeit tmp]# su user2

[[email protected] freeit tmp]$ rm -rf user1

[user[email protected] freeit tmp]$ ll

total 0

drwxrwxr-x. 2 user2 user2 6 May  4 09:55 user2

//去除/tmp的o+t权限后,user2成功删除user1的文件

注:

  • 前面我们说过,root为超级管理员,不论有没有权限都能执行操作,所以此处就不再验证root。
时间: 2024-10-12 17:15:24

第四章:用户和组管理的相关文章

网络操作系统 第二章 用户和组管理

本章小结 本章介绍了用户和用户的基本概念.讲解了在Windows Server2008中用户和组的创建.删除及其属性的修改.在Linux部分,首先通过图形配置工具介绍了Linux.中用户及组的相关属性,然后讲解了与用户和组相关的配置文件,最后介绍了如何使用命令完成对用户和组的管理. 一.Windows Server 2008中的用户有哪些类型?系统默认的用户有哪些? 用户.InetOrgPerson和联系人. 默认用户账户: Administrator Guest: 二.如何在Windows S

【Linux学习笔记】第3章 用户和组管理

3.1用户配置文件和密码配置文件用户配置文件/etc/passwd,每个用户信息占用一行,由冒号:分割为7段.第一段:用户名.第二段:早期用于存放用户密码,现在为x.第三段:用户uid,root用户为0.第四段:用户gid,root用户为0.第五段:很多为空,表示的是用户的注释信息,没有实际作用.第六段:用户的家目录,root用户为/root/,普通用户为/home/username第七段:用户shell,若为/sbin/nologin,则不能登录:常见为/bin/bash.密码配置文件/etc

2017.2.28 activiti实战--第五章--用户与组及部署管理(二)部署流程资源

学习资料:<Activiti实战> 第五章 用户与组及部署管理(二)部署流程资源 内容概览:讲解流程资源的读取与部署. 5.2 部署流程资源 5.2.1 流程资源 流程资源常用的有以下几种: 1 流程定义文件:拓展名为bpmn20.xml和bpmn 2 流程定义的图片:拓展名为PNG 3 表单文件:拓展名为form 4 规则文件:拓展名为drl 部署流程资源的时候,要注意一点: 引擎会根据不同的拓展名进行不同的处理.bpmn或bpmn20.xml类型的文件,会在ACT_RU_PROCDEF(流

2017.2.20 《activiti实战第五章--用户与组及部署管理》(一)用户与组

学习资料:<Activiti实战> 第五章 用户与组及部署管理(一)用户与组 内容概览:讲解activiti中内置的一套用户.组的关系,以及如何通过API添加.删除.查询. 5.1 用户与组 5.1.1 用户 1 public class IdentityServiceTest{ 2 @Rule 3 public ActivitiRule ar = new ActivitiRule();//使用默认的acitiviti.cfg.xml作为参数 4 5 @Test 6 public void t

玩转linux第四天之用户及组管理概念(一)

1    前言 本文档主要介绍用户及组管理类相关概念,并提供相应案例解释其含义. 学习这些基础命令是一个Linux爱好者需要具备的首要条件,让小编带领你们进入Linux的世界看看它的一颦一笑. 读者对象 本文档(本指南)主要适用于以下人员: Linux爱好者 2     环境简介 项目 配置 硬件型号 Tinkpad T440P CPU I5-4210 内存 4G 操作系统 Windows 8.1 虚拟系统 Vmware workstation 11 CPU 1Core 内存 1G 操作系统 C

玩转linux第四天之用户及组管理类相关命令(二)

1    前言 本文档主要介绍用户及组管理类相关命令如:useradd .usermod.passwd.userdel.groupadd.groupmod\gpasswd.groupdel.hage,chsh,chfn,.id,w,who,whoami.wck,gourpck.su,并提供相应案例解释其含义. 学习这些基础命令是一个Linux爱好者需要具备的首要条件,让小编带领你们进入Linux的世界看看它的一颦一笑. 读者对象 本文档(本指南)主要适用于以下人员: Linux爱好者 2    

Linux用户与组管理(一)

Linux用户与组管理(一) 简介Linux用户与组 useradd usermod userdel groupadd groupmod groupdel 环境:CentOS 6.8 简介Linux用户与组 Linux系统在静态视角下,无非就是由诸多文件组成的一个"文件系统":从动态视角来看,无非就是一个在内核支配之下的一个"文件系统".这两种角度是有些区别的:动态角度下,内核是独立的,内核负责管控文件系统,而在静态角度下,连内核本身也是文件系统下的一个文件而已.故

Solaris用户管理(一):用户与组管理

2008-07-01 09:19 用户管理是系统管理的基础.Solaris中不但支持传统Unix所支持的用户和组的概念,还从Solaris 8开始引入了基于角色的访问控制(RBAC),提供了一种更加安全.灵活的方式来进行权限分配和管理. 先看看Solaris下的基本用户管理.(详细的资料可以自行查阅man手册) Solaris 下的基本用户管理体系包括/etc目录下的passwd.group和shadow三个配置文件,以及useradd.usermod.userdel. passwd.group

TFS 用户与组管理(转)

作者:frank.liu kaka.zhou 安装 Team Foundation Server 后,会创建以下全局组.可以使用这些全局组来控制 Team Foundation 用户的权限. 组 权限 Team Foundation Administrators 可以在 Team Foundation Server 上执行所有特权操作. Team Foundation Valid Users 可以访问 Team Foundation Server.在 Team Foundation Server