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

一. 用户账号管理

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

 


转自:https://www.jianshu.com/p/f8aa12ecbf48

 

你可能感兴趣的:(大数据)