linux用户管理

来源:互联网 发布:网站数据库入侵 编辑:程序博客网 时间:2024/04/17 00:39

linux用户管理

用户是如何登录:
    在linux系统中,用户名(用户帐号)并不识别,识别用户帐号的ID,保存在/etc/passwd.
    登录时,我们输入帐号和密码,linux会查找/etc/passwd是否有这个帐号,如果没有,则会跳出,有的话,他会读取该帐号的userID和group ID,同时该帐号的家目录和shell也读取出来,然后核对该帐号的密码表,在/etc/shadow进行核对,核对输入的密码是否正确。这样,就可以登录。
---------------------------------------------
用户分类:
    管理员:root id=0,不受任何限制
    系统用户:安装某些服务建立的用户,id(1~499),默认不允许登录,用于某些服务运行时所用的身份。
    普通用户:管理员创建的用户,id(500以上)

    查看用户:id+用户名
----------------------------------------------
与用户配置相关的文件
    /etc/passwd:用户的帐号文件,用来保存用户的基本信息
    /etc/shadow:用户密码文件,用于存放用户的密码及相关信息
    /etc/group:组帐号文件,存放组的基本信息
    /etc/gshadow:组密码文件,用于组的密码及相关信息

    /etc/skel :用户模板文件
-----------------------------------------------
/etc/passwd:文件剖析
   root:x:0:0:root:/root:/bin/bash
   bin:x:1:1:bin:/bin:/sbin/nologin
    以冒号为分割:
    第一列:用户名,同一个系统帐号对应user id
    第二列:密码,假若为空,表示无密码,为“x”表示由密码
        密码:/etc/shadow
    第三列:用户ID:这个表示系统内部用来识别不同用户,不同的用户识别码(ID)不同
    第四列:组ID:跟/etc/group有关
    第五列:描述行信息:几乎没有什么实际作用,主要用来解释这个帐号的信息。
    第六列:家目录。用户在登录的时候有个起始目录,登录成功,则首先就在该目录下。root用户默认的家目录/root ,普通用户/home/用户名
    第七列:用户登录的shell,如果使用是nologin  表示不允许登录
-------------------------------------------------------
/etc/shadow :文件解析

operassr:x:11:0:operator:/root:/sbin/nologin
profile:!!:15544::::::
tom:$6$dMdJs95H$.tlFC9GAdQ3Eks6uqRc1c/hSg7PyDGBxkZfaM2wKr4pDhToalmHPxV/Ngq5JAJmosyjjCH3rNw4v2rF7Ny3WX.:15545:0:99999:7:::
    第一列:用户名。与/etc/passwd相对应
    第二列:密码。用grub-md5-crypt加密
    第三列:上次修改口令的时间,记录1970年1月1日的天数来表示
    第四列:两次修改口令的时间价格。“0”可以随时修改。
    第五列:口令的有效期。”99999“表示永远有效
    第六列:口令过期前提示。
    第七列:密码过期后多少天不能用,(为空,表示过期不能使用)
    第八列:距离1970年1月1日之后口令过期
    第九列:保留,以后新功能的扩展
-------------------------------------------------------
/etc/group  文件解析
root:x:0:root
bin:x:1:root,bin,daemon

    第一列:组名(建立一个用户。会自动创建一个同名的组)
    第二列:组密码
    第三列:组ID
    第四列:组成员
-------------------------------
/etc/gshadow  文件解析
   
    oprofile:!::
    slocate:!::
    tom:!::

    第一列:组名
    第二列:组密码
    第三列:组的管理员
    第四列:组成员
----------------------------
创建用户 useradd adduser
    格式:useradd[option] username
    [optin]
    -d:指定家目录的位置(默认/home)
    -s:指定使用的shell  ls /bin/*sh
    -c:添加备注信息
    -g:指定用户组
    -G:指定用户加入另外的组
    -u:指定用户ID

    如:useraddjim
       tail /etc/passwd
    useradd -s /bin/csh a1   指定shell 
    a1:x:502:502::/home/a1:/bin/csh


    通过切换到字符界面(ctrl+alt+ F2 ~ F7)看能否登录成功
---------------------------------------------
设置密码:passwd
    格式:passwd[username]

    如:passwd  :修改当前用户密码
       passwd + 用户名: 只能root用户来修改,其他用户无法修改其他用户的密码。
    注意:root用户可以修改任何用户的密码,但是其他用户只能修改自己的密码,不能修改其他用户的密码。
-------------------------------------------
修改用户信息
    usermod
    格式:usermod[option] username
    [option]
    -d:表示目录名,可以修改家目录
    -g:组名,修改属组
    -G:组名列表,修改附加组
    -l:表示用户名,修改用户
    -s:表示shell, 修改自己的shell
    -u:修改用户ID
    -L:锁定用户
    -U:解锁

    锁住,其实是他的密码失效  !不安全的锁
我们可以通过修改密码得到直接登录的目的
假若我们修改shell,则无法通过修改密码来登录
------------------------------------------------
删除用户
    userdel
    格式:userdel[option] username
    -r:连同它的家目录一块删除

    例:userdeljim     家目录保留
       userdel -r tom  家目录一块删除
-------------------------------------------
id 查看用户和组的信息
    格式:id +username
----------------------------------
su  用户切换
    格式: su [-]username
    - 可以省
    不加和加的区别?
    如果不加的话,使用环境变量的时候会造成一些执行上的错误。
    退出的话:用exit 返回上一次的用户。
------------------------------------------------
创建组
    groupadd
    格式:groupadd +groupname
    如:groupaddadmin
---------------------------------------------
groupdel 删除组
    假若一个用户为其属组,要删除的话必须先把用户删除,保证改组不属于任何用户的主组。
----------------------------------------------
管理组:
    gpasswd
    gpasswd groupname  设置组密码

    gpasswd -a username groupname  表示将用户添加到组中
    gpasswd -d username groupname  表示将用户从组中删除
    gpasswd -A username groupname  表示将用户设置为组的管理员

练习:创建admin组,为组添加三个用户,并指定一个管理员。   

    管理员:可以把其他用户添加到组里。
    如何验证:tail/etc/gshadow中是否添加成功

    groupadd admin

    useradd a1
    useradd a2
    useradd a3

    gpasswd -a a1 admin
    gpasswd -a a2 admin
    gpasswd -a a3 admin

    gpasswd -A a1 admin

------------------------------------------------
修改组的信息
    groupmod
    格式:gruopmod[option] groupname
    [option]
    -g: 修改组ID
    -n: 修改组名
    例:groupmod -g600 admin  ID不存在才可以修改成功
       groupmod -n  kening admin

---------------------------------------------
查看用户的组信息
    groups
    格式:groups +username
   
    例:groupsroot
       groups a2
------------------------------------------------
linux权限管理
    linux系统文件的访问分类:
    u:表示的文件属主(拥有者)
    g:表示属组  
    o:表示其他用户
    a:表示所有用户
linux的基本权限:
    r:读   4
    w:写   2
    x:执行 1

    000   0   ---
    001   1   --x
    010   2   -w-
    011   3   -wx
    100   4   r--
    101   5   r-x
    110   6   rw-
    111   7   rwx
-------------------------------
linux在文件和目录有什么区别?
read 读权限:
    对文件:能不能读,查看文件的内容(cat)
    对目录:能不能读是看目录里面的文件列表(ls)
write: 写权限
    对文件:能不能写,就是是否可以修改它的内容
    对目录:能不能在其下面创建子目录或者文件
execute:执行权限
    对文件,看文件能不能运行
    对目录,看能不能cd到目录中去。

    注意:文件能不能修改,取决于是否有写的权限,假若文件没有写的权限,要看它的上级目录是否有写的权限,通过命令行强制修改。
   
    文件能不能删除取决于,它的上级目录是否有写的权限
---------------------------------------------------------
设置权限:
    格式:chmod[option] 权限授予方式 文件或者目录名
    [option]
    -R:表示包括子目录都受到相应的权限
授权的方式:
    u=rwx,g=rx,o=   例:chmodu=rwx,g=rw,o= a
    u-w,g-r         表示取消权限
    u+w,g+w         表示在其权限的基础上添加
   

    777: 表示属主,属组,其他用户都可读写执行

练习:创建一个文件,让属主可读可写可执行,属组只读,其他用户无法访问。
# touch aa
chmod u=rwx,g=r,o= aa
------------------------------------------------------
设置修改文件的属主和属组
    chown:
    格式:chown 属主:属组  文件或者目录
    例:将文件属组改为admin
        chown root:admin aa
        或者chown:admin aa
    修改文件的属主:
        chown a1   aa
        或者chowna1:root aa
------------------------------------------------
特权(高级权限 特殊权限)
SUID:
    对文件:以属主的身份运行。
    对目录:不适用。
    设置:chmod u+s 文件名
      或者:chmod 4xxx 文件名
SGID:
    对文件:以组的身份来运行
    对目录:在该目录下创建的文件或者目录时,属组不是用户的组,而是继承上级目录组
    设置:chmodg+s
     或者:chmod 2xxx
   
    例:
STICKY:对文件:不适用。
    对目录:只能删除自己创建的文件
    设置:chmod o+t 目录名
    或者:chmod 1xxx 目录名

---------------------------------------------------
默认权限:
    默认权限取决于umask

计算默认权限的方法:
    对目录 777-umask=目录权限(如果权限4位,只取后三位)
    对文件:文件在生成的时候,默认没有执行权限
        666-umask=文件的权限

    临时修改:umask222
    永久修改:
    ~/.bashrc 只对当前用户用户起作用
    修改所有用户:
    /etc/bashrc

    umask 222
-----------------------------------------
作业:1 手动创建一个用户
    第一步:在/etc/passwd添加一行信息
    hhh:x:508:508::/home/hhh:/bin/bash
   
    第二步:/etc/shadow添加一行信息
    hhh:$1$BTe9l0$ZyGXXXPYjbsTsVnIhQY710:15546:0:99999:7:::

    第三步:/etc/group添加一行信息
    hh:x:520:

    第四步:/etc/gshadow添加一行信息
    hhh:!::

    第五步:创建家目录
    mkdir /home/hhh

    第六步:把用户环境变量(用户模板信息)复制
    cp /etc/skel/.*  /home/hhh/ -rf
    chown hhh:hhh /home/hhh/ -R
    chmod 755 /home/hhh/ -R

    第七步:创建用户的邮件文件
    touch /var/mail/hhh
    chown hhh:hhh /var/mail/hhh
    chmod 660 /var/mail/hhh
  

      2 创建一个目录,让tom能读能写可执行,jim,mary,kiss可读可执行,其他用户无法访问,设置好后去验证。

    #mkdir /test/share    创建目录 

    #useradd tom
    #useradd jim
    #useradd mary
    #useradd kiss  创建四个用户


    #groupadd dept  创建一个属组

    #gpasswd -a jim dept
    #gpasswd -a mary dept
    #gpasswd -a kiss dept  将三个用户加入到dept组中

    #chown tom:dept /test/share   指定属主和属组

    #chmod u=rwx,g=rx,o=  /test/share 指定权限