<dl id='sqprn'></dl>

    <code id='sqprn'><strong id='sqprn'></strong></code>

    <ins id='sqprn'></ins>

    <acronym id='sqprn'><em id='sqprn'></em><td id='sqprn'><div id='sqprn'></div></td></acronym><address id='sqprn'><big id='sqprn'><big id='sqprn'></big><legend id='sqprn'></legend></big></address>
    <fieldset id='sqprn'></fieldset>

    <i id='sqprn'><div id='sqprn'><ins id='sqprn'></ins></div></i>
    1. <tr id='sqprn'><strong id='sqprn'></strong><small id='sqprn'></small><button id='sqprn'></button><li id='sqprn'><noscript id='sqprn'><big id='sqprn'></big><dt id='sqprn'></dt></noscript></li></tr><ol id='sqprn'><table id='sqprn'><blockquote id='sqprn'><tbody id='sqprn'></tbody></blockquote></table></ol><u id='sqprn'></u><kbd id='sqprn'><kbd id='sqprn'></kbd></kbd>
        1. <i id='sqprn'></i>
        2. <span id='sqprn'></span>
          1. Linux 高级用户,组和权限介绍

            • 时间:
            • 浏览:11
            • 来源:124软件资讯网

                下面先来相识一下关于用户  ,组的四个文件

                /etc/passwd

                /etc/shadow

                /etc/group

                /etc/gshadow

                首先来相识一下/etc/passwd这个文件  ,

                这个文件只是存放用户的信息

                [root@localhost ~]#

                [root@localhost ~]# cat /etc/passwd | grep user1

                user1:x:500:500::/home/user1:/bin/bash

                [root@localhost ~]#

                这内里总共有七个栏位 ,相识一下每个栏位的意义  。

                User1 用户名

                X 用户的密码位(若是这个位上面没有这个X  ,就代表上岸这个用户不需要密码)

                500 UID

                500 GID

                第五个是密码的形貌信息  ,这里没有  。

                /home/user1 用户的/home目录

                /bin/bash 用户的shell

                在这里有个比力特殊的shell /sbin/nologin

                若是将用户的shell改为/sbin/nologin  ,那么这儿用户只可以上岸服务 ,可是不行以上岸盘算机  。不允许交互式上岸  。

                再来相识一下/etc/shadow这个文件  ,

                这个文件主要是用来生存用户的密码信息和计谋  。

                [root@localhost ~]#

                [root@localhost ~]# cat /etc/shadow | grep user1

                user1:$1$2WJEp9K7$h.NRfJsaEm8VMksBQHZm7.:14668:0:99999:7:::

                [root@localhost ~]#

                现在来相识一下每个栏位的意义

                User1 用户名

                第二个栏位是生存用户的密码 ,这个密码是经由MD5的加密的  。

                若是密码位前面有个!  ,就代表这个用户被锁定了  。

                14668 密码最后一次修改的时间

                0 密码最少的存活期(为0代表用户可以随时更改密码)

                99999 密码逾期时间(99999代表密码永不外期)

                7 密码逾期忠告天数(在密码逾期的前七天忠告用户)

                再来相识一下/etc/group这个文件  ,

                这个文件主要是用于存放组的信息 。

                [root@localhost ~]#

                [root@localhost ~]# cat /etc/group | grep user1

                user1:x:500:

                [root@localhost ~]#

                现在来相识一下每个栏位的意义

                User 组的名字

                X 组的密码位

                500 GID

                可以将用户直接添加到冒号后面  ,就代表加入了这个组  。

                最厥后相识一下/etc/gshadow这个文件  ,

                这个文件主要是生存组密码的信息  。

                [root@localhost ~]#

                [root@localhost ~]# cat /etc/gshadow | grep user1

                user1:!::

                [root@localhost ~]#

                User 组的名字

                可以看到  ,这个组默认是没有密码的 ,现在我们给它设置一个密码  。

                [root@localhost ~]#

                [root@localhost ~]# gpasswd user1

                Changing the password for group user1

                New Password:

                Re-enter new password:

                [root@localhost ~]# cat /etc/gshadow | grep user1

                user1:$1$ZxvTf/dQ$DWmf//MTxpwJIzTZIcYQZ/::

                [root@localhost ~]#

                可以看到  ,组现在也有了一个密码  ,而且也是经由MD5加密的 。

                下面来看下组的密码有什么意义 。

                [root@localhost ~]#

                [root@localhost ~]# useradd user2

                [root@localhost ~]#

                [root@localhost ~]# su – user2

                [user2@localhost ~]$

                [user2@localhost ~]$ newgrp user1

                Password:

                [user2@localhost ~]$ id

                uid=501(user2) gid=500(user1) groups=500(user1),501(user2)

                [user2@localhost ~]$

                可以看到  ,我们user2现在加入到了user1  ,酿成了user1组内里的成员  ,也就是说组密码的意义在于  ,一个通俗用户只要有组的密码  ,就可以加入到这个组内里来  ,成为这个组内里的成员  。

                用户治理工具

                Useradd 添加用户

                #useradd user1(用户名)

                [root@localhost ~]#

                [root@localhost ~]# useradd user1

                [root@localhost ~]#

                [root@localhost ~]# id user1

                uid=502(user1) gid=502(user1) groups=502(user1)

                [root@localhost ~]#

                User1就添加乐成了  。

                Usermod 修改用户

                Userdel 删除用户

                #userdel -r user1(用户名)

                [root@localhost ~]#

                [root@localhost ~]# userdel -r user1

                [root@localhost ~]#

                [root@localhost ~]# id user1

                id: user1: No such user

                [root@localhost ~]#

                User1就乐成删除了

                -r 在删除用户的同时删除用户的/home目录  。

                关于监视上岸的工具

                #w

                [root@localhost ~]# w

                15:27:32 up 15:31, 3 users, load average: 0.81, 0.25, 0.08

                USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT

                root :0 - 21Feb10 ?xdm? 3:07 0.30s /usr/bin/ gnome-

                root pts/2 :0.0 15:27 0.00s 0.06s 0.01s w

                root pts/1 192.168.0.20 15:27 13.00s 0.05s 0.05s - bash

                [root@localhost ~]#

                可以看到192.168.0.20正在毗连我  。

                #last

                [root@localhost ~]#

                [root@localhost ~]# last

                root pts/2 station20.exampl Sun Feb 28 15:32 still logged in

                root pts/1 :0.0 Sun Feb 28 15:31 still logged in

                root pts/2 :0.0 Fri Feb 26 17:21 – 00:32 (1+07:10)

                root pts/1 :0.0 Mon Feb 22 23:07 – 21:46 (3+22:38)

                root pts/2 :0.0 Mon Feb 22 18:31 - 23:07 (04:36)

                root pts/2 :0.0 Mon Feb 22 14:33 - 14:33 (00:00)

                root pts/1 :0.0 Sun Feb 21 17:33 - 18:31 (1+00:57)

                root pts/1 :0.0 Sun Feb 21 17:28 - 17:33 (00:04)

                root pts/1 :0.0 Sun Feb 21 13:30 - 17:28 (03:57)

                root :0 Sun Feb 21 13:30 still logged in

                root :0 Sun Feb 21 13:30 – 13:30 (00:00)

                reboot system boot 2.6.18-164.el5 Sun Feb 21 13:29 (7+02:03)

                root pts/1 :0.0 Sun Feb 21 21:22 – down (-7:-54)

                root :0 Sun Feb 21 21:21 – down (-7:-54)

                root :0 Sun Feb 21 21:21 – 21:21 (00:00)

                reboot system boot 2.6.18-164.el5 Sun Feb 21 21:17 (-7:-50)

                reboot system boot 2.6.18-164.el5 Sun Feb 21 21:14 (00:02)

                wtmp begins Sun Feb 21 21:14:07 2010

                [root@localhost ~]#

                曾经有那些用户上岸过我的盘算机  。而且在我盘算机上面上岸了多久  ,许多工具都可以检察的到  。

                #lastb

                [root@localhost ~]#

                [root@localhost ~]# lastb

                root ssh:notty www.google.com. Mon Feb 22 15:50 – 15:50 (00:00)

                root ssh:notty www.google.com. Mon Feb 22 15:50 – 15:50 (00:00)

                root ssh:notty www.google.com. Mon Feb 22 15:50 – 15:50 (00:00)

                btmp begins Mon Feb 22 15:50:50 2010

                [root@localhost ~]#

                这条下令显示的效果是那些盘算机曾经登录过我的盘算机  ,可是没有登录乐成的盘算机 。只会显示没有登录乐成的信息  ,而且它们是使用的什么要领实验毗连我的盘算机 ,这内里都很详细  。

                默认权限(defaults perm)

                默认的时间  ,我们在建立文件和目录的时间 ,并不是继续了上级目录的权限 ,而是凭据目录和文件的UMASK值来决议的 。

                关于UMASK值

                就是用来界说文件的默认权限的

                怎样在系统查询UMASK值呢?

                #umask

                [root@localhost ~]#

                [root@localhost ~]# umask

                0022

                [root@localhost ~]#

                可以看到  ,系统中的umask值为0022

                固然这个umask也是可以修改的

                #umask 0033

                [root@localhost ~]#

                [root@localhost ~]# umask 0033

                [root@localhost ~]#

                [root@localhost ~]# umask

                0033

                [root@localhost ~]#

                系统的umask值被我们改成0033了 。

                Umask是怎么界说目录和文件的权限的

                对于差别用户  ,umask界说都纷歧样 。

                对于root uamsk值为022

                对于通俗用户 umask值为002

                那么我们在建立目录和文件的时间默认权限是几多呢  。

                对于root 目录 777-022 755

                文件 666-022 644

                对于通俗用户 目录 777-002 775

                文件 666-002 664

                这就是我们的建立目录和文件的默认权限  。

                注重 :我们在用最高权限减umask值的时间一定是用二进制的数值来减 ,而不是十进制的数值来减 。

                [root@localhost ~]#

                [root@localhost ~]# umask

                0022

                [root@localhost ~]# mkdir test

                [root@localhost ~]# touch test1

                [root@localhost ~]# ll | grep test

                drwxr-xr-x 2 root root 4096 Feb 28 16:42 test

                -rw-r–r– 1 root root 0 Feb 28 16:43 test1

                [root@localhost ~]#

                可以看到 ,我们目录的默认权限简直是755.文件的默认权限简直是644 。

                [root@localhost ~]#

                [root@localhost ~]# su – user1

                [user1@localhost ~]$

                [user1@localhost ~]$ umask

                0002

                [user1@localhost ~]$ mkdir file

                [user1@localhost ~]$

                [user1@localhost ~]$ touch file1

                [user1@localhost ~]$ ll | grep file

                drwxrwxr-x 2 user1 user1 1024 Feb 28 16:44 file

                -rw-rw-r– 1 user1 user1 0 Feb 28 16:44 file1

                [user1@localhost ~]$

                可以看到  ,在通俗用户的身份下面  。我们建立的目录的权限为775 ,文件的权限为664  。

                关于三个特殊的权限

                1 .suid权限

                若是在一个可执行文件(下令或者剧本)运用了suid后  ,那么任何人在执行该下令的时间会暂时拥有该下令的拥有人权限  。

                我们知道passwd这个下令治理员可以运行  ,另有通俗用户也可以运行  。

                另有若是我们使用passwd来修改密码乐成了  ,是要在/etc/shadow这个文件中去添加一个密码位的  ,现在我们看看这个文件的权限  。

                [root@localhost ~]#

                [root@localhost ~]# ls -l /etc/shadow

                -r——– 1 root root 1050 Feb 25 23:01 /etc/shadow

                [root@localhost ~]#

                可以看到  ,这个文件通俗用户什么权限也没有  ,连读的权限都没有  ,那么通俗用户是怎么修改自己的密码  ,而且能够将密码写在/etc/shadow文件内里的呢  。

                [root@localhost ~]#

                [root@localhost ~]# ll /usr/bin/passwd

                -rwsr-xr-x 1 root root 22960 Jul 17 2006 /usr/bin/passwd

                [root@localhost ~]#

                我们可以看到passwd这个下令的权限位上面多了一个s  ,这个是我们以前从来没有瞥见过的  ,这个就是suid 。

                当通俗用户使用passwd来修改密码的时间  ,由于passwd下令上面有suid权限 ,那么通俗用户就会暂时拥有该下令的拥有人root的权限  ,从而就可以往/etc/shadow这个文件内里去写入密码位了  。

                现在另有个问题  ,若是通俗用户由于suid缘故原由可以修改密码 ,那么通俗用户能否去修改此外用户的密码呢  ,我们来实验一下  。

                [user1@localhost ~]$

                [user1@localhost ~]$ passwd user2

                passwd: Only root can specify a user name.

                [user1@localhost ~]$

                我们可以看到  ,是不行以修改的  。若是根据理论情形  ,我们的passwd下令由于具有suid权限 ,那么是可以修改此外用户的密码的 。这里并不是passwd下令不具有suid功效  ,它也并没有报权限拒绝  。而是提醒我们passwd这个下令只有root用户才可以在后面接上用户名  ,系统是从语法上面做了限制  ,而并不是suid ,没有生效  。这也是系统为了保证宁静  。

                我们在做一个试验来相识suid的作用

                先来看看系统中根的权限是什么

                [root@localhost ~]#

                [root@localhost ~]# ls -ld /

                drwxr-xr-x 25 root root 4096 Feb 28 00:30 /

                [root@localhost ~]#

                可以看到  ,根的权限是755  ,也就是说一个通俗用户是没有措施往根内里写入数据的  ,通俗用户是属于其他人吗  。我们试试

                [root@localhost ~]#

                [root@localhost ~]# su – user1

                [user1@localhost ~]$

                [user1@localhost ~]$ cd /

                [user1@localhost /]$ mkdir test

                mkdir: cannot create directory `test’: Permission denied

                [user1@localhost /]$

                可以看到  ,我们的通俗用户user1对根没有写入的权限 。

                现在我们给mkdir这条下令加一个suid的权限  。看看会发生什么 。

                [root@localhost ~]#

                [root@localhost ~]# which mkdir

                /bin/mkdir

                [root@localhost ~]# ll /bin/mkdir

                -rwxr-xr-x 1 root root 29852 Jul 13 2009 /bin/mkdir

                [root@localhost ~]#

                [root@localhost ~]# chmod u+s /bin/mkdir

                [root@localhost ~]#

                [root@localhost ~]# ll /bin/mkdir

                -rwsr-xr-x 1 root root 29852 Jul 13 2009 /bin/mkdir

                [root@localhost ~]#

                可以看到 ,mkdir这个下令的权限已经多了一个s权限  。

                现在我们在使用通俗用户去根下面建立一个文件  ,

                [root@localhost ~]#

                [root@localhost ~]# su – user1

                [user1@localhost ~]$

                [user1@localhost ~]$ cd /

                [user1@localhost /]$ mkdir file

                [user1@localhost /]$

                [user1@localhost /]$ ll -ld file/

                drwxrwxr-x 2 root user1 4096 Feb 28 21:58 file/

                [user1@localhost /]$

                现在我们就可以在根下面建立目录了  ,是由于我们通俗用户在使用mkdir这条下令的时间暂时酿成了该下令的拥有人的权限  ,所有通俗用户就可以在根下面建立目录  ,还可以看到  ,我们通过user1在根下面建立了一个文件 ,其拥有人也是root  ,这个也很好的说明晰我们简直是使用root的身份去建立的file这个目录  。

                另有一个问题  ,我们的mkdir这个下令由于多了一个s位  ,那么以前的x位权限到那里去了呢  。若是是S  ,代表以前是没有x权限  ,若是是s  ,就代表以前有x权限 。

                [root@localhost ~]#

                [root@localhost ~]# ll /bin/mkdir

                -rwsr-xr-x 1 root root 29852 Jul 13 2009 /bin/mkdir

                [root@localhost ~]# chmod u-x /bin/mkdir

                [root@localhost ~]# ll /bin/mkdir

                -rwSr-xr-x 1 root root 29852 Jul 13 2009 /bin/mkdir

                [root@localhost ~]# chmod u+x /bin/mkdir

                [root@localhost ~]# ll /bin/mkdir

                -rwsr-xr-x 1 root root 29852 Jul 13 2009 /bin/mkdir

                [root@localhost ~]#

                可以看到  ,我们去掉了x权限  ,就酿成了S ,我们加上x权限 ,就又酿成了s 。

                2.sgid权限

                适才我们的suid只可以运用在一个二进制文件上面  ,也就是下令上面 。

                而我们的sgid可以运用在下令和目录上面 。

                下面先来看下sgid运用在下令上面

                若是允许运用在下令上面  ,和适才的suid一样  ,只是酿成了暂时拥有该下令拥有组的权限  ,就这点区别  。

                下面在来看下sgid运用在目录上面

                若是当一个目录运用的sgid权限  ,那么任何人在该目录建设的文件和目录就会继续该目录自己的组  。

                现在我们通过一个试验来相识sgid的权限  ,

                [root@localhost ~]#

                [root@localhost ~]# mkdir /redhat

                [root@localhost ~]#

                [root@localhost ~]# chmod 777 /redhat/

                [root@localhost ~]#

                [root@localhost ~]# ll -ld /redhat/

                drwxrwxrwx 2 root root 4096 Mar 1 21:26 /redhat/

                [root@localhost ~]#

                现在我们新建了一个redhat目录  ,而且这个目录的权限是777 ,现在通俗用户对这个目录也应该是rwx的权限 ,我们试试  ,

                [root@localhost ~]#

                [root@localhost ~]# su – user1

                [user1@localhost ~]$

                [user1@localhost ~]$ cd /redhat/

                [user1@localhost redhat]$

                [user1@localhost redhat]$ touch 1.txt

                [user1@localhost redhat]$ ls

                1.txt

                [user1@localhost redhat]$

                我们简直可以建立文件  ,那么这个文件的拥有人和拥有组会是谁呢 ,一定是user1  。现在我们就在这个目录上面添加一个sgid的权限  。

                [root@localhost ~]#

                [root@localhost ~]# chmod g+s /redhat/

                [root@localhost ~]#

                [root@localhost ~]# su – user1

                [user1@localhost ~]$

                [user1@localhost ~]$ cd /redhat/

                [user1@localhost redhat]$

                [user1@localhost redhat]$ touch 2.txt

                [user1@localhost redhat]$

                [user1@localhost redhat]$ ll

                total 0

                -rw-rw-r– 1 user1 user1 0 Mar 1 21:28 1.txt

                -rw-rw-r– 1 user1 root 0 Mar 1 21:30 2.txt

                [user1@localhost redhat]$

                当我给redhat这个目录添加了一个sgid的权限以后  ,我们使用通俗用户在redhat目录内里建立的文件的拥有组就酿成了root了  。

                现在我们再来明白一下sgid的权限  ,当我们在redhat目录上面运用了sgid的权限  ,那么通俗用户user1在redhat目录下面建立的文件的拥有组就会继续redhat目录自己的组  ,不会随着用户的改变而改变  。

                另有一点  ,和刚刚一样  ,若是有x权限  ,就会显示s  ,若是没有x权限  ,就会显示S  。

                3. sticky权限

                Sticky只可以运用在目录上面

                若是在一个目录上面运用了sticky权限  ,那么仅root用户和和文件的拥有人才气删除该目录中的文件  。

                现在我们通过一个试验来相识sticky权限  。

                [root@localhost ~]#

                [root@localhost ~]# ls -ld /redhat/

                drwxrwxrwx 3 root root 4096 Mar 1 21:48 /redhat/

                [root@localhost ~]#

                Redhat目录的权限是777  ,现在通俗用户应该是可以向这个目录内里建立文件的 ,我们来试试 。

                [root@localhost ~]#

                [root@localhost ~]# su – user1

                [user1@localhost ~]$ cd /redhat/

                [user1@localhost redhat]$ touch 1.txt

                [user1@localhost redhat]$ ls

                1.txt

                [user1@localhost redhat]$

                我们使用user1在这个目录中建立了一个1.txt的文件 ,那么我们的user2能否去删除这个文件呢  ,一定是可以的  ,由于我们的目录权限是777 ,所有我们的通俗用户user2对这个目录是有w的权限的 ,有w权限就意味着可以在这个目录中建立和删除文件  。我们试下  ,

                [root@localhost ~]#

                [root@localhost ~]# su – user2

                [user2@localhost ~]$

                [user2@localhost ~]$ cd /redhat/

                [user2@localhost redhat]$

                [user2@localhost redhat]$ ls

                1.txt

                [user2@localhost redhat]$ rm -rf 1.txt

                [user2@localhost redhat]$ ls

                [user2@localhost redhat]$

                OK  ,是没有问题的  ,我们简直可以删除由user1建立的文件1.txt 。

                现在我们给redhat目录添加一个sticky  ,看看会发生什么 。

                [root@localhost ~]#

                [root@localhost ~]# chmod o+t /redhat/

                [root@localhost ~]# ls -ld /redhat/

                drwxrwxrwt 2 root root 4096 Mar 1 23:19 /redhat/

                [root@localhost ~]#

                可以看到 ,redhat目录已经添加了一个t的权限  ,这个就是sticky权限 。

                和上面一样 ,若是有x权限  ,就显示t  。若是没有x权限  ,就显示T  。

                我们在使用user1建立一个文件  ,然后使用user2删除这个文件  ,

                [root@localhost ~]#

                [root@localhost ~]# su – user1

                [user1@localhost ~]$

                [user1@localhost ~]$ cd /redhat/

                [user1@localhost redhat]$

                [user1@localhost redhat]$ touch 2.txt

                [user1@localhost redhat]$

                [user1@localhost redhat]$ ls

                2.txt

                [user1@localhost redhat]$ su – user2

                Password:

                [user2@localhost ~]$ cd /redhat/

                [user2@localhost redhat]$ ls

                2.txt

                [user2@localhost redhat]$ rm -rf 2.txt

                rm: cannot remove `2.txt’: Operation not permitted

                [user2@localhost redhat]$

                可以看到  ,现在我们使用user1建立的文件 ,user2是不行以删除的  。

                这个就是sticky权限的作用 ,

                当一个redhat目录添加了一个sticky权限后  ,那么user1在redhat目录内里建立的2.txt文件 ,就只有root用户和user1才可以删除该文件  。

                在我们系统中有个目录就是运用了sticky权限  。

                [root@localhost ~]#

                [root@localhost ~]# ls -ld /tmp/

                drwxrwxrwt 15 root root 4096 Feb 28 00:28 /tmp/

                [root@localhost ~]#

                我们的/tmp目录默认就有了sticky权限  。

                我们的特殊权限也可以用数字来表现 。

                Suid 4

                Sgid 2

                Sticky 1

                总结:

                Suid权限用在下令上面  ,而且只能用在用户上面 。

                Sgid权限用在下令和目录上面 ,而且只能用在组上面  。

                Sticky权限用在目录上面  ,而且只能用在其他人上面  。

                关于高级权限的问题就这么多  ,在133内里还会有关于用户 ,组  ,权限的讨论  。