Linux学习笔记——Linux用户管理和权限管理

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux学习笔记——Linux用户管理和权限管理相关的知识,希望对你有一定的参考价值。

  Linux系统的权限管理

   

Linux系统是一个多用户多任务的操作系统,多用户是指系统资源可以被不同用户各自拥有,即每个用户对自己的资源有特定的权限,用户之间互不影响。Linux系统有一套权限管理机制,文件不允许非授权用户访问或修改。这种机制的实现是通过用户和组的形式实现的。


5.1           Linux安全机制

   账户管理是Linux安全机制的核心部分。登录Linux系统的用户都会被分配一个的用户账户。用户对系统上文件的访问权限取决于他们登录系统时使用的账户。每个用户的权限是通过创建用户时分配的用户ID来实现跟踪的,每个用户的UID是唯一的。而用户登录系统时使用的不是UID而是用户名和相应的密码。

   Linux系统中,通过特定的文件跟踪和管理系统上的用户账户等信息,这个文件是/etc/passwd

   /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

rpcuser:x:29:29:RPC  Service User:/var/lib/nfs:/sbin/nologin

nfsnobody:x:65534:65534:Anonymous  NFS User:/var/lib/nfs:/sbin/nologin

gdm:x:42:42::/var/lib/gdm:/sbin/nologin

sshd:x:74:74:Privilege-separated  SSH:/var/empty/sshd:/sbin/nologin

tcpdump:x:72:72::/:/sbin/nologin

yarn:x:500:500:yarn:/home/yarn:/bin/bash

 

   Linux系统通过/etc/passwd文件将用户的登录名对应到用户的UID值,如:root用户的UID值为0yarn用户的UID值为500。这个文件包含了登录系统用户的相关信息。但是需要注意的是,/etc/passwd文件中除了登录系统的用户信息外,Linux系统会为特定的功能组件创建不同的用户账户,这些账户不是正真意义上的用户账户,通常被称作系统账户,是系统上运行的各种服务进程访问资源时要用到的特殊账户。注意:所有运行在后台的服务都需要用一个系统用户账户首先登录到Linux系统上。

   Linux系统预留了500以下的值作为备用系统账户的UID值,普通用户账户的UID值从500开始。如:yarn用户的UID值为500。同样,为了系统的安全,一些系统服务要使用特定的UID才能正常工作。

   /etc/passwd文件中包含以下信息:

字段

说明

登录用户名

yarn

用户密码

x             注:在其他文件中加密保存,此处是占位符

用户账户IDUID

500

用户账户组IDGID

500

用户全名或备注

yarn

用户默认工作目录

/home/yarn

用户的默认Shell程序

/bin/bash

 

   可以看到,账户的密码都设置成了x,这不是正真的密码,只是一个占位符。在Linux系统中,系统将用户账户的密码保存到了另一个单独的文件/etc/shadow中。只有特定的程序才能访问这个文件,如用户登录系统时。

   对于/etc/passwd文件,不要手动修改或添加用户信息。因为这个文件是系统读写的,手动添加或修改账户信息可能会找出系统登录失败。

   通过/etc/shadow文件系统对用户的登录密码进行管理和保护。

   /etc/shadow

root:$6$MqHv7L6nSiQpy7sm$O61Sd1Taw7WW0SzpXzWDHxcDz6UAv95jn43PipDYqFXdyJ6ITsEF45.ioMcuWyyTKUXErg/jPwHNLXTZrRNP5/:16736:0:99999:7:::

bin:*:15628:0:99999:7:::

daemon:*:15628:0:99999:7:::

adm:*:15628:0:99999:7:::

lp:*:15628:0:99999:7:::

rpcuser:!!:16736::::::

nfsnobody:!!:16736::::::

gdm:!!:16736::::::

sshd:!!:16736::::::

tcpdump:!!:16736::::::

yarn:$6$urFnNzBVwCHO7zwk$PW9oqYo0q.ZM3iyr5jDDu8Mng3o820geQCv4EoH.qY1v0d5easqDnQ.e/8NYdl8/gUNw9T/4QpK7rq4to0ncS0:16736:0:99999:7:::

 

   注意:只有root用户才有权限访问/etc/shadow文件,这比/etc/passwd文件更加安全。

   /etc/shadow文件字段信息:

字段

说明

登录用户名

yarn

加密后的密码


1970.1.1到当前天数

16736

多少天后才能更改密码

0

多少天后必须更改密码

99999

密码过期前提前多少天提醒用户更改密码

7

密码过期后多少天禁用用户账户


用户账户被禁用的日期


预留


 


5.2           用户管理

    5.2.1       添加新用户

   Linux中添加新用户的命令是useradd,这个命令可以创建一个新用户账户并且创建用户的工作目录。用useradd命令创建新用户使用的是系统默认的系统配置,通过下面的命令可以看到默认情况下创建用户账户时的默认配置信息。

   命令:

useradd  -D

 

   控制台显示:

GROUP=100

HOME=/home

INACTIVE=-1

EXPIRE=

SHELL=/bin/bash

SKEL=/etc/skel

CREATE_MAIL_SPOOL=yes

 

   字段含义:

默认值

说明

GROUP=100

新用户会添加到GID100的公共组

HOME=/home

新用户的工作目录在/home目录下

INACTIVE=-1

新用户的账户过期后不会被禁用

EXPIRE=

新用户不设置过期日期

SHELL=/bin/bash

新用户的默认Shell解释器

SKEL=/etc/skel

系统会将/etc/skel目录下的文件复制到用户工作目录下

CREATE_MAIL_SPOOL=yes

为新用户创建接收邮件的文件夹

 

   注意:创建用户时,系统会将/etc/skel目录下的文件复制到新用户的工作目录下。下面是/etc/skel目录下的文件。

   /etc/skel目录下的文件:

drwxr-xr-x.   4 root root  4096 2  11 11:51 .

drwxr-xr-x.  111 root root 12288 2  20 09:38 ..

-rw-r--r--.    1 root root    18 2  22 2013 .bash_logout

-rw-r--r--.   1 root root   176 2  22 2013 .bash_profile

-rw-r--r--.   1 root root   124 2  22 2013 .bashrc

drwxr-xr-x.   2 root root  4096 11  12 2010 .gnome2

drwxr-xr-x.   4 root root  4096 10  28 22:12 .mozilla

 

   注意:创建新用户需要使用root用户的权限,命令如下:

   创建一个新用户:

useradd  user01

useradd  -m user01

 

useradd命令常用的参数:

参数

说明

-g GID

为账户指定组

-p  password

为用户同时设置密码

-u UID

为用户指定UID

 

   创建新账号时通常创建工作目录,有些Linux版本需要参数-m才会创建账号的工作目录。

 

    5.2.2       删除用户

   删除用户需要使用userdel命令,默认情况下删除账户不同时删除工作目录,如果想同时删除账户的工作目录,需要参数-r,命令如下:

   删除用户:

userdel user01

userdel -r user01

 

   需要注意的是,在删除账户时,要确认工作目录下是否有重要文件,以防删除重要文件。

5.2.3       修改用户

   修改用户相对较复杂,Linux提供了不同的命令用来修改账户信息,如下表:

命令

说明

usermod

修改账户字段的值

passwd

修改账户密码

 

   usermod命令可以修改/etc/passwd文件中大多数的字段,只要命令后面跟上相应的参数就可以了。如下所示。

   修改账户登录名:

usermod  -l newName oldName

  

   将账户登录名user01修改为userbak

usermod命令常用的参数:

参数

说明

-l  newloginname

修改登录名

-L

锁定用户

-U

解锁用户

 

   passwd命令用来修改账户的登录密码,使用方式较简单,如果修改当前用户的密码,直接输入passwd命令即可,如果要修改其他用户密码,需要root用户的权限,命令如下。

   修改用户登录密码:

passwd

passwd  user01

 

5.3           用户组管理

   用户账户对单个用户管理相对较方便,但是对于多个相同类型的账户同时进行管理就不太方便了,所以有了组的概念。组允许多个用户共享一组共享的权限,用相同的权限访问系统上的文件或目录。

   不同的Linux版本略有不同,有的系统会将所有的用户同属于一个组,这样出现的问题是一个用户的文件同组的其他用户都可以访问。有的系统为每个用户创建一个组,这样更安全些。在系统中每个组有唯一的GID和组名。类似于/etc/passwd文件,系统上所有的组信息都保存到/etc/group文件中,如下所示:

   /etc/group

root:x:0:

bin:x:1:bin,daemon

daemon:x:2:bin,daemon

sys:x:3:bin,adm

adm:x:4:adm,daemon

tcpdump:x:72:

slocate:x:21:

yarn:x:500:

 

   /etc/group文件也有四个字段组成,组名称、组密码、GID和属于本组的用户。


5.3.1       创建组

   创建一个新组时,默认情况下没有用户属于这个组,如果需要将用户添加到新组中,需要使用usermod命令。创建新组的命令groupadd,命令格式如下。

   创建一个新组group01

groupadd  group01

groupadd  group02 -g 800

 

   创建新用户并指定组:

useradd  user02 -g group01

 

   yarn用户添加附加组:

usermod  -G group01 yarn

  

   注意:需要使用root权限。


    5.3.2       修改组

   因为组信息相对较少,所以通过groupmod命令可以修改组名称和GID,命令如下:

   修改组名称:

groupmod  -n newName oldName

 

修改GID

groupmod  -g 550 group01

 

    5.3.3       删除组

   删除组的命令是groupdel,使用较简单,但是删除组时要谨慎,如果组中已经存在用户,要先删除组中的所有用户后才能删除组。

删除一个组:

groupdel  group01

  


  5.4           文件权限说明

   首先执行ls命令,显示当前目录下的文件信息列表。

命令格式:

ls -l

 

   控制台显示:

drwxrwxr-x.  3 yarn yarn 4096 2   16 17:06 bash01

-rwxrw-r--.  1 yarn yarn  224 2  16  17:07 bash01.sh

drwxrwxr-x.  2 yarn yarn 4096 12 24 10:01 class20151221

drwxrwxr-x.  4 yarn yarn 4096 1   20 12:05 hdfs01

drwxrwxr-x.  3 yarn yarn 4096 11 24 14:40 mapreduce01

drwxrwxr-x.  3 yarn yarn 4096 11   3 19:59 mapreduce02

  

Linux系统中每一个文件和目录都有相应的访问许可权限。我们可以用它来确定谁可以通过何种方式对文件和目录进行访问和操作。文件或目录的访问权限分为可读、可写、和可执行三种,分别以r w x 表示,其含义为:

对象

r

w

x

文件

可以读取文件内容,如使用cat命令显示文件内容

可以通过vi编辑器编辑文件内容

文件的执行权限

目录

可以浏览目录下的文件信息内容,可以拷贝目录下的文件到其他目录

 

可以创建文件或目录,删除文件或目录,剪切文件或目录

是否有权限进入目录

 

文件和文件夹有三类用户:

   1. 文件所有者

   2. 文件所有者所在的组

   3. 其他临时用户

 

Linux文件的详细显示格式说明:

例:下面两条信息一个是目录文件信息,一个是文件信息。

drwxrwxr-x.  3 yarn yarn 4096 2   16 17:06 bash01

-rwxrw-r--.  1 yarn yarn  224 2  16  17:07 bash01.sh

   信息的第一列内容是:drwxrwxr-x-rw-r--r--,说明文件的读写权限,共有十个字符的组成。第一位是文件的类型,d代表目录,-代表文件。第二位到第四位是文件所有者的权限。r是读权限,w是写权限,x是执行权限。第五位到第七位是文件所属组的权限,第八位到第十位是临时用户的权限。第三列是文件的所属用户和所属组。第四列是文件的大小显示的是字节数。第五列是最后修改时间。最后一列是文件的名称。

 


 5.5           文件权限管理

   如果想修改一个文件或目录的已有权限,首先文件的属主是当前用户或者是超级用户root,如果是其他用户的文件是没有权限进行修改的。如果要修改文件的权限,需要使用chmod命令,有两种使用方式,下面进行说明。

命令格式一:

chmod [用户] [运算符] [权限] 文件/目录名

 

  用户:

u 表示文件所有者

g 表示同组用户

o 表示其它用户

a 表示所有用户

 

  运算符:

+ 添加某个权限

- 取消某个权限

= 赋予给定的权限并取消原有的权限

 

  权限:

r 可读

w 可写

x 可执行

 

/home/yarn目录下的hadoop.txt文件所有者和所在组添加读写权限

chmod  ug+rw /home/yarn/hadoop.txt

 

   取消临时用户的执行权限

chmod  o-x /home/yarn/hadoop.txt

 

   给临时用户重新设置读权限

chmod  o=r /home/yarn/hadoop.txt

 

 命令格式二:

chmod [权限] 文件/目录名

 

   第二种方式更加简单,采用二进制方式设置:

文件所有者

文件所有者所在组

其他临时用户

r

w

x

x

r

w

x

r

w

/

1

1

1

1

1

1

1

1

1

777

1

1

1

1

0

1

0

0

0

750

 

   同时设置三种类型用户的权限

chmod  777 /home/yarn/hadoop.txt

 

   同时设置三种类型用户的权限

chmod  750 /home/yarn/hadoop.txt

 

   对目录进行权限的设置,如果目录内的文件同时设置权限,需要使用递归方式,需要使用参数-R

同时将目录下的所有文件设置权限

chmod  -R 777 /home/yarn/dir

 

   第二种方式更加简单。


5.6           文件所属管理

   改变文件的属主需要使用root用户的权限,使用的命令是chown,下面进行说明。

命令格式:

chown[参数] 用户名  文件/目录名

chown[参数] 用户名:所属组名 文件/目录名

 

更改文件的所有者,将文件 hadoop.txt的所有者更改yarn。用户yarn可以使用 chmod 命令允许或拒绝其他用户访问 hadoop.txt文件

chown  yarn /home/yarn/hadoop.txt

 

   /home/yarn目录下的dir1目录的所有者和所有组更改成yarnyarngroup,需要注意dir1目录下的文件所有者和所有组不会更新

chown  yarn:yarngroup /home/yarn/dir1

 

   /home/yarn目录下的目录dir1的所有者和所有组更新为yarnyarngroup,参数-R递归实现dir1目录下的所有文件的所有者和所有组都进行了修改

chown  -R yarn:yarngroup /home/yarn/dir1

 

 


本文出自 “kevin.blog” 博客,请务必保留此出处http://dongkevin.blog.51cto.com/12103298/1858990

以上是关于Linux学习笔记——Linux用户管理和权限管理的主要内容,如果未能解决你的问题,请参考以下文章

Linux学习笔记之权限的管理

Linux学习笔记:用户的权限管理

Linux学习笔记组管理和权限管理

Linux学习笔记组管理和权限管理

Linux用户和组管理内容---学习笔记

Linux 程序设计学习笔记----Linux下文件类型和属性管理