设为首页 收藏本站
查看: 768|回复: 0

[经验分享] Linux中用户,组及权限的概念及相关命令

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2016-4-11 09:06:18 | 显示全部楼层 |阅读模式
用户:
计算机的资源是有限的,但使用者有很多,为了能够实现这些使用者彼此之间在资源上进行隔离而保证各使用者的文件得到保护,并且我们让主机能够认定这个使用者的确是他所声称的那个使用者,所以我们必须要在整个系统上完成两种机制,1.认证机制Authertication,2.授权机制Authorization,3审计机制 Audition。
         用户类别:
                   管理员用户:root
                   普通用户:分系统用户和登录用户两种
         用户的标识:UserID,UID,范围16bits的二进制数字,0-65535
                   管理员:0
                   普通用户:1-65535
                            系统用户:centos5,6是1-499  centos7是1-999
                            登录用户:centos5,6是500-60000,centos7是1000-60000
         Username与UID的名称转换是根据名称解析库来进行转换的,其路径为/etc/passwd。
         使用cat/etc/passwd可以看到文件的格式为:
           name:password:UID:GID:GECOS:directory:shell
name:用户名,password:可以是加密的密码,也可以是占位符x(一般是占位符),UID:用户ID,GID:用户所属主组的ID,GECOS:用户的注释信息,可选,derictory:用户的主目录(家目录),shell:登录时的默认shell程序。
组:
         组是具有相同特征用户的逻辑集合。
         组有3种类别:
                  类别1
                            管理员组
                            普通用户组:包括系统组和登录组
                  类别2
                            用户的基本组
                            用户的附加组
                  类别3
                            私有组:组名同用户名,且只包含一个用户
                            公共组:组内可以包含多个用户
         组的标识:
                   管理员组:0
                   普通用户组:1-65535
                            系统用户组centos5,6为1-499,centos7为1-999
                            登录用户组:centos5,6为500-60000,centos7为1000-60000
         Groupname和GID的名称转换是根据组名称解析库来进行转换的,其路径为/etc/group。
认证信息:
         通过比对事先存储的信息与登录是提供的信息是否一致:
                   用户密码存放路径:/etc/shadow
                   组密码存放路径:/etc/gshadow
    密码使用策略:


    • 使用随机密码
    • 最短不要低于8位
    • 使用大写字母、小写字母、数字、标点符号四类字符中的任意三种
    • 定期更换密码

Linux系统的密码使用的是单向加密,有以下几种算法:md5,sha,sha224,sha256,sha284,sha512,可以依次排序为1-6,centos5用md5,centos6,7用sha512,在计算时系统会添加随机数(salt)来确保每个用户的密码不相同。
查看shadow文件组成:
         [iyunv@localhost ~]# cat /etc/shadow
root:$6$OxkZXzfIIK0bvTGu$jdJnzwpbYIxDSUZoPWsHcVw5B50Q8om9pWelrPlokCtgJWZtXC4Kpi.AH22gowxkSAOJck2KxtiqaCxvkwsRe1::0:99999:7:::
用户名:加密的密码:最近一次修改密码的时间:最短使用期限:最长使用期限:警告期段:过期期限:保留字段
       备注:加密的密码里面有三个$符,第一个与第二个之间的数字表示加密 算法,第二个和第三个     之间为随机数,第三个到下一个:之间的字符为salt+密码字段。
         用户组的信息库/etc/group
                   Group_name:password:GD:user_list
                            User_list:该组的用户成员,以此组为其附加组的用户的用户列表

权限:
         安装上下文:
                   进程以其发起者的身份运行;进程对文件的访问权限,取决于发起此进程用户的权限;
                   进程对文件的访问权限应用模型:进程的属主与文件的属主是否相同,如果相同,则应用属主权限,否则,则检查进程的属主是否属于文件的属组,如果是则应用属组权限,否则,就只能应用other的权限。
         系统用户:为了能够让后台进程或服务类进程以非管理员的身份运行,通常需要创建多个普通用户,这类用户从不用登录系统、
         权限管理:
                   使用命令ls –l 可以查看到目录或文件的详细信息
                            [iyunv@localhost ~]#ls -l /etc
-rw-r--r--.  1 root root       16 3月  29 14:02 adjtime
-rw-r--r--.  1 root root     1518 6月   7 2013 aliases
-rw-r--r--.  1 root root    12288 3月  29 15:31 aliases.db
                            可以看到,左侧的-rw-r--r—表示这个文件的权限其中:r代                  表readable,读权限;w代表writeable,写权限;x代表excuteable,执行权限,-表示无权限。
                文件和目录略有区别:
                          文件:r:可获取文件的数据
                                w:可修改文件的数据
                                x:可将此文件运行为进程
                          目录:r:可使用ls命令来获取其下的所有文件列表
                                w:可修改此目录下的文件列表,即创建或删除文件
                                x:可cd至此目录中,且可以使用ls–l来获取文件的详细属性信息
                 权限的组合机制:各种组合刚好可以用八进制数0-7表示出来。
                     ---  000   0
                     --x  001   1
                     -w-  010   2
                     -wx  011   3
                     r--  100   4
                     r-x  101   5
                     rw-  110   6
                     rwx  111   7
用户,组,权限管理的相关命令:
    groupadd命令:创建组
        groupadd [options] name
            -g GID,手动指定GID,默认是上一个组的GID+1
            -r 创建系统组
手动指定slackware组为系统组,其GID为766:
1
2
3
root@localhost ~]# groupadd -r -g 766 slackware
[iyunv@localhost ~]# tail -1 /etc/group
slackware:x:766:



    groupmod命令:修改组属性
        groupmod [options] GROUP
            -g :修改GID
            -n new_name :修改组名
1
2
3
[iyunv@localhost ~]# groupmod -g 800 slackware
[iyunv@localhost ~]# tail -1 /etc/group
slackware:x:800:




1
2
3
root@localhost ~]# groupmod -n archlinux slackware
[iyunv@localhost ~]# tail -1 /etc/group
archlinux:x:800:



groupdel命令:删除组
    groupdel [options] GROUP
useradd命令:创建用户
    useradd [options] name
        -u,--uid UID:指定UID
        -g,--gid GROUP:指定基本组ID,此组得事先存在
        -G,--groups GROUP1[,GROUP2,...[,GROUPN]]:以指定用户所属附加组,多个组之                             间用逗号分隔。
        -c,--comment COMMENT:指明注释信息
        -d,--home HOME_DIR:以指定的路径为用户的家目录,通过复制/etc/skel目录,并
                            重命名实现,指定的家目录如果事先存在,则不会为用户复制
                            环境配置文件。
        -s,--shell SHELL:指定用户的默认shell,可用的所有shell列表存储在/etc/shells
                            文件中。
        -r,--system :创建系统用户
    注意:创建用户时的诸多默认设定配置文件为/etc/login.defs.
1
2
[iyunv@localhost ~]# id docker
uid=1002(docker) gid=1002(docker) 组=1002(docker)



useradd -D:显示创建用户的默认配置。
useradd -D [options] :修改默认选项的值。
    修改结果保存于/etc/default/useradd
usermod命令:修改用户属性
    usermod [options] user_name
        -u --uid UID:修改用户的ID为指定的新的UID
        -g --gid GROUP:修改用户所属的基本组
        -G --groups GROUP1[,GROUP2,...[,GROUPN]]:修改用户所属的附加组,原附加组会被
                                                  覆盖。

            -a  --append:与-G一同使用,用于为用户添加新的附加组
    -c  --comment COMMENT:修改注释信息
    -d  --home HOME_DIR:修改用户的家目录,用户原有的文件不会被转移至新的位置
    -m  --move-home:只能与-d选项一同使用,用于将原来的家目录移动为新的家目录
    -l  --login NEW_LOGIN :修改用户名
    -s  --shell SHELL:修改默认的shell
    -L  --lock  :锁定用户的密码,即在用户原来的密码字符串之前添加一个“!”
    -U  --unlock:解锁用户密码
    userdel命令:删除用户

        userdel [options] usr_name

            -r 删除用户时一并删除用户的家目录

    passwd命令:修改密码

        passwd [-k] [-l] [-u [-f]] [-d] [-e] [-n mindays] [-x maxdays] [-w warndays] [-i           inactivedays] [-S][--stdin] [username]
            1.passwd:修改自己的密码

            2.passwd USERNAME:修改指定用户的密码,但仅root有此权限

                -l  -u  :锁定用户和解锁用户
                -d:清除用户密码

                -e DATE:过期期限,日期

                -i DAYS:非活动期限

                -n DAYS:密码最短使用期限

                -x DAYS:密码最长使用期限

                -w DAYS:警告期限


                --stdin

                    echo "PASSWORD" | passwd --stdin USERNAME

                    利用管道将'PASSWORD'字符设置为USERNAME的密码,在脚本中常用到。

    gpasswd:组密码命令

        /etc/gshadow

        gpasswd [options] group

            -a USERNAME :向组中添加用户

            -d USERNAME :向组中移除用户

1
2
3
4
5
6
7
[iyunv@localhost ~]# gpasswd -a docker mytest
正在将用户“docker”加入到“mytest”组中
[iyunv@localhost ~]# id docker
uid=1002(docker) gid=1002(docker) 组=1002(docker),1003(mytest)
正在将用户“docker”从“mytest”组中删除
[iyunv@localhost ~]# id docker
uid=1002(docker) gid=1002(docker) 组=1002(docker)



    nergrp命令:临时切换组为用户的基本组

        newgrp [-] [group]

            -:会模拟用户重新登录以实现重新初始化其工作环境。

1
2
3
4
[iyunv@localhost ~]# groupadd ubuntu
[iyunv@localhost ~]# newgrp ubuntu
[iyunv@localhost ~]# id
uid=0(root) gid=1004(ubuntu) 组=1004(ubuntu),0(root) 环境=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023



    chage命令:更改密码过期信息

        chage [options] user_name

            -d 从UNIX元年开始到密码到期的天数
            -E 过期期限

            -W 警告期限

            -m 最短期限

            -M 最长使用期限

    spacer.jpg id命令:显示用户的真实的和有效的ID信息
        id [options] USERNAME

            -u 仅显示有效的UID

            -g 仅显示用户的基本GID

            -G 仅显示用户所诉的所有组的ID

            -n 显示名字,而非ID

    su命令:switch user

        登录式切换;会痛重新读取用户的配置文件来重新初始化
            su - USERNAME
            su -l USERNAME
        非登录式切换:不会读取目标用户的配置文件进行初始化
            su USERNAME

        su - USERNAME -c 'COMMAND'
            仅以指定用户的身份运行此处指定的命令;   

    其他几个不重要的命令:chsh,chfn,finger,whoami,pwck,grpck...

    chmod:权限修改命令;

        1.chmod [options]...MODE[,MODE]...FIEL...

            用户可以分为三类:u:属主,g:属组,o:其他,a:所有

            MODE的表示方法:

                赋权表示法

                    u=[r][w][x]

                    g=[r][w][x]
                    o=[r][w][x]
                    a=[r][w][x]
                如果没有任何权限可以用-表示,

                授权表示法:

                     u+rwx,u-rwx

                     u+rwx,u-rwx
                     u+rwx,u-rwx
                     u+rwx,u-rwx
        2.chmod [options] ... OCTAL_MODE FILE...

                8进制权限表示位

        3.chmod [options] ...--reference=RFILE FILE...

            参考某一文件的权限信息

        选项:

            -R 递归修改

        注意:用户只能修改属主为自己的那些文件的权限。

    从属关系管理命令:chown,chgrp

        chown命令:

            chown [options] ... [OWNER][:GROUP] FILE...

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

                -R 递归修改

        chgrp命令:

            chgrp [options] ...GROUP FILE...
            chgrp [options] ...--reference=RFILE FILE...

         注意:仅管理员可以修改文件属主,属组。

    umask:文件的权限反向掩码,遮罩码;

            文件:

                666减去umask

            目录:

                777减去umask

        注意之所以文件用666去减表示文件默认不能拥有执行权限,如果减得得结果有执行权限,则

        需要将其加1;

            例:umask:023 那么文件的权限是666-023=644,目录777-023=754

        umask命令:注意此类设定仅对当前shell有效。   

            umask:查看当前umask

            umask UMASK:设置umask

        install命令:复杂文件并且同时可以设置文件的属性

            单源复制:

                install [option] ...[-T] SOURCE DEST

            多源复制:

                install [option] ...SOURCE ...DIRECTORY

                install [option] ...-t DIRECTORY

            创建目录:

                install [option] ... -d DIRECTORY...

            选项:

                    -m --mode=MODE :设定目标文件的权限,默认是755

                    -o --owner=OWNER :设定目标文件的属主

                    -g --group=GROUP :设定目标文件的属组

        mktemp:创建临时目录或文件,注意mktemp会将创建的临时目录直接返回,故可以通过命令引用

                保存起来。

            mktemp [option]...[TEMPLATE]

                常见选项:

                    -d 创建临时目录;

                注意:文件或者目录名一般以.XXX命名,XXX最少三个。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.iyunv.com/thread-202389-1-1.html 上篇帖子: Linux命令整合之alias 下篇帖子: Linux命令整合之touch Linux 用户
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表