zoukankan      html  css  js  c++  java
  • Linux用户管理

    一、用户的相关配置文件:
    用户信息文件:      /etc/passwd
    密码文件:            /etc/shadow
    用户组文件:        /etc/group
    用户组密码文件: /etc/gshadow
    用户配置文件:
       /etc/login.defs
       /etc/default/useradd
    新用户信息文件:/etc/skel
    登录信息:          /etc/motd
     
    二、adduser命令
    adduser [-u uid][-g group][-d home][-s shell]

    -u:直接给出userID                     

    -g:直接给出GID

    -d:直接将根目录建立在已存在目录        

    -s:定义shell
    创建用户:
    [root@localhost ~]# useradd lisi      添加创建了一用户lisi
    [root@localhost ~]# passwd lisi       设置lisi的密码
    Changing password for user wangwu.
    New UNIX password:                    这里输入密码
    BAD PASSWORD: it is based on a dictionary word
    Retype new UNIX password:         再次确认密码
    passwd: all authentication tokens updated successfully.
      上面这种是不被推荐的一种创建用户的方式,任何的用户都应该属于某个组。创建这样的“散人”实际中没有太大意义。
     
    [root@localhost ~]# grep lisi /etc/passwd
    lisi:x:502:502::/home/lisi:/bin/bash
       从上面信息中看到,系统默认为我们创建了一个lisi的组,组ID为504 
     
    用户切换:
    [root@localhost ~]# su -- lisi        root切换到lisi用户
    [lisi@localhost root]$ su -- root     lisi用户切换到root
    Password:                                    普通用户切换root用户是要密码的哟!亲!
    普通用户切换到其它普通用户也是要密码的哟!
     
    用户修改密码:
    [lisi@localhost root]$ passwd
    Changing password for user lisi.
    Changing password for wangwu
    (current) UNIX password:        先输入原始密码
    New UNIX password:               输入新有密码
    Retype new UNIX password:    再次确认新密码
    passwd: all authentication tokens updated successfully.
     
     
    上面是铺垫,下面才是重点。。 
    思考:在上一节中,我们提到,存放用户密码的文件shadow只有root用户才可操作。那么普通用户为什么可以修改密码呢?
     
    =========================setUID===============================                
     
    这里引出一个东东----setUID
           定义:当一个可执行程序具有setUID权限,用户执行这个程序时,将以这个程序所有者的身份执行。
           哈哈!小狼不能和小羊谈朋友,小羊可以与小羊谈朋友,于是,小狼披上了羊的外衣,然后以羊的身份和小羊一起幸福的生活。吼吼。
           其实,用户执行的这个程序就是命令,passwd命令授权了SetUID权限。所以普通用户也可以通过passwd命令改密码。
     
    下面来做个试验!!很有意思的噢,要不要也来试试噢?
     
    切换到lisi用户下面。
    [lisi@localhost ~]$ touch file01   touch创建一个file01的文件
    [lisi@localhost ~]$ ls -l file01
    -rw-rw-r--  1 lisi lisi 0  5月  5 22:14 file01
      我们看到,这个时候用touch命令创建的文件,所有者是lisi,所属于组是lisi组
     
    切换到root下面
    [root@localhost ~]# ls -l /bin/touch   
    -rwxr-xr-x  1 root root 38056 2009-07-03  /bin/touch
    细心朋友会发现权限前面还多一位。没错!setUID就属于这一位。
     
    setUID=4
     
    现在我们给touch命令授予个setUID授予setUID权限有两种方式。
    [root@localhost ~]# chmod  u+s /bin/touch  
    [root@localhost ~]# chmod  4755  /bin/touch
     
    再次切换到lisi目录下
    [lisi@localhost ~]$ touch file02   创建文件file02
    [lisi@localhost ~]$ ls -l file02
    -rw-rw-r--  1 root lisi 0  5月  5 22:35 file02
        这次我们发现,同样的一个命令touch ,这次创建出来的文件所有者变成的root
     
     
    去掉setUID权限的两种方式:
    [root@localhost ~]# chmod  u-s /bin/touch  
    [root@localhost ~]# chmod  755  /bin/touch
     
     
    ========================setGID=================================         
     
    setGID的用法与setUID的用法一起,它是添加组权限的。
    setGID=2
    添加setGID的方式如下:
    [root@localhost ~]# chmod  g+s /bin/touch  
    [root@localhost ~]# chmod  2755  /bin/touch
     
    一般的命令我们不能随便授予setUID权限假如给vi命令授予setUID命令,无疑于给linux留了个后面,那样我们就可以通过vi命令修改用户与密码信息文件了。
    那么到底有哪些命令设置有setUID呢?我们可以查找一下。
     
    [root@localhost ~]# find / -perm -4000 -o -perm -2000
    在当前目录下(/)查找具有setUID(-perm -4000)或者(-o)具有
     
    setGID(-perm -2000)权限的命令
     
     
     
    =======================粘着位==================================  
     
    粘着位有什么作用,我们来看一个例子,这样更容易理解。。
     
    [root@localhost test]# mkdir abc                   创建一个目录abc
    [root@localhost test]# touch abc/newfile      在这个目录下创建一个文件newfile
    [root@localhost test]# chmod 777 abc          对这个目录设置权限为所有人都有所有权限
    [root@localhost test]# ls -ld abc
    drwxrwxrwx  2 root root 4096  5月  5 23:44 abc 
    [root@localhost test]# ls -l abc/newfile          newfile文件的权限是其它人没有删改的权限。
    -rw-r--r--  1 root root 0  5月  5 23:44 abc/newfile
     
    切换到lisi用户
    [lisi@localhost test]$ rm -rf abc 
           具然把abc目录下面的newfile干掉了,lisi用户虽然有对abc目录的所有权限,但对newfile文件没有删除权限呀。这就是linux对文件的权限规定。
           假如张三和李四对一个文件夹都有所有权,这个文件夹下放的有张三的文件,也有李四的文件,如果张三看李四的文件不爽,那么他就直接干掉了,李四上去一看哭了。为什么办法让李四不哭呢?这里就用到粘着位了。
     
    粘着位
    粘着位=1
    t,如果一个权限为777目录有粘着位,每个用户都可以在这个目录下创建文件,但只能删除自己是所有者的文件。
     
    粘着位的授权方式:
    [root@localhost test]# chmod  o+t abc  
    [root@localhost test]# chmod  1755  abc
     
    我们再来删除试试:
    [lisi@localhost abc]$ rm newfile
    rm:是否删除有写保护的一般空文件‘newfile’? y
    rm: 无法删除‘newfile’: 权限不够
     
    自己创建的文件就可以删除噢!
    [root@localhost test]# touch newfile2
    [root@localhost test]# rm newfile2 
    rm:是否删除一般空文件‘newfile2’? y
  • 相关阅读:
    ansible tower
    gitlab说明书
    新建系统配置
    docker&k8s-配置/常用命令
    Winscp隧道实现-跳板机/跨机连接
    FDM, FVM, FEM
    批量处理文件
    未来的职业规划
    内心两大矛盾
    MATLAB在Linux下的安装方法(待尝试)
  • 原文地址:https://www.cnblogs.com/pingzhanga/p/4419293.html
Copyright © 2011-2022 走看看