Linux用户和文件权限的管理

知识锦囊

  1. 用户信息简介

    Linux 系统对用户分配如下:系统管理员( root )、系统用户(不可登录)和普通用(可登录)。登录 Linux 系统时,输入的是账号名,但是系统识别的是建立账号时系统分配 ID 号码。对于用户类型 ID 的分配,系统管理员( root ) ID 为0,可登录的普通用户 ID为1000~65535。

    在建立用户账号时,系统会为用户账号分配两个 ID ,一个用户 ID ( UserlD ,简称 UID ),一个用户组 ID ( GrouplD ,简称 GID ),管理员组( rout 组) ID 为0,非系统组 ID 为1000-65535,

    对于一个用户而言,有唯一 UID ,但是可以有多个不同的组,分别为主组群和附属组。主组群名默认与用户名相同,也称为私有组,主组群以外的组称为附属组。

    在 Linux 系统中,用户账号、用户密码和用户组等相关信息均是存放在不同的配置文件中的。创建的用户账号和相关信息(密码除外)均是存放在/ etc / passwd 配置文件中。由于所有用户对/ etc / passwd 文件均有读取的权限,因此密码信息并未保存在该文件中,而是保存在/ etc / shadow的配置文件中。

(1)/etc/passwd简介

    (1)在/ ete / passwd 配置文件中,一行定义一个用户账号信息,以":"(冒号)分隔为7个字段。

 root @ MyPC :~# cat / etc / passwd

 root : x :0:0: root :/ root :/ bin / hash

 daemon : x :1:1: daemon :/ usr / sbin :/ usr / sbin / nologin

………省略部分信息…………

  冒号分隔开的每个字段均代表该账号某方面的信息,从左至右各字段的对应关系及其含义如表所示。

账户名称

账户密码

UID

GID

GID

账户家(主)目录

账户登录shell

root

x

0

0

root

/root

       由于/ etc / passwd 不再保存密码信息,所以用" x "占位,若要使某个账户不能登录系统.  可修改该账户所使用的 shell 为/ shin / nologin 或/ usr / sbin / nologin 。

(2)/etc/shadow简介

       (2)在/ etc / shadow 配置文件中,也是一行定义一个账号密码信息,以":"(冒号)分隔为9个字段。

root @ MyPC :~# cat / etc / shadow

 root : !:19181:0: 99999 :7:::

 daemon : *:19101:0: 99999:7:::

………省略部分信息…………

      冒号分隔开的每个字段均代表该账号某方面的信息,从左至右各字段的对应关系及其含义如表所示。

账户名称

加密字符串

修改日期

密码不可改天数

密码需要修改的期限

修改期限前N天发出警告

密码过期的宽限

账户失效日期

保留

root

$encrypted

0

99999

7

  1.账户名称:账户名称与/ ele / passwd 里面的账户名称对应。

  2.加密字符串: $eacrypled 就是通过加密算法算出来的密文。加密字符串有字符串,和!!三类,字符串表示经过加密处理过的密码,星号代表账号被锁定,双叹号表示这个邮已过期或未设置(注: Ubuntu 是一个感叹号)。

  3.修改日期;表明最后修改密码日期距1970-1-1的天数

  4.密码不可改日期:默认0,表示随时可以修改;若为7,则7天内不可修改密码。

  5.密码需要修故的期限:默认99999,可理解为密码永不过期;若为42,则密码最长效天数为42。

  6.修改期限前 N 天发出警告:密码到期前 N 天向对应的账户发出警告。7密码过期的宽限:密码到期后的天数,可在期限内修改密码继续使用。

  8.账号失效日期:表明账户不允许使用的日期距1970-1-1的天数。

  9.保留:保留项。

  以上字段可通过 chage 命令快速修改,常用的参数有" IdmMWIE ",更多的细节用法可以通过man命令查看。

2.文件基本权限简介

(1)文件属性简介

      Linux 的哲学思想是"一切皆文件",与其他操作系统相比, Linux 是没有"扩展名"的概念、例如1. txt 可以是一个执行文件,1. exe 可以是一个文本文档,其至可以不用"扩展名",如果文件名以"."(点号)开始,则表示隐藏文件,需要使用" ls 一 a "命令显示。

    一切"文件"都有所属主( user )和所属组( group ),所属主就是"文件"的拥有者,所属汇就是"文件"所在的一个组,这样设置文件属性的目的是为了文件的安全。不同用户对于同一个文件的权限可能有所不同,为了达到同样的效果,可以同时加入到"所属组"里。
创建普通空白文件 file. txt ,目录 dirPerm , file . txt的软链接按 Infile . txt ,利用" In -l"命令查看创建的3个文件,代码如下,

root@MyPC:~#In -s file.txt Infile.txt

root@MyPC:~#Is -1

dwxr-xTr-x2 root root40968月1809:17 dirPerm

-rw-r--r--1 root root 08月1809:17file.txt

lrwxrwxrwx 1 root root 88月1809:17 lnfile.txt->fle.txt


 下面列出了3个文件的详细信息,共分七列,每列的含义如下所示。

(1)第一列:文件类型权限(包含文件类型,以及文件权限)。第一列共10位或(最后一位如果是“.”,则与selinux和acl有关)。

(2)第二列:链接占用的节点(inode)。普通文件创建硬链接后会增加节点数,而目录的节点数和该目录下的目录数有关(包括“.”和“..”)。

(3)第三列:该文件的所属主(user)。

(4)第四列:该文件的所属组(goup)。

(5)第五列:该文件的大小,以字节(Byte)为单位。

(6)第六列:该文件最后一次修改的时间,即Mime。

(7)第七列:该文件的文件名。

(2).文件类型权限详解

         Linux系统的文件权限划分得很细致,如下所示。(注:这里的权限主要指文件对于用户的权限,也就是用户能对文件所做操作的控制。)

(1)第1位用来描述该文件的类型。上面命令显示结果中,类型有“d”“-”和“l”,除此之外还有“b”“c”“s”等

1.“d”表示该文件为目录;

2.“-”表示该文件为普通文件;

3.“1”表示该文件为软链接文件:

4.“b”表示该文件为块设备,比如/dev/sda:

5.“c”表示该文件为串行端口设备,例如键盘、鼠标

6.“s”表示该文件为套接字文件(socket),用于进程间通信

(2)后面的九位,每3位为一组。由“r”“w”“x”组合而成,其中“r”代表可读(read),“w”代表可写(write),“x”代表可执行(execute),前三位是所属主(user,简写u)的权限,中间三位是所属组(group,简写g)的权限,最后三位是其他用户(others,简写o)的权限:

①“-rw-r--r--1 root root 08月1809:17file.txt”它表示的意是是:file.txt文件为普通文件,root用户对该文件可读可写不可执行,root组成员和其他用户对该文件可读不可写但可执行。

②“dwxr-xTr-x2 root root40968月1809:17 dirPerm

” 它表示的意是是:dirPerm目录为普通目录,root用户对该目录可读可写可执行,root组成员和其他用户对该目录可读不可写但可执行。

【注】Linux系统中,UID为0的账户(root)拥有强制读写的权限

(3)权限的理解。

①针对一般文件。

可读--表示能够读取文件的内容;

可写--表示能够新增、修改、删除文件的内容;

可执行—表示能够运行这个文本(如脚本程序等)。

②针对目录。

可读--表示能够读取目录内的文件列表(如ls等):

可写--表示能够在目录内新增、删除、重命名文件,即具有移动该目录结构清单的权限(如mkdir、touch、rm、mv等);

可执行—表示能够进入该目录(如cd等)。

(3)文件权限的表示法

文件的读、写、执行权限可以简写为rwx,亦可分别用数字4、2、1来表示,再把文件所属主、所属组及其他用户权限各自相加,如表所示。

文件权限的数字法表示基于子符表示(rwx)的权限计算而来,其目的是简化权限的表示,例如,某个文件的权限为7则可表示可读可写可执行(4+2+1),若权限为6则表示为可读可写(4+2)。

3.文件的特殊权限

Linux 系统中的文件权限有很多种,最普通的权限是读( r )、写( w )和执行( x ),但是在一个强调系统安全性的操作系统中,文件如果只具有这三种基本权限显然是不够的。

(1). SUID

/ etc / passwd 和/ etc / shadow 文件存放着用户的账户和密码信息,从它们的权限看,普通用户( others )并不具有修改文件的权限,但普通用户可以通过 passwd 命令来修改自己的密码。

如果在一个可执行文件上应用 SUID 权限,那么任何人在执行该命令时会临时得到所属主的权限。对于 SUID 权限还需要注意以下几点:

(1) SUID 权限仅对命令(可执行文件或二进制文件)有效;

(3)执行者通过 SUID 取得该命令所属主( user )的权限仅在执行该命令的过程中有效例如:

(2)执行者对于该命令需要具有 x 的权限;

root @ MyPC :-# ls - I / etc / passwd / etc / shadow

- rw - r -- r --] root root 28477月1009:52/ etc / passwd

- rw - r ----- I root shadow 14527月1009:52/ etc / shadow

 root @ MyPC :-# whereis - b passwd

//查看命令路径

 passwd :/ usr / bin / passwd  / etc / passwd

 root @ MyPC :~# ls – l / etc / passwd

- rw-r--r-- 1 root root 599763月1416:59 / etc/ passwd  

其他用户有读取/ etc / passwd 文件的权限,而对于/ etc / shadow 文件没有任何权限,由 ust / bin / passwd 文件的权限为" rwsr - xr - x ", user 位中的 x 位置变成了 s ,这就是 SUID 权限

普通用户在执行 passwd 命令时,临时拥有了所属主 root 的权限。而 root 拥有最高权限可以强制写操作。【注】如果二进制文件不存在 x 权限,而加入了 s 权限,则 user 位中 x 的位置变成 S (大写字母 S )。

(2).SGID

不同用户创建的文件,默认是不能互访,为了便于多组成员彼此间的合作( CURD ),需要创建的文件都属于一个组,用户都附属于这个组,即可便于彼此间的合作。

 SGID 权限可针对命令和目录设置。如果对命令应用 SGID ,则与 SUID 类似,只是执行者临时得到所属组的权限,此情况较少用到,用得较多的是对目录的设置。

如果在一个目录上应用 SGID 权限,则任何人在该目录中创建的文件都会自动继承目录本身的所属组,简单示意图如图所示。【注】如果文件/目录不存在 x 权限,而加入了 s 权限,则 group 位中 x 的位置变成 S (大写字母 S )。

(3). SBIT

/ dirOpen 目录是对所有用户开放公有的目录,所有用户都拥有读写执行(777)的权限若it6用户在/ dirOpen 中创建一个文件,而sale6用户可以删掉这个文件(因/ dirOpen 权限777),这肯定不妥。

 SBIT ( Sticky Bit )只针对目录有效,采取 SBIT 特殊权限就只能使文件的所属主和 owok 用户进行删除、重命名和移动等操作,其他用户没有权限进行对应操作。

【注】如果目录不存在 x 权限,而加入了 t 权限,则 group 位中 x 的位置变成 T 。 Linux 的/ tmp 目录就是采用了 SBIT 特殊权限。

特殊权限同样可以采用数字方式,在三位基本权限数字前再加一位,代表特殊权限。其中4代表 SUID ,2代表 SGID ,1代表 SBIT 。

子项目1 用户的管理

(1)创建一个新用户user01,设置其主目录为/ home /user01。

(2)查看/ etc / passwd 文件的最后一行,看看是如何记录的。

(3)查看文件/ etc / shadow 文件的最后一行,看看是如何记录的。

(4)给用户user01设置密码。

(5)再次查看文件/ etc / shadow 文件的最后一行,看看有什么变化。

1.输入useradd -d /home/user01 -m user01,成功创建用户和设置目录 。

2.输入tail -1 /etc/passwd,查看/etc/passwd文件的最后一行。

3.输入tail -1 /etc/shadow,查看/etc/shadow文件的最后一行。

4.输入passwd user01,给用户user01设置密码。

5.输入tail -1 /etc/shadow,查看/etc/shadow文件的最后一行的变化。

(6)通过( su -user01)命令登录系统,看看能否登录成功。

(7)使用命令锁定用户user01。

(8)查看文件/ etc / shadow 文件的最后一行,看看有什么变化。

(9)再次通过(su -userO1)命令登录系统,看看能登录成功。

1.输入su – user01或su user01,成功登陆系统,然后输入exit退出登录。

2.输入passwd -l user01或usermod -L user01,锁定用户,禁止其登录。

3.输入tail -1 /etc/shadow,查看/etc/shadow文件的最后一行的变化。

4. 输入su – user01,如果是root用户,可以登录user01,如果是普通用户,会显示认证失败,无法登录。因为锁定用户,是其他普通用户无法切换到这个用户,不是root用户无法切换。

   

(10)解除对用户user01的锁定。

(11)使用命令更改用户user01的新账户名为user001。

(12)完全删除用户user001(包括主目录)。

1.输入passwd -u user01或usermod -U user01,解除对用户user01的锁定,允许其登录。

2.输入usermod -l user001 user01,更改用户user01的新账户名为user001,输入tail -1 /etc/shadow,查看账户名是否更改成功。

3.输入userdel -rf user001,完全删除用户user001(包括主目录),输入su – user001,查看用户是否删除,输入cd /home和ls,查看主目录是否删除。

 

 

子项目2组的管理

(1)创建一个 Stu 新组。

(2)查看/ etc / group 文件的最后一行,看看是如何设置的。

(3)创建一个新账户user02,并把附属组设为 Stu 。

(4)查看/ etc / group 文件中的最后两行,看看有什么变化。

1.输入groupadd Stu,创建一个 Stu 新组。

2. 输入tail -1 /etc/group,查看是如何设置的。

3.输入usermod -G Stu user02,成功创建账户并把附属组设为 Stu 。

4. 输入tail -2 /etc/group,查看有什么变化。

 

(5)将user02移除 Stu 组。

(6)删除组Stu。

1.输入gpasswd -d user02 Stu,将user02移除 Stu 组,输入tail -2 /etc/group,查看是否移除成功。

2.输入groupdel Stu,删除组Stu,输入tail -2 /etc/group,查看删除成功。

子项目3文件权限的管理

  1. 创建目录test001和普通空白文件test001.txt,并以长格形式显示文件信息,注意文件的权限、所属主和所属组。
  1. 输入mkdir test001;touch test001.txt,或分开输入mkdir test001和touch test001.txt,成功创建目录test001和普通空白文件test001.txt。

2.输入ls -l,以长格形式显示文件信息,注意文件的权限、所属主和 所属组。

  1. 对文件test001. txt 设置权限,使其他 others 用户可以对此文件进行写操作。查看设置结果。

(3)取消同组用户对此test001.txt文件的读取权限。查看设置结果。

(4)用数字形式为文件test001.txt设置权限,所属主可读、可写、可执行;其他 others 用户和所属组用户只有读和执行的权限。设置完成后查看设置结果。

(5)用数字形式更改文件test001.txt的权限,使所属主只能读取此文件,其他任何用户都没有权限。查看设置结果。

(6)为其他 others 用户添加test001. txt 写权限。查看设置结果。

1.输入chmod -R o+w test001.txt,对文件test001. txt 设置权限,使其他 others 用户可以对此文件进行写操作,输入ls -l,查看设置结果。

2.输入chmod -R g-r test001.txt,取消同组用户对此test001.txt文件的读取权限,输入ls -l,查看设置结果。

3. 输入chmod -R 755 test001.txt,用数字形式为文件test001.txt设置权限,所属主可读、可写、可执行;其他 others 用户和所属组用户只有读和执行的权限,输入ls -l,查看设置结果。

4. 输入chmod -R  400 test001.txt,用数字形式更改文件test001.txt的权限,使所属主只能读取此文件,其他任何用户都没有权限,输入ls -l,查看设置结果。

5. 输入chmod -R  402 test001.txt,为其他 others 用户添加test001. txt 写权限,输入ls -l,查看设置结果。

子项目4改变文件的所属主

(1)查看test001的所属主和所属组。

(2)将test001.txt文件移进test001目录。

1.输入ls -ld test001,查看test001的所属主和所属组。

2.输入mv test001.txt test001,将test001.txt文件移进test001目录,输入ls  -ld test001,查看是否移动成功。

 

(3)把目录test001及其下的所有文件的所属主改成 bin ,所属组改成 daemon 。查看设置结果。

(4)删除目录test001。

1.输入chown - R bin test001,把目录test001及其下的所有文件的所属主改成 bin ,输入ls -l,查看目录是否更改成功,输入ls -l test001,查看其下的所有文件是否更改成功。

2.输入chown :daemon test001,把目录test001的所属组改成 daemon,输入ls -l,查看目录是否更改成功,输入cd test001和chown  :daemon test001.txt,输入ls -l,查看其下的所有文件是否更改成功。

   

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值