Chinaunix首页 | 论坛 | 博客
  • 博客访问: 44196
  • 博文数量: 18
  • 博客积分: 474
  • 博客等级: 下士
  • 技术积分: 260
  • 用 户 组: 普通用户
  • 注册时间: 2011-06-20 10:08
文章分类

全部博文(18)

文章存档

2011年(18)

分类: LINUX

2011-06-20 14:02:52

    命令添加用户,到底背后做了哪些事情?

1、在/etc/passwd追加一行记录,标识该帐号存在了
nokia:x:516:516::/home/inokia:/bin/ksh
用户名:密码:uid:gid:用户描述:家目录:默认shell

uid,默认约定,每个帐号独立uid
gid, 初始化组身份,用户在进行创建文件的时候,用于赋予文件的组属性。



可以使用哪些shell?
/bin/sh
/bin/bash  <--默认
/sbin/nologin  <--- 该帐号就禁止登录
/bin/tcsh
/bin/csh
/bin/ksh
/bin/zsh

2、在/etc/shadow追加一行记录
nokia:$1$/eltbzO.$9QTtR72Icypvz4YPsd05o/:15088:0:99999:7:::
用户名:加密的密码:帐号最后一次修改密码的时间:密码最低修改间隔的天数:密码有效天数:密码过期前7天开始警告:密码过期后多少天还能登录:帐号有效期

# grub-md5-crypt

帐号最后一次修改密码的时间:距离1970-01-01一共多少天
密码最低修改间隔的天数: 0,不受限制; 3 改完密码后必须再等3天才可以改
密码有效天数: 99999代表不过期; 7 密码7天后过期
        密码过期后,要么就不能登录帐号,要么就强制要求修改密码

密码过期后多少天还能登录: 留空,代表过期多少天都能登录,但会强制修改密码
        2,代表过期2天后就不能登录。

帐号有效期:距离1970-01-01一共多少天

3、在/etc/group追加了一个组的记录  《---here
nokia:x:516:
组名:组密码:组id:组成员

默认,如果没有指定gid,系统会建立一个同名字的组

4、在/etc/gshadow 追加了一个组的密码记录
nokia:!::
组名:组密码:组管理员:组成员

组密码:可以让知道该密码的帐号临时把gid身份切换到该组。exit指令还原身份。
组管理员:用于添加删除组的成员。

5、创建用户的家目录,并且把/etc/skel/.* 拷贝到家目录
    权限都必须正确

6、创建用户的邮件文件/var/spool/nokia
    权限都必须正确




组的相关指令
    groupadd/groupmod
    groupdel

    gpasswd 《---root/组的管理员可以执行
        -a    添加成员
        -d    删除成员
        -A    设定管理员

# gpasswd -a nokia upl
Adding user nokia to group upl
    还可以通过修改配置文件,或者 usermod -G upl nokia
   
# gpasswd -A nokia upl    <----把nokia设定为upl组的管理员

# gpasswd upl <---设定组密码

$ newgrp upl <---把gid身份临时切换到upl


练习:通过修改配置文件,全手工的添加一个帐号。并让它的密码为redhat,允许登录系统。模拟该命令的结果: useradd harry;passwd harry



但用户登录,使用的bash,将会读取配置文件: ~/.bash_profile --> ~/.bashrc --> /etc/bashrc ---> /etc/pofile --> /etc/profile.d/*.sh

bash的配置文件
    ~/.bashrc    <--命令别名和函数
    ~/.bash_profile  <--用户的自定义环境变量和需要执行的程序
    ~/.bash_logout
    /etc/bashrc <--bash全局配置文件
    /etc/profile
    /etc/profile.d

命令别名:
    # alias ll='ls -l --color=tty'
    # alias upl='echo "wel to uplooking"'
    # unalias upl

环境变量
    影响其他程序执行的行为特征的。一般都是大写的字母。
    PATH,SHELL

忘记管理员密码该怎么操作?
    进入到单用户模式修改


su - harry
    相当于完全的登录   
su harry
    继承了上一个用户的环境变量,而且切换之后路径不会改变

=================================
权限
    目录也是文件,只不过比较特殊而已。这个“特殊”文件的内容是什么?
        目录里的文件列表的详细信息就是目录的内容。
        如果把目录的文件删除了,目录的文件列表就会发生变化,所以目录这个特殊文件的内容就变了

    读权限, read , r
        针对文件:是否可以查看文件的内容
        针对目录:是否可以查看目录的文件列表
       
    写权限, write , w
        针对文件:是否可以修改文件的内容
        针对目录:是否可以删除目录里的文件,是否可以对目录里文件进行重命名等。

    执行权限,execute ,x
        针对文件:是否可以执行该文件,一般这些文件都是:shell脚本,perl脚本,二进制文件
        针对目录:是否可以进入到该目录


    -rw-r-xr-- 1 root root    33270 03-28 16:18 install.log

    rw-r--r-- 1 root root  <--跟权限相关的
   
rw-,r-x,r-- 拥有者的权限[u]ser,拥有组的权限[g]roup,其他人[o]ther

    如何判断一个用户对某个文件的权限呢?
        1、确认他的角色。
        首先判断该用户对于这个文件来说,属于哪种角色。
            是否 user ? 是,停止判断
                  不是,继续判断
            是否 group ? 是,停止判断
                  不是,肯定就是其他人

        2、根据角色判断他的权限。


如何修改权限?

# chmod o+r /tmp/test/shadow
# chmod o-rx /tmp/test/
# chmod o=r-- /tmp/test/
# chmod u-w,g=r,o=--- /tmp/test/
# chmod -R o+w /tmp/test  <---把/tmp/test目录以及目录下所有文件都进行修改

十进制    二进制
0    000
1    001
2    010
3    011
4    100  ####
5    101  ####
6    110  ####
7    111  ####

    rxw,r-x,r-- == 111,101,100 == 7,5,4

    chmod 754 /tmp/test

    rw-,r--,r-- == 110,100,100 == 644
    755 == rwx,r-x,r-x
   
    664 == rw-,rw-,r--
    775 == rwx,rwx,r-x


练习:
    假设系统存在以下用户
        tom    gid=tom ,Gid=tom
        mary    gid=mary , Gid=mary
        bean    gid=bean ,Gid=bean,admin

    存在一个叫admin的组

    管理员在/tmp/test目录建立文件test1.txt,test2.txt,test3.txt

    要求: tom可以删除/tmp/test目录下的文件
            chmod o=rwx /tmp/test
        mary 可以读取/tmp/test/test3.txt的内容
            chmod o=r-- /tmp/test/test3.txt
        bean 可以修改test2.txt的内容
            chmod o=rw test2.txt

总结:
    chmod 只能是root或者文件的拥有者可以使用

如何修改文件属主
    chown    只能是管理员执行
        -R

    # chown tom:tom test1.txt

    # chown mary.admin test2.txt


[tom@dev ~]$ chown mary:mary tomfile
chown: 正在更改 “tomfile” 的所有者: 不允许的操作

       
练习:
    假设系统存在以下用户
        tom    gid=tom ,Gid=tom
        mary    gid=mary , Gid=mary
        bean    gid=bean ,Gid=bean,admin

    存在一个叫admin的组

    管理员在/tmp/test目录建立文件test1.txt,test2.txt,test3.txt

    要求: tom可以删除/tmp/test目录下的文件,而mary,bean不允许
            tom  <--- rwx           
            bean,mary  <--- r-x

        chown tom:root /tmp/test
        chmod u=rwx,o=rx /tmp/test

        mary 可以读取/tmp/test/test3.txt的内容,而tom,bean对这个文件没有任何的权限
            mary ---> r--
            tom,beam ---> ---           
        chown mary test3.txt
        chmod u=r,o=--- test3.txt


        bean 可以读写test2.txt的内容,tom可以读该文件,mary没有任何权限
            bean --> rw
            tom --> r
            mary --> ---
        chown bean:tom test2.txt
        chmod 640 test2.txt

总结:
    判断一个文件是否能够被删除,判断的依据是,该用户是否对该文件所在的目录有写的权限。如过有,就可以删除。

===================================

特权位,粘贴位
   
    任何用户执行任何程序(命令),该程序执行过程中必须有一个身份(用户和组),默认情况下,谁执行了该指令,就是谁的身份,与程序(命令)文件本身的属主没有任何关系。

    当对程序(命令)文件添加了特权位之后,该程序(命令)执行过程中的身份就是该命令文件的属主的身份。

    特权位有何作用?
        例子: passwd指令,允许普通帐号修改密码
            引申:取消passwd特权位,就禁止普通帐号修改密码
       
        查找所有设定了u+s的命令
        # find / -perm -u=s


    如何设定?
        chmod u+s,g+s /bin/touch
       
        u+s 只能针对命令文件(不包含shell脚本)

        g+s 可以针对命令文件设定,也可以针对目录设定。
            对目录设定的作用:只要在该目录下创建的文件,该文件的拥有组的身份都会自动继承父目录的拥有组的身份。

   
粘贴位
    只能够针对其他人,针对目录进行修改
    chmod o+t /directory
    作用:该目录下的文件,只有root,文件的拥有者可以删除,其他人不可以删除。如果目录的拥有者或者拥有组对该目录有写的权限也可以删除。



    u    g    o
    1    0    0    u+s ==> 4
    1    1    0    u+s,g+s ==> 6
    0    0    1    o+t ==> 1
    1    1    1    u+s,g+s,o+t ==>7

    chmod 4755 ==> 755 , u+s
    chmod 6755 ==>  755 , u+s,g+s
    chmod 2755 ==> 755 ,g+s

阅读(803) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~