Linux怎么修个用户权限,linux的修炼: 用户权限管理

linux系统 一切皆是文件,用户信息和用户组信息都是存放在/etc目录下的文件中./etc目录 ,按FHS标准 (Filesystem Hierarchy Standard,文件系统层级标准,各linux版本开发商之间需要遵守的开发标准)是用来存放系统的参数配置文件的目录.

在这篇博文中,我们需要了解到

/etc/passwd ; /etc/shadow   用户有关信息

/etc/group  ; /etc/gshadow  用户组有关信息

四个文件内容的结构,以及用户、用户组、shadow密码机制、属主权限、属组权限、其它权限。

用户: 在linux中,所有的进程都是由一个用户发起的, 所有的文件也有一个用户是它的所有者。

我的在创建一个用户名后,虽然我们起的是英文名子,但设备只对数字感兴趣,我们创建一个用户名后,系统又给它起了一个数字编号,就是UID ,用户ID号。同理,用户组也有自己的ID号,GID,称为组ID号.当我们创建一个用户后,系统会自动为它创建一个同名的组,相当于我们让电脑生了一个娃娃baby,系统就自动为她盖了一房子,叫baby的房间.有了这个房间,小baby就可以有权不让别人进来,这后面我们会细讲.现在组有了,但小baby毕竟是系统里的孩子,而不是现实里的孩子,现实里的孩子一出生可能就在妇产科里,但小baby登陆系统时它要处在哪个位置呢,这里就有一个家目录的概念,当我们小baby的名子登陆系统时,起始的目录就是这个家目录.

在这个家里有一个重要角色,就是系统管理员,在系统管理员这个大屋子(组)里的人,有着至高无上的权力,不管是那个小baby的屋子或她屋里的东西都可以随意拿取,并给小baby们定下规矩,无人可人反抗,系统默认是一个叫root的大人.

现在我们了解了用户名、UID、GID、用户组、家目录的概念。下面在还有用户名密码和默认shell,用户密码虽然概念都理解,不过密码涉及到很多管理手段,后面我们会细讲.默认shell,如果对shell没有理解的话,可暂时把它这样理解,它对于我们来说就是一种命令解释工具,集成了很多指令.对于小baby来说,就是我们来帮她设定一种性格,性格和性格之间差距不大,就看你喜欢那个.

保存了用户信息的文件是:  ./etc/passwd  这里我们用cat /etc/passwd 命令打开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

保存格式是

用户名:密码:UID:GID:描述(可保存一段字符串信息):家目录:默认shell

为小baby分配的东西都在这里了,可以看到最后shell里有一个nologin,字面意思是"不让登陆"大家知道用户就是要用来登陆的,怎么会有一个不让登陆的用户呢? 这里我们把用户分成两类,一个是系统用户,一个是普通用户.

系统用户是一种不能登陆的用户.因为linux所有的进程都需要一个启动用户,但不能所有的系统进程启动都用root用户,因为root用户的权限太大啦,进程一旦被劫持会有安全方面的隐患,所以用户系统有系统用户,专门解决这种情况.这种用户不是用来登陆操作的,专门用来开启某些关键进程.因为不用登陆系统,自然家目录的存在也就可有可无了.

下面我们就来看看那些指令可以对./etc/passwd文件进行操作.

当我们通过指令 useradd,usermod,userdel 对/etc/passwd文件进行修改时,就可以添加,修改,删除用户了.

useradd 选项 [选项参数] 用户名

-u, --uid UID:指定UID;

-g, --gid GROUP:指定基本组ID,此组得事先存在;

-G, --groups GROUP1[,GROUP2,...[,GROUPN]]]:指明用户所属的附加组,多个组之间用逗号分隔;

-c, --comment COMMENT:指明注释信息;

-d, --home HOME_DIR:以指定的路径为用户的家目录;通过复制/etc/skel此目录并重命名实现;指定的家目录路径如果事先存在,则不会为用户复制环境配置文件;

-s, --shell SHELL:指定用户的默认shell,可用的所有shell列表存储在/etc/shells文件中;

-r, --system:创建系统用户;

usermod 选项 [选项参数] 用户名

-u, --uid UID:修改用户的ID为此处指定的新UID;

-g, --gid GROUP:修改用户所属的基本组;

-G, --groups GROUP1[,GROUP2,...[,GROUPN]]]:修改用户所属的附加组;原来的附加组会被覆盖;

-a, --append:与-G一同使用,用于为用户追加新的附加组;

-c, --comment COMMENT:修改注释信息;

-d, --home HOME_DIR:修改用户的家目录;用户原有的文件不会被转移至新位置;

-m, --move-home:只能与-d选项一同使用,用于将原来的家目录移动为新的家目录;

-l, --login NEW_LOGIN:修改用户名;

-s, --shell SHELL:修改用户的默认shell;

-L, --lock:锁定用户密码;即在用户原来的密码字符串之前添加一个"!";

-U, --unlock:解锁用户的密码

userdel 选项 用户名

userdel [选项] 登录

-r:删除用户时一并删除其家目录;

密码部分都是X ,因为/etc/passwd文件设计时是所有用户都有权打开的,密码直接显示出来会有安全隐患(那怕是加过密的密文),为解决这种问题,后期人们设计把密码放在了/etc/shadow(影子)文件中,这个文件除了管理员,谁都无权打开./etc/shadow文件内容是这样的:

root:$6$CGsqab6d$Cd.PnnWtlL5XZAyr9J2zoMqyJH1QodcDp1pQp0uZ1f0Cq4eq9.TMkSQU6IfpvYZEYc32.l        mF0lKuQwavnC49a0:16777:0:99999:7:::

bin:*:15980:0:99999:7:::

daemon:*:15980:0:99999:7:::

格式是:    用户名:

加密密码,用!表示用户进行登陆操作:

自1970/1/1密码被修改的天数:                         (恋爱天数)

设置密码不能被修改的天数,0表示随时修改:        (这几天别想改密码 不要碰!)

要求用户限期修改密码的天数,99999天相当不限制:  (这里天几必须改 只有这几天可以!)

密码过期前发警告的开始天数:                     (警告你 不来就算!!)

密码过期后,密码还被允许使用的天数:             ( 再给你最后两天机会!   )

该用户被禁用的天数:                            (  你已经被甩N天)

保留将来使用:                                   (留给别人吧!处男)

当我们通过 passwd指令 对/etc/shadow 文件进行修改时,就可以实现对密码的差别管理.

passwd [-k] [-l] [-u [-f]] [-d] [-e] [-n mindays] [-x maxdays] [-w warndays] [-i inactivedays] [-S] [--stdin] [username]

(1) passwd:修改用户自己的密码;

(2) passwd USERNAME:修改指定用户的密码,但仅root有此权限;

-l, -u:锁定和解锁用户;

-d:清除用户密码串;

-e DATE: 过期期限,日期;

-i DAYS:非活动期限;

-n DAYS:密码的最短使用期限;

-x DAYS:密码的最长使用期限;

-w DAYS:警告期限;

用户组:

小baby和小boy两人打了一个赌,他们各成立一个小组组装机器人,让老师评定那个小组成绩最好.这时我们就要考虑到,让小baby的队友之间可以互相看到对方的文件并进行修改,她们又不能看到小boy小组的文件 ,然后还要让老师可以看到小baby和小boy两个小组的机器人文件.解决这种问题的时候,就用到了用户组的权限分配,权限方面我们后面会细讲,我们先来看用户组的指令

/etc/group

/etc/gshadow

我们先用cat /etc/group 查看一下group文件内容格式:

root:x:0:

bin:x:1:bin,daemon

daemon:x:2:bin,daemon

sys:x:3:bin,adm

adm:x:4:adm,daemon

组名:密码:GID:[组内用户名],[组内用户名], ---

一个用户是可以属于多个组成员的.就象上方daemon用户,分别是bin,daemon,adm三个组的成员用户. 我们用 #id daemon 查看一下daemon用户的信息显示如下:

uid=2(daemon) gid=2(daemon) groups=2(daemon),1(bin),4(adm),7(lp)

显示了daemon用户的基本组是daemon,后面附加组有bin,adm,lp三个组.

我们再用cat /etc/gshadow ,查看一下gshadow文件,同用户的密码机制一样,组也使用了shadow密码机制.内容如下:

[root@pinfun6 ~]# cat /etc/gshadow

root:空白:空白:root

|    |    |    |--以逗号分隔的小组成员

|    |    |--以逗号分隔的组管理员

|    |--加密的密码

|--组名

组的密码初衷是让用户临时加入组的,但操作起来不便,很少使用.

groupadd命令:添加组

groupadd [选项] group_name

-g GID:指定GID;默认是上一个组的GID+1;

-r: 创建系统组;

groupmod命令:修改组属性

groupmod [选项] GROUP

-g GID:修改GID;

-n new_name:修改组名;

groupdel命令:删除组

groupdel [选项] GROUP

当用户创建新的目录和文件时,会默认继承用户当前的用户和组做为属主和属组

比如小baby创建了一个new文件,new的文件属主是小baby ,属组是小baby.

如果小baby也加入了xx组,可以用chgrp命令来切换组环境 ,chgrp xx ,这时,小baby再创建一个新文件,属主就是小baby,属组则成为了xx,而不是小baby了. 这时再用exit命令退出xx组环境,返回到小baby组环境 下.  文件和目录的属主和属组概念下面马上讲到

最后一个大课题: 权限

linux的文件系统只包含目录(目录是一种特殊的文件)和文件

我们通过用命令 ll /etc 得到内容如下:

drwxr-xr-x.  3 root root   4096 Dec  8 16:07 abrt

drwxr-xr-x.  4 root root   4096 Dec  8 16:26 acpi

-rw-r--r--.  1 root root     46 Dec 13 22:24 adjtime

-rw-r--r--.  1 root root   1512 Jan 12  2010 aliases

-rw-r--r--   1 root root  12288 Dec  8 16:38 aliases.db

drwxr-xr-x.  2 root root   4096 Dec  8 16:21 alsa

其中最前列的-rw-r--r-- 第一个字符是文件类型我们忽略掉,后面的rw-r--r--就是该文件的权限,分别对应了属主(rw-) 属组(r--) 其它(r--)的权限,三个字符r,w,x分别对应"读,修改,执行"三个动作,"-"表示没有该权限.属主的概念是文件或目录的拥有者,属组的概念是文件或目录的工作组,其它的概念是不是该文件的属主和属组的用户对文件拥有的权限.一般属主和属组是文件创建用户的用户名和基本组名,但可被管理员修改掉.

权限也分成了目录权限和文件权限,

我们先看目录权限,目录是特殊的文件,可把目录下的文件名称看为目录的数据

r  它的读权限 ,可用ls命令浏览目录下的文件名称列表

w   修改权限 ,可对目录增加删除文件

x  执行权限 ,可cd到目录下,用ll查看目录下文件的详细列表.

文件的权限描述:

r:可获取文件的数据;

w: 可修改文件的数据;

x:可将此文件运行为进程;

我们可能通过chmod命令来对文件或目录进行授权修改:

chmod命令:

chmod [OPTION]... MODE[,MODE]... FILE...

--- 000 0

--x 001 1

-w- 010 2

-wx 011 3

r-- 100 4

r-x 101 5

rw- 110 6

rwx 111 7

上表可以看出,三个字符的权限位的变化可以通过0--7八个数字来表示.

我们可以通过 chmod 444 file 来表示给file文件分配r--r--r--权限 .当然这是常用的表达方式,chmod命令还有别的参数形式修改权限,这里不细说了.

现在我们知道了用户、组、附加组和文件的属主、属组、其他 的概念,通过它们我们来把权限模型梳理一遍。我们回到小baby的机器人模型上来

小baby创建文件时,新文件会有默认的属主属组其它权限rwxrw-r--,哪里定义的默认权限这里我们不讲。

这个新文件的属主是小baby 属组是小baby ,权限的对应来看,她的队友只能对应到其它的权限r--,是可以读这个文件的,但不能修改,同时小boy也可以读到这个新文件,因为小boy也在其它的权限中.这显然是不行的,怎么让队友能读和改这个文件,又不能让小boy那帮人看到呢?首先小baby和队友都加入了一个xman的组里,这样他们就有一个共同的组,然后用chgrp命令,切换到xman组环境下,这时小baby从新创建的文件就是属主小baby 属组xman 权限rwxrw-r--, 因为队友都是xman组里人员,权限rw-就可以读和写这个文件了.但小boy还在其它权限里可以看到这个文件,还要修改这个文件的其它权限为---,但这样以后的所有文件都要修改,太麻烦了! 突然想到目录的权限,小baby在xman组环境下,新建了一个xxx目录,权限为rwxrw----这样,在xxx目录下的所有文件,只要不是属主属组成员,其他人连文件名子都看不到啦.相信小boy他们也是这样做的,这时候再把老师分别加入到小baby和小boy的两个组里,就可以同时看到他们的文件了.

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值