码迷,mamicode.com
首页 > 系统相关 > 详细

linux用户和组及权限管理

时间:2016-07-11 01:26:26      阅读:1262      评论:0      收藏:0      [点我收藏+]

标签:linux用户组及权限管理

linux用户和组及权限管理

1、用户和组管理
    资源分派:
        Authentication:认证
        Authorization:授权
        Accouting:审计
            Audition

        token, identity(username/password)    

    Linux用户:Username/UID
        管理员:root, 0
        普通用户:1-65535
            系统用户:1-499, 1-999
                对守护进程获取资源进行权限分配;
            登录用户:500+, 1000+
                交互式登录;

    Linux组:Groupname/GID
        管理员组:root, 0
        普通组:
            系统组:1-499, 1-999
            普通组:500+, 1000+

    Linux安全上下文:
        运行中的程序:进程 (process)

            以进程发起者的身份运行:
                root: cat
                tom: cat

            进程所能够访问的所有资源的权限取决于进程的发起者的身份;

[root@master ~]# cat /etc/shadow
root:$1$ndbJNNw1$wzeo35ykfH5PoedLjOzxS0:16462:0:99999:7:::
bin:*:15980:0:99999:7:::
daemon:*:15980:0:99999:7:::
adm:*:15980:0:99999:7:::
lp:*:15980:0:99999:7:::
sync:*:15980:0:99999:7:::
shutdown:*:15980:0:99999:7:::
halt:*:15980:0:99999:7:::
mail:*:15980:0:99999:7:::
uucp:*:15980:0:99999:7:::
operator:*:15980:0:99999:7:::
games:*:15980:0:99999:7:::
gopher:*:15980:0:99999:7:::
ftp:*:15980:0:99999:7:::
nobody:*:15980:0:99999:7:::
dbus:!!:16462::::::
usbmuxd:!!:16462::::::
vcsa:!!:16462::::::
rtkit:!!:16462::::::
avahi-autoipd:!!:16462::::::
abrt:!!:16462::::::
haldaemon:!!:16462::::::
gdm:!!:16462::::::
ntp:!!:16462::::::
apache:!!:16462::::::
saslauth:!!:16462::::::
postfix:!!:16462::::::
pulse:!!:16462::::::
sshd:!!:16462::::::
tcpdump:!!:16462::::::
hadoop:$1$3OZ63WMX$N52Tt.TGFAiLWhUanptvm0:16465:0:99999:7:::
zhangshan:$1$FK4i3MR7$2Y1.Ttnht8wK88cBx3GHK0:16576:0:99999:7:::
[root@master ~]# su - hadoop
[hadoop@master ~]$ cat /etc/shadow
cat: /etc/shadow: Permission denied

    Linux组的类别:
        用户的基本组(主组):
            组名同用户名,且仅包含一个用户:私有组
        用户的附加组(额外组):

    Linux用户和组相关的配置文件:
        /etc/passwd:用户及其属性信息(名称、UID、基本组ID等等);

[root@master ~]# cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
gopher:x:13:30:gopher:/var/gopher:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
usbmuxd:x:113:113:usbmuxd user:/:/sbin/nologin
vcsa:x:69:69:virtual console memory owner:/dev:/sbin/nologin
rtkit:x:499:497:RealtimeKit:/proc:/sbin/nologin
avahi-autoipd:x:170:170:Avahi IPv4LL Stack:/var/lib/avahi-autoipd:/sbin/nologin
abrt:x:173:173::/etc/abrt:/sbin/nologin
haldaemon:x:68:68:HAL daemon:/:/sbin/nologin
gdm:x:42:42::/var/lib/gdm:/sbin/nologin
ntp:x:38:38::/etc/ntp:/sbin/nologin
apache:x:48:48:Apache:/var/www:/sbin/nologin
saslauth:x:498:76:Saslauthd user:/var/empty/saslauth:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
pulse:x:497:496:PulseAudio System Daemon:/var/run/pulse:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
tcpdump:x:72:72::/:/sbin/nologin
hadoop:x:500:500:cloud1:/home/hadoop:/bin/bash
zhangshan:x:501:503::/home/zhangshan:/bin/bash

查看passwd在哪里

[root@master ~]# whatis passwd
passwd               (1)  - update user‘s authentication tokens
passwd               (5)  - password file
passwd [sslpasswd]   (1ssl)  - compute password hashes


man 5 passwd

格式为: account:password:UID:GID:GECOS:directory:shell
         用户:密码(x):用户Id:用户组Id:注释:用户家目录:shell

查看centos版本

[root@master ~]# cat /etc/centos-release 
CentOS release 6.6 (Final)




/etc/group:组及其属性信息;

[root@master ~]# cat /etc/group
root:x:0:
bin:x:1:bin,daemon
daemon:x:2:bin,daemon
sys:x:3:bin,adm
adm:x:4:adm,daemon
tty:x:5:
disk:x:6:
lp:x:7:daemon
mem:x:8:
kmem:x:9:
wheel:x:10:
mail:x:12:mail,postfix
uucp:x:14:
man:x:15:
games:x:20:
gopher:x:30:
video:x:39:
dip:x:40:
ftp:x:50:
lock:x:54:
audio:x:63:
nobody:x:99:
users:x:100:
dbus:x:81:
usbmuxd:x:113:
utmp:x:22:
utempter:x:35:
desktop_admin_r:x:499:
desktop_user_r:x:498:
floppy:x:19:
vcsa:x:69:
rtkit:x:497:
avahi-autoipd:x:170:
abrt:x:173:
cdrom:x:11:
tape:x:33:
dialout:x:18:
haldaemon:x:68:haldaemon
gdm:x:42:
ntp:x:38:
apache:x:48:
saslauth:x:76:
postdrop:x:90:
postfix:x:89:
wbpriv:x:88:
pulse:x:496:
pulse-access:x:495:
fuse:x:494:
sshd:x:74:
tcpdump:x:72:
stapusr:x:156:
stapsys:x:157:
stapdev:x:158:
slocate:x:21:
hadoop:x:500:
d1:x:501:
d2:x:502:
zhangshan:x:503:
[root@master ~]# whatis group
group                (5)  - user group file
group.conf [group]   (5)  - configuration file for the pam_group module

[root@master ~]# man 5 group

group_name:passwd:GID:user_list

解释:
组名:组密码:GID:以当前组为附加组的用户列表(分隔符为逗号)

        /etc/shadow:用户密码及其相关属性;
        /etc/gshadow:组密码及其相关属性;

    /etc/passwd:
        name:password:UID:GID:GECOS:directory:shell

        用户名:密码:UID:GID:GECOS:主目录:默认shell

    /etc/group:
        group_name:password:GID:user_list

        组名:组密码:GID:以当前组为附加组的用户列表(分隔符为逗号)

    /etc/shadow  (:分开 9个字段)
        用户名:加密了的密码:最近一次更改密码的日期:密码的最小使用期限:最大密码使用期限:密码警告时间段:密码禁用期:账户过期日期:保留字段

[root@master ~]# ls -l /etc/shadow
---------- 1 root root 887 5月  21 2015 /etc/shadow
[root@master ~]# cat /etc/shadow
root:$1$ndbJNNw1$wzeo35ykfH5PoedLjOzxS0:16462:0:99999:7:::
bin:*:15980:0:99999:7:::
daemon:*:15980:0:99999:7:::
adm:*:15980:0:99999:7:::
lp:*:15980:0:99999:7:::
sync:*:15980:0:99999:7:::
shutdown:*:15980:0:99999:7:::
halt:*:15980:0:99999:7:::
mail:*:15980:0:99999:7:::
uucp:*:15980:0:99999:7:::
operator:*:15980:0:99999:7:::
games:*:15980:0:99999:7:::
gopher:*:15980:0:99999:7:::
ftp:*:15980:0:99999:7:::
nobody:*:15980:0:99999:7:::
dbus:!!:16462::::::
usbmuxd:!!:16462::::::
vcsa:!!:16462::::::
rtkit:!!:16462::::::
avahi-autoipd:!!:16462::::::
abrt:!!:16462::::::
haldaemon:!!:16462::::::
gdm:!!:16462::::::
ntp:!!:16462::::::
apache:!!:16462::::::
saslauth:!!:16462::::::
postfix:!!:16462::::::
pulse:!!:16462::::::
sshd:!!:16462::::::
tcpdump:!!:16462::::::
hadoop:$1$3OZ63WMX$N52Tt.TGFAiLWhUanptvm0:16465:0:99999:7:::
zhangshan:$1$FK4i3MR7$2Y1.Ttnht8wK88cBx3GHK0:16576:0:99999:7:::

            加密机制:
                加密:明文--> 密文

                解密:密文--> 明文

比如给/tmp/a.txt 加密MD5

[root@master ~]# md5sum  /tmp/a.txt 
c1628aa5555458cf3f93b1bffadc2991  /tmp/a.txt
[root@master ~]# md5sum  /tmp/a.txt 
c1628aa5555458cf3f93b1bffadc2991  /tmp/a.txt
[root@master ~]# sha1sum  /tmp/a.txt 
93923d473f19047e73a2e9b3d8916464d9f49da0  /tmp/a.txt
[root@master ~]# sha1sum  /tmp/a.txt 
93923d473f19047e73a2e9b3d8916464d9f49da0  /tmp/a.txt
[root@master ~]# sha384sum  /tmp/a.txt 
f9945a2214cf089c36af28118b92763687b706fbca12e37ced5cbc5955158ab06273077d7fb923d12b1668f486f8be17  /tmp/a.txt


长度越来越长!还有好多用法呢

            
                单向加密:提取数据指纹
                    md5: message digest, 128bits
                    sha1: secure hash algorithm, 160bits 安全hash算法 1表示版本号
                    sha224: 224bits
                    sha256: 256bits
                    sha384: 384bits
                    sha512: 512bits

[root@master ~]# sha
sha1sum    sha224sum  sha256sum  sha384sum  sha512sum

                    雪崩效应:初始的条件的微小改变,将会引起结果的巨大改变;
                    定长输出:

            密码的复杂性策略:
                1、使用数字、大写字母、小写字母及特殊字符中至少3种;
                2、足够长;
                3、使用随机密码;
                4、定期更换;不要使用最近曾经使用过的密码;

                
                
2、用户和组相关的管理命令:
        用户创建:useradd
            useradd [options] LOGIN
                -u UID: [UID_MIN, UID_MAX], 定义在/etc/login.defs
                -g GID:指明用户所属基本组,可为组名,也可以GID;
                -c "COMMENT":用户的注释信息;
                -d /PATH/TO/HOME_DIR: 以指定的路径为家目录;
                -s SHELL: 指明用户的默认shell程序,可用列表在/etc/shells文件中;
                -G GROUP1[,GROUP2,...[,GROUPN]]]:为用户指明附加组;组必须事先存在;
                -r: 创建系统用户
                    CentOS 6: ID<500
                    CentOS 7: ID<1000

添加用户user1

[root@master ~]# useradd user1
[root@master ~]# cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
gopher:x:13:30:gopher:/var/gopher:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
usbmuxd:x:113:113:usbmuxd user:/:/sbin/nologin
vcsa:x:69:69:virtual console memory owner:/dev:/sbin/nologin
rtkit:x:499:497:RealtimeKit:/proc:/sbin/nologin
avahi-autoipd:x:170:170:Avahi IPv4LL Stack:/var/lib/avahi-autoipd:/sbin/nologin
abrt:x:173:173::/etc/abrt:/sbin/nologin
haldaemon:x:68:68:HAL daemon:/:/sbin/nologin
gdm:x:42:42::/var/lib/gdm:/sbin/nologin
ntp:x:38:38::/etc/ntp:/sbin/nologin
apache:x:48:48:Apache:/var/www:/sbin/nologin
saslauth:x:498:76:Saslauthd user:/var/empty/saslauth:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
pulse:x:497:496:PulseAudio System Daemon:/var/run/pulse:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
tcpdump:x:72:72::/:/sbin/nologin
hadoop:x:500:500:cloud1:/home/hadoop:/bin/bash
zhangshan:x:501:503::/home/zhangshan:/bin/bash
user1:x:502:504::/home/user1:/bin/bash
[root@master ~]# cat /etc/shadow
root:$1$ndbJNNw1$wzeo35ykfH5PoedLjOzxS0:16462:0:99999:7:::
bin:*:15980:0:99999:7:::
daemon:*:15980:0:99999:7:::
adm:*:15980:0:99999:7:::
lp:*:15980:0:99999:7:::
sync:*:15980:0:99999:7:::
shutdown:*:15980:0:99999:7:::
halt:*:15980:0:99999:7:::
mail:*:15980:0:99999:7:::
uucp:*:15980:0:99999:7:::
operator:*:15980:0:99999:7:::
games:*:15980:0:99999:7:::
gopher:*:15980:0:99999:7:::
ftp:*:15980:0:99999:7:::
nobody:*:15980:0:99999:7:::
dbus:!!:16462::::::
usbmuxd:!!:16462::::::
vcsa:!!:16462::::::
rtkit:!!:16462::::::
avahi-autoipd:!!:16462::::::
abrt:!!:16462::::::
haldaemon:!!:16462::::::
gdm:!!:16462::::::
ntp:!!:16462::::::
apache:!!:16462::::::
saslauth:!!:16462::::::
postfix:!!:16462::::::
pulse:!!:16462::::::
sshd:!!:16462::::::
tcpdump:!!:16462::::::
hadoop:$1$zj8ykgay$VjEtLMr//31qW7fZ6KSS7/:16991:0:99999:7:::
zhangshan:$1$FK4i3MR7$2Y1.Ttnht8wK88cBx3GHK0:16576:0:99999:7:::
user1:!!:16991:0:99999:7:::


!!表示user1用户没有密码

[root@master ~]# cat /etc/login.defs 
#
# Please note that the parameters in this configuration file control the
# behavior of the tools from the shadow-utils component. None of these
# tools uses the PAM mechanism, and the utilities that use PAM (such as the
# passwd command) should therefore be configured elsewhere. Refer to
# /etc/pam.d/system-auth for more information.
#
# *REQUIRED*
#   Directory where mailboxes reside, _or_ name of file, relative to the
#   home directory.  If you _do_ define both, MAIL_DIR takes precedence.
#   QMAIL_DIR is for Qmail
#
#QMAIL_DIR    Maildir
MAIL_DIR    /var/spool/mail
#MAIL_FILE    .mail
# Password aging controls:
#
#    PASS_MAX_DAYS    Maximum number of days a password may be used.
#    PASS_MIN_DAYS    Minimum number of days allowed between password changes.
#    PASS_MIN_LEN    Minimum acceptable password length.
#    PASS_WARN_AGE    Number of days warning given before a password expires.
#
PASS_MAX_DAYS    99999
PASS_MIN_DAYS    0
PASS_MIN_LEN    5
PASS_WARN_AGE    7
#
# Min/max values for automatic uid selection in useradd
#
UID_MIN              500
UID_MAX            60000
#
# Min/max values for automatic gid selection in groupadd
#
GID_MIN              500
GID_MAX            60000
#
# If defined, this command is run when removing a user.
# It should remove any at/cron/print jobs etc. owned by
# the user to be removed (passed as the first argument).
#
#USERDEL_CMD    /usr/sbin/userdel_local
#
# If useradd should create home directories for users by default
# On RH systems, we do. This option is overridden with the -m flag on
# useradd command line.
#
CREATE_HOME    yes
# The permission mask is initialized to this value. If not specified, 
# the permission mask will be initialized to 022.
UMASK           077
# This enables userdel to remove user groups if no members exist.
#
USERGROUPS_ENAB yes
# Use SHA512 to encrypt password.
ENCRYPT_METHOD MD5
MD5_CRYPT_ENAB yes


id的用法

[root@master ~]# id user2
uid=505(user2) gid=509(a) 组=509(a)

创建一个普通用户,默认都有自己家的环境变量!!!
[root@master ~]# ll -a /home/test1/
总用量 28
drwx------   4 test1 test1 4096 7月   9 08:00 .
drwxr-xr-x. 11 root  root  4096 7月   9 08:18 ..
-rw-r--r--   1 test1 test1   18 10月 16 2014 .bash_logout
-rw-r--r--   1 test1 test1  176 10月 16 2014 .bash_profile
-rw-r--r--   1 test1 test1  124 10月 16 2014 .bashrc
drwxr-xr-x   2 test1 test1 4096 11月 11 2010 .gnome2
drwxr-xr-x   4 test1 test1 4096 1月  27 2015 .mozilla

指定用户家目录

[root@master ~]# useradd -d /wwwww  usertest777
useradd: user ‘usertest777‘ already exists
[root@master ~]# ll -a  /wwwww/
总用量 28
drwx------   4 usertest777 usertest777 4096 7月   9 08:22 .
dr-xr-xr-x. 25 root        root        4096 7月   9 08:22 ..
-rw-r--r--   1 usertest777 usertest777   18 10月 16 2014 .bash_logout
-rw-r--r--   1 usertest777 usertest777  176 10月 16 2014 .bash_profile
-rw-r--r--   1 usertest777 usertest777  124 10月 16 2014 .bashrc
drwxr-xr-x   2 usertest777 usertest777 4096 11月 11 2010 .gnome2
drwxr-xr-x   4 usertest777 usertest777 4096 1月  27 2015 .mozilla

查看系统有多少种shell?

[root@master ~]# cat /etc/shells 
/bin/sh
/bin/bash
/sbin/nologin
/bin/dash
/bin/tcsh
/bin/csh

如果添加一个用户,它的环境变量是根据/etc/default/useradd配置文件生成的。默认是使用/bin/bash

shell的。

[root@master ~]# cat /etc/default/useradd 
# useradd defaults file
GROUP=100
HOME=/home
INACTIVE=-1
EXPIRE=
SHELL=/bin/bash
SKEL=/etc/skel
CREATE_MAIL_SPOOL=yes


我想设置中文,只对当前会话有效,可以使用类型 export a=b设置环境变量,要永久生效,要修改配置文件。

export LANG="zh_CN.UTF-8"

设置中文
            默认值设定:/etc/default/useradd文件中
                useradd -D
                    -s SHELL

        练习:创建用户gentoo,附加组为distro和linux,默认shell为/bin/csh,注释信息为"Gentoo Distribution";

        
    组创建:groupadd
        groupadd [OPTION]... group_name

            -g GID: 指明GID号;[GID_MIN, GID_MAX]
            -r: 创建系统组;
                CentOS 6: ID<500
                CentOS 7: ID<1000

[root@master ~]# groupadd --help
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

下面创建2个组group1,group2,及创建一个用户test333,其附加组为,group1,group2

命令如下:

[root@master ~]# groupadd group1
[root@master ~]# groupadd group2
[root@master ~]# useradd  test333 -G group1,group2
[root@master ~]# id test333
uid=510(test333) gid=516(test333) groups=516(test333),514(group1),515(group2)

[root@master ~]# useradd  test444 -G group1,group2
[root@master ~]# id test444
uid=511(test444) gid=517(test444) groups=517(test444),514(group1),515(group2)
 
 
查看用户相关的ID信息:id
        id [OPTION]... [USER]
            -u: UID
            -g: GID
            -G: Groups
            -n: Name

[root@master ~]# id
uid=0(root) gid=0(root) groups=0(root)
[root@master ~]# id test1
uid=65534(test1) gid=505(test1) groups=505(test1)

查看用户test1的UID号

[root@master ~]# id -u test1
65534

查看用户test1的GUID号

[root@master ~]# id -g test1
505


[root@master ~]# id -G test1
505
[root@master ~]# id -n -u test1
test1


    切换用户或以其他用户身份执行命令:su
        su [options...] [-] [user [args...]]

            切换用户的方式:
                su UserName:非登录式切换,即不会读取目标用户的配置文件;
                su - UserName:登录式切换,会读取目标用户的配置文件;完全切换;

[root@master ~]# 
[root@master ~]# su - test1
[test1@master ~]$ echo $PATH
/usr/local/bin:/bin:/usr/bin:/usr/java/jdk1.7.0_75/bin:/usr/local/zookeeper-3.4.6/bin:/usr/local/hadoop-2.6.0/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/test1/bin

环境变量没有/usr/local/sbin

[test1@master ~]$ exit
logout

[root@master ~]# su test1
[test1@master root]$ echo $PATH
/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/java/jdk1.7.0_75/bin:/usr/local/zookeeper-3.4.6/bin:/usr/local/hadoop-2.6.0/bin:/root/bin

环境变量有/usr/local/sbin
[test1@master root]$ ll
ls: cannot open directory .: Permission denied
                Note:root su至其他用户无须密码;非root用户切换时需要密码;

换个身份执行命令:
         用法:       su [-] UserName -c ‘COMMAND‘

[root@master ~]# su - test1 -c ‘echo $PATH‘
/usr/local/bin:/bin:/usr/bin:/usr/java/jdk1.7.0_75/bin:/usr/local/zookeeper-3.4.6/bin:/usr/local/hadoop-2.6.0/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/test1/bin

没有切换用户直接执行命令了哦!!  

         选项:
                -l:“su -l UserName”相当于“su - UserName”

    用户属性修改:usermod
        usermod [OPTION] login

            -u UID: 新UID
            -g GID: 新基本组
            -G GROUP1[,GROUP2,...[,GROUPN]]]:新附加组,原来的附加组将会被覆盖;若保留原有,则要同时使用-a选项,表示append;
            -s SHELL:新的默认SHELL;
            -c ‘COMMENT‘:新的注释信息;
            -d HOME: 新的家目录;原有家目录中的文件不会同时移动至新的家目录;若要移动,则同时使用-m选项;
            -l login_name: 新的名字;

            -L: lock指定用户
            -U: unlock指定用户

            -e YYYY-MM-DD: 指明用户账号过期日期;
            -f INACTIVE: 设定非活动期限;
原来的的组被覆盖 直接用-G命令

[root@master ~]# id test444
uid=511(test444) gid=517(test444) groups=517(test444),514(group1),515(group2)
[root@master ~]# groupadd a1
[root@master ~]# groupadd a2
[root@master ~]# usermod  -G test444 a1
usermod: user ‘a1‘ does not exist
[root@master ~]# usermod  -G  a1 test444 
[root@master ~]# id test444
uid=511(test444) gid=517(test444) groups=517(test444),518(a1)


原来的组没有被覆盖 用命令  -a -G

[root@master ~]# id test444
uid=511(test444) gid=517(test444) groups=517(test444),518(a1)

[root@master ~]# usermod  -G  -a a2  test444
usermod: group ‘-a‘ does not exist   //不能这样写    一定要注意哦

[root@master ~]# usermod   -a -G  a2  test444 
[root@master ~]# id test444
uid=511(test444) gid=517(test444) groups=517(test444),518(a1),519(a2)


锁定用户前面有!$1$ndbJNNw1$wzeo35ykfH5PoedLjOzxS0:16462  有感叹号
[root@master ~]# usermod -L root
[root@master ~]#
[root@master ~]# head -1 /etc/shadow
root:!$1$ndbJNNw1$wzeo35ykfH5PoedLjOzxS0:16462:0:99999:7:::

解锁指定用户及解锁用户

[root@master ~]# usermod -L root   //锁定用户
[root@master ~]# usermod -U root   //解锁用户
[root@master ~]# head -1 /etc/shadowroot:$1$ndbJNNw1$wzeo35ykfH5PoedLjOzxS0:16462:0:99999:7:::

注意锁定用户,当前session可以执行,通过其他终端的用户不能登录,如果退出了,就不能登录了,尤其对root用户而言,不要锁定root用户,然后退出。不然你就悲剧了!

    给用户添加密码:passwd
        passwd  [-k]  [-l]  [-u [-f]] [-d] [-e] [-n mindays] [-x maxdays] [-w
       warndays] [-i inactivedays] [-S] [--stdin] [username]
       
        passwd [OPTIONS] UserName: 修改指定用户的密码,仅root用户权限
        passwd: 修改自己的密码;

            常用选项:
                -l: 锁定指定用户
                -u: 解锁指定用户

                -n mindays: 指定最短使用期限
                -x maxdays:最大使用期限
                -w warndays:提前多少天开始警告
                -i inactivedays:非活动期限;

                --stdin:从标准输入接收用户密码;
                    echo "PASSWORD" | passwd --stdin USERNAME

                Note: /dev/null, bit buckets  黑洞
                      /dev/zero,
            可以这样设置密码

[root@master ~]# echo 123 | passwd --stdin test1
Changing password for user test1.
passwd: all authentication tokens updated successfully.


不想显示信息可以这样

[root@master ~]# echo 123 | passwd --stdin test1  &> /dev/null
[root@master ~]#



    删除用户:userdel
        userdel [OPTION]... login
            -r: 删除用户家目录;

    组属性修改:groupmod
        groupmod [OPTION]... group
            -n group_name: 新名字
            -g GID: 新的GID;

    组删除:groupdel
        groupdel GROUP

    组密码:gpasswd
        gpasswd [OPTION] GROUP

            -a user: 将user添加至指定组中;
            -d user: 删除用户user的以当前组为组名的附加组

            -A user1,user2,...: 设置有管理权限的用户列表

        newgrp命令:临时切换基本组;
            如果用户本不属于此组,则需要组密码;

    修改用户属性:chage
        chage [OPTION]... LOGIN
            -d LAST_DAY
            -E, --expiredate EXPIRE_DATE
            -I, --inactive INACTIVE
            -m, --mindays MIN_DAYS
            -M, --maxdays MAX_DAYS
            -W, --warndays WARN_DAYS

    其它命令:chfn, chsh, finger

    命令总结:useradd, groupadd, su, id, usermod, userdel, groupmod, groupdel, passwd, newgrp, pwck, gpasswd, chage, chsh, chfn, finger


3、权限管理:
    
文件的权限主要针对三类对象进行定义:
        owner: 属主, u
        group: 属组, g
        other: 其他, o

    每个文件针对每类访问者都定义了三种权限:
        r: Readable
        w: Writable
        x: eXcutable

        文件:
            r: 可使用文件查看类工具获取其内容;
            w: 可修改其内容;
            x: 可以把此文件提请内核启动为一个进程;

        目录:
            r: 可以使用ls查看此目录中文件列表;
            w: 可在此目录中创建文件,也可删除此目录中的文件;
            x: 可以使用ls -l查看此目录中文件列表,可以cd进入此目录;
创建目录,目录有执行权限

[root@master ~]# mkdir tttt
drwxr-xr-x  2 root root  4096 Jul  9 20:45 tttt


创建一个文件,默认没有执行权限

[root@master ~]# touch aa
[root@master ~]# ll aa
-rw-r--r-- 1 root root 0 Jul  9 20:47 aa


        --- 000 0
        --x 001 1
        -w- 010 2
        -wx 011 3
        r-- 100 4
        r-x 101 5
        rw- 110 6
        rwx 111 7

--- 000 0
--x 001 1
-w- 010 2
-wx 011
r-- 100
r-x 101
rx- 110
rwx 111
        
        例如:
            640: rw-r-----
            rwxr-xr-x: 755

    修改文件权限:chmod
        chmod [OPTION]... OCTAL-MODE FILE...

            -R: 递归修改权限

        chmod [OPTION]... MODE[,MODE]... FILE...
            MODE:
                修改一类用户的所有权限:
                    u=
                    g=
                    o=
                    ug=
                    a=
                    u=,g=

                修改一类用户某位或某些位权限
                    u+
                    u-

        chmod [OPTION]... --reference=RFILE FILE...
            参考RFILE文件的权限,将FILE的修改为同RFILE;

chmod命令的用法,大概有如下几个方面:我就不一一解释了。

[root@master ~]# chmod 777 a.txt
[root@master ~]# chmod u-x,o-w,o-x a.txt
[root@master ~]# ll a.txt
-rw-rwxr-- 1 root root 2456 Jul  6 06:54 a.txt
[root@master ~]# chmod u-x,u-r,u-x,o-w,o-x,o-r a.txt
[root@master ~]# ll a.txt
--w-rwx--- 1 root root 2456 Jul  6 06:54 a.txt
[root@master ~]# chmod u-x,u-r,u-w,o-w,o-x,o-r a.txt
[root@master ~]# ll a.txt
----rwx--- 1 root root 2456 Jul  6 06:54 a.txt


如果给一个文件添加执行权限(包括用户、用户组、其他组)

[root@master ~]# chmod +x a.txt
或者:
[root@master ~]# chmod a+x a.txt
[root@master ~]# 
[root@master ~]# ll a.txt
---xrwx--x 1 root root 2456 Jul  6 06:54 a.txt


    修改文件的属主和属组:
        仅root可用;

        修改文件的属主:chown
            chown [OPTION]... [OWNER][:[GROUP]] FILE...

                用法:
                    OWNER
                    OWNER:GROUP
                    :GROUP

                    Note: 命令中的冒号可用.替换;

                -R: 递归

            chown [OPTION]... --reference=RFILE FILE...

        修改文件的属组:chgrp
             chgrp [OPTION]... GROUP FILE...
               chgrp [OPTION]... --reference=RFILE FILE...

               -R

    文件或目录创建时的遮罩码:umask
        FILE: 666-umask
            Note: 如果某类的用户的权限减得的结果中存在x权限,则将其权限+1
        DIR: 777-umask    

        umask: 查看
        umask #: 设定

    命令总结:chmod, chown, chgrp, umask

总结:linux用户组及权限管理非常重要,一定要好好总结及学习哦

本文出自 “梁小明的博客” 博客,请务必保留此出处http://7038006.blog.51cto.com/7028006/1817317

linux用户和组及权限管理

标签:linux用户组及权限管理

原文地址:http://7038006.blog.51cto.com/7028006/1817317

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!