美文网首页
Linux下用户和用户组管理以及文件权限管理

Linux下用户和用户组管理以及文件权限管理

作者: yandaren | 来源:发表于2018-09-05 15:59 被阅读0次

    一. 用户账号管理

    1. 添加新用户账号

    创建新用户的的命令是 useradd

    Usage: useradd [options] LOGIN
           useradd -D
           useradd -D [options]
    
    Options:
      -b, --base-dir BASE_DIR       base directory for the home directory of the
                                    new account
      -c, --comment COMMENT         GECOS field of the new account
      -d, --home-dir HOME_DIR       home directory of the new account
      -D, --defaults                print or change default useradd configuration
      -e, --expiredate EXPIRE_DATE  expiration date of the new account
      -f, --inactive INACTIVE       password inactivity period of the new account
      -g, --gid GROUP               name or ID of the primary group of the new
                                    account
      -G, --groups GROUPS           list of supplementary groups of the new
                                    account
      -h, --help                    display this help message and exit
      -k, --skel SKEL_DIR           use this alternative skeleton directory
      -K, --key KEY=VALUE           override /etc/login.defs defaults
      -l, --no-log-init             do not add the user to the lastlog and
                                    faillog databases
      -m, --create-home             create the user's home directory
      -M, --no-create-home          do not create the user's home directory
      -N, --no-user-group           do not create a group with the same name as
                                    the user
      -o, --non-unique              allow to create users with duplicate
                                    (non-unique) UID
      -p, --password PASSWORD       encrypted password of the new account
      -r, --system                  create a system account
      -R, --root CHROOT_DIR         directory to chroot into
      -s, --shell SHELL             login shell of the new account
      -u, --uid UID                 user ID of the new account
      -U, --user-group              create a group with the same name as the user
      -Z, --selinux-user SEUSER     use a specific SEUSER for the SELinux user mapping
    
    常用的一些选项
    • -d 目录, 指定用户的主目录,如果该目录不存在,可以加上-m选项,会自动创建主目录
    • -g 用户组, 指定用户所属的用户组
    • -G 用户组, 指定用户所属的附加组
    • -s shell, 指定用户所属的shell (默认是 /bin/sh)
    • -p 密码, 用户密码
    实例
    • 创建用户sam, 并且创建用户的主目录为 /home/sam
    useradd -d /home/sam -m  sam
    

    不指定用户组的话,默认用户组就是名为用户名的用户组

    root@debian:~# groups sam
    sam : sam
    
    • 创建用户sam1, 主目录/home/sam1, 设置其主用户组为 group0, 同时又属于用户组 group1 和 group2, 并且设置其登陆shell为/bin/sh(笔者比较喜欢 /bin/bash)
    useradd -s /bin/sh -d /home/sam1 -m -g group0 -G group1,group2 sam1
    

    2. 删除用户账号

    删除用户账号的命令是 userdel

    Usage: userdel [options] LOGIN
    
    Options:
      -f, --force                   force removal of files,
                                    even if not owned by user
      -h, --help                    display this help message and exit
      -r, --remove                  remove home directory and mail spool
      -R, --root CHROOT_DIR         directory to chroot into
      -Z, --selinux-user            remove any SELinux user mapping for the user
    
    实例
    userdel sam1
    

    但是一般我们使用选项 -r,将用户的主目录一起删除

    userdel -r sam1
    

    3. 修改用户账号

    修改用户账号的属性的命令是 usermod

    Usage: usermod [options] LOGIN
    
    Options:
      -c, --comment COMMENT         new value of the GECOS field
      -d, --home HOME_DIR           new home directory for the user account
      -e, --expiredate EXPIRE_DATE  set account expiration date to EXPIRE_DATE
      -f, --inactive INACTIVE       set password inactive after expiration
                                    to INACTIVE
      -g, --gid GROUP               force use GROUP as new primary group
      -G, --groups GROUPS           new list of supplementary GROUPS
      -a, --append                  append the user to the supplemental GROUPS
                                    mentioned by the -G option without removing
                                    him/her from other groups
      -h, --help                    display this help message and exit
      -l, --login NEW_LOGIN         new value of the login name
      -L, --lock                    lock the user account
      -m, --move-home               move contents of the home directory to the
                                    new location (use only with -d)
      -o, --non-unique              allow using duplicate (non-unique) UID
      -p, --password PASSWORD       use encrypted password for the new password
      -R, --root CHROOT_DIR         directory to chroot into
      -s, --shell SHELL             new login shell for the user account
      -u, --uid UID                 new UID for the user account
      -U, --unlock                  unlock the user account
      -v, --add-subuids FIRST-LAST  add range of subordinate uids
      -V, --del-subuids FIRST-LAST  remove range of subordinate uids
      -w, --add-subgids FIRST-LAST  add range of subordinate gids
      -W, --del-subgids FIRST-LAST  remove range of subordinate gids
      -Z, --selinux-user SEUSER     new SELinux user mapping for the user account
    
    

    常用的 -d, -m, -g, -G, -s等等,跟useradd里面选项还有事一样的

    实例
    root@debian:~# usermod -d /home/sam_new -m -s /bin/bash -g group3 sam
    root@debian:~# groups sam
    sam : group3
    

    将用户sam的主目录挪到/home/sam_new, 登陆shell改为 /bin/bash, 用户组改为group3

    4. gpasswd命令管理组内用户

    Usage: gpasswd [option] GROUP
    
    Options:
      -a, --add USER                add USER to GROUP
      -d, --delete USER             remove USER from GROUP
      -h, --help                    display this help message and exit
      -Q, --root CHROOT_DIR         directory to chroot into
      -r, --remove-password         remove the GROUP's password
      -R, --restrict                restrict access to GROUP to its members
      -M, --members USER,...        set the list of members of GROUP
      -A, --administrators ADMIN,...
                                    set the list of administrators for GROUP
    
    常用选项
    • a: 添加用户到指定用户组
    • d: 将用户从指定用户组删除
    实例
    • 将用户sam添加到用户组group0
    root@debian:~# groups sam
    sam : group3
    root@debian:~# gpasswd -a sam group0
    Adding user sam to group group0
    root@debian:~# groups sam
    sam : group3 group0
    
    • 将用户sam从用户组group0删除
    root@debian:~# groups sam
    sam : group3 group0
    root@debian:~# gpasswd -d sam group0
    Removing user sam from group group0
    root@debian:~# groups sam
    sam : group3
    

    5. 用户密码管理

    用户密码管理的命令是 passwd

    Usage: passwd [options] [LOGIN]
    
    Options:
      -a, --all                     report password status on all accounts
      -d, --delete                  delete the password for the named account
      -e, --expire                  force expire the password for the named account
      -h, --help                    display this help message and exit
      -k, --keep-tokens             change password only if expired
      -i, --inactive INACTIVE       set password inactive after expiration
                                    to INACTIVE
      -l, --lock                    lock the password of the named account
      -n, --mindays MIN_DAYS        set minimum number of days before password
                                    change to MIN_DAYS
      -q, --quiet                   quiet mode
      -r, --repository REPOSITORY   change password in REPOSITORY repository
      -R, --root CHROOT_DIR         directory to chroot into
      -S, --status                  report password status on the named account
      -u, --unlock                  unlock the password of the named account
      -w, --warndays WARN_DAYS      set expiration warning days to WARN_DAYS
      -x, --maxdays MAX_DAYS        set maximum number of days before password
                                    change to MAX_DAYS
    
    
    常用选项
    • -l, 锁定口令, 即禁用账号
    • -u, 解锁口令,恢复账号
    • -d, 删除账号的密码
    • -f, 强迫用户下次登录的时候修改密码
    修改密码
    root@debian:~# passwd sam
    Enter new UNIX password:
    Retype new UNIX password:
    passwd: password updated successfully
    

    如果passwd后面不指定用户名的话,默认修改当前用户的密码

    二. 用户组管理

    1. 新增一个用户组

    创建一个新用户组的命令是groupadd

    Usage: groupadd [options] GROUP
    
    Options:
      -f, --force                   exit successfully if the group already exists,
                                    and cancel -g if the GID is already used
      -g, --gid GID                 use GID for the new group
      -h, --help                    display this help message and exit
      -K, --key KEY=VALUE           override /etc/login.defs defaults
      -o, --non-unique              allow to create groups with duplicate
                                    (non-unique) GID
      -p, --password PASSWORD       use this encrypted password for the new group
      -r, --system                  create a system account
      -R, --root CHROOT_DIR         directory to chroot into
    
    
    实例
    • 创建用户组group4
    root@debian:~# groupadd group4
    

    2. 删除一个用户组

    删除一个用户组的命令是groupdel

    Usage: groupdel [options] GROUP
    
    Options:
      -h, --help                    display this help message and exit
      -R, --root CHROOT_DIR         directory to chroot into
    
    实例
    • 删除用户组group4
    root@debian:~# groupdel group4
    

    3. 修改一个用户组的属性

    修改用户组属性的命令是groupmod

    Usage: groupmod [options] GROUP
    
    Options:
      -g, --gid GID                 change the group ID to GID
      -h, --help                    display this help message and exit
      -n, --new-name NEW_GROUP      change the name to NEW_GROUP
      -o, --non-unique              allow to use a duplicate (non-unique) GID
      -p, --password PASSWORD       change the password to this (encrypted)
                                    PASSWORD
      -R, --root CHROOT_DIR         directory to chroot into
    

    4. 切换用户组合,查询用户的用户组

    • 如果用户有多个用户组,可以用命令newgrp进行切换
    sam3@debian:~$ groups
    sam3 group0
    sam3@debian:~$ mkdir bb
    sam3@debian:~$ ls -l
    total 8
    drwxr-xr-x 2 sam3 sam3 4096 Sep  5 15:19 a
    drwxr-xr-x 2 sam3 sam3 4096 Sep  5 15:28 bb
    sam3@debian:~$ newgrp group0
    sam3@debian:~$ mkdir cc
    sam3@debian:~$ ls -l
    total 12
    drwxr-xr-x 2 sam3 sam3   4096 Sep  5 15:19 a
    drwxr-xr-x 2 sam3 sam3   4096 Sep  5 15:28 bb
    drwxr-xr-x 2 sam3 group0 4096 Sep  5 15:29 cc
    
    
    • 查询用户的所用组可以用命令 groups 或者id
    root@debian:~# groups sam3
    sam3 : sam3 group0
    root@debian:~# id sam3
    uid=1005(sam3) gid=1007(sam3) groups=1007(sam3),1003(group0)
    

    三. 文件权限管理

    1. 文件权限位说明

    sam3@debian:~$ ls -l
    total 8
    drwxr-xr-x 2 sam3 sam3   4096 Sep  5 15:33 aa
    lrwxrwxrwx 1 sam3 sam3      7 Sep  5 15:33 test_ln.sh -> test.sh
    -rwxr-xr-x 1 sam3 group0   26 Sep  5 15:32 test.sh
    

    我们看文件aa的权限位

    drwxr-xr-x 2 sam3 sam3   4096 Sep  5 15:33 aa
    

    文件的权限描述共10个字符

    • 第一个字符有三个值, 文件(-), 目录(d), 链接(l)
    • 剩余9个字符每3个一组(rwx), 可读(r), 可写(w), 可执行(x)
    • 第一组rwx: 表示文件的所有者的权限是可读,可写,可执行
    • 第二组r-x: 表示与文件所有者同一个用户组的用户的权限是可读,不可写,可执行
    • 第三组r-x: 表示与文件所有者不同用户组的用户的权限是不可写,可执行
      用数字表示的时候,认为每组权限用3个二进制位表示rwx <=> 111, r-x <=> 101, 或者可以简单的用r=4, w=2, x= 1, 表示 rwx= 4+2+1 =7
    • 接下来的 2 表示连接的文件数
    • sam3 表示文件的所属用户
    • sam3 表示用户所在的用户组
    • 4096表示文件的大小
    • Sep 5 15:33 表示文件的最后修改时间
    • aa 表示文件名

    2. 修改文件的权限位

    修改文件的权限位可以用命令chmod

    chmod 755 test.sh:赋予test.sh权限rwxr-xr-x
    chmod u=rwx,g=rx,o=rx abc:同上u=用户权限,g=组权限,o=不同组其他用户权限
    chmod u-x,g+w abc:给abc去除用户执行的权限,增加组写的权限
    chmod a+r abc:给所有用户添加读的权限
    

    3. 修改用户的所有者以及用户组

    初始状态

    sam3@debian:~$ ls -l
    total 12
    drwxr-xr-x 2 sam3 sam3   4096 Sep  5 15:33 aa
    -rwxr-xr-x 2 sam3 group0   26 Sep  5 15:32 test_hln.sh
    lrwxrwxrwx 1 sam3 sam3      7 Sep  5 15:33 test_ln.sh -> test.sh
    -rwxr-xr-x 2 sam3 group0   26 Sep  5 15:32 test.sh
    
    • 修改文件的所有者使用命令chown
      修改test.sh的所有者为sam
    root@debian:/home/sam3# chown sam test.sh
    root@debian:/home/sam3# ls -l
    total 12
    drwxr-xr-x 2 sam3 sam3   4096 Sep  5 15:33 aa
    -rwxr-xr-x 2 sam  group0   26 Sep  5 15:32 test_hln.sh
    lrwxrwxrwx 1 sam3 sam3      7 Sep  5 15:33 test_ln.sh -> test.sh
    -rwxr-xr-x 2 sam  group0   26 Sep  5 15:32 test.sh
    
    • 修改文件的所属用户组使用命令chgrp
      修改test.sh所属的用户组为sam
    root@debian:/home/sam3# chgrp sam test.sh
    root@debian:/home/sam3# ls -l
    total 12
    drwxr-xr-x 2 sam3 sam3 4096 Sep  5 15:33 aa
    -rwxr-xr-x 2 sam  sam    26 Sep  5 15:32 test_hln.sh
    lrwxrwxrwx 1 sam3 sam3    7 Sep  5 15:33 test_ln.sh -> test.sh
    -rwxr-xr-x 2 sam  sam    26 Sep  5 15:32 test.sh
    
    • 同时修改文件的所有者和用户组使用chown -R
      将test.sh的所有者和用户组都修改为sam3
    root@debian:/home/sam3# chown -R sam3:sam3 test.sh
    root@debian:/home/sam3# ls -l
    total 12
    drwxr-xr-x 2 sam3 sam3 4096 Sep  5 15:33 aa
    -rwxr-xr-x 2 sam3 sam3   26 Sep  5 15:32 test_hln.sh
    lrwxrwxrwx 1 sam3 sam3    7 Sep  5 15:33 test_ln.sh -> test.sh
    -rwxr-xr-x 2 sam3 sam3   26 Sep  5 15:32 test.sh
    

    相关文章

      网友评论

          本文标题:Linux下用户和用户组管理以及文件权限管理

          本文链接:https://www.haomeiwen.com/subject/xxdawftx.html