首先介绍一下基础:
用户、组、权限。安全上下文,保证每个用户运行的权限规则。在Linux中,哪个用户发出命令(或者开始某个进程),则该进程的权限和该用户一样。用户的权限用三种:rwx,为了方便管理,分别用三位二进制与之对应,-表示没有,例如rwx,三位二进制标识为111,r--为100,那么对应换成十进制,则r对应为4,w为2,x为1,如rwx就可以用4+2+1 = 7来表示。在Linux中,系统会自动创建一些用户(ID<500),比如超级用户root,ID为零,不能修改,其他用户在1-499之间。用户创建的用户ID>499;在Linux中,分为用户和组,用户在系统中是唯一的,计算机用UID来标识(计算机会在文件/etc/passwd中查找用户),当人我们用用户名在标识。而用户组(/etc/group)可以包括多个用户,一个用户也可以属于多个组。Linux管理用户和组都会管理其密码,在/etc/shadow,和/etc/gshadow中(影子口令)。下面就开始介绍用户管理的流程和常用命令;
1.添加用户(需要root才能有权限):useradd 用户名
创建用户后,删除。在默认情况下是不删除家目录。该命令有返回值,0表示创建成功,其他的表示创建失败,具体man 来查看说明。在lLinux中,如果创建用户没有给其制定一个组,则系统会默认创建一个和用户名一样的组。创建用户过程:切换到root,然后useradd 用户名,此时还不能用,必须设置用户密码才能用,用passwd 用户名来设置密码。用finger 用户名来查看用户信息。
su root #切换到root权限 useradd user_name passwd user_name #修改用户密码 finger user_name #查看用户信息。 cat /etc/passwd |more #查看passwd文件中用户添加的信息在创建用户命令的过程中,系统完成了几个工作,其中之一就是向passwd文件添加基本的信息。即上面例子最后一条命令可以查看这些信息。这些信息以“:”分格,比如我的电脑查看其中一条用户信息为:
first_user : x : 1001 : 1001 :附加组 : /home/first_user:/bin/bash第一个是用户名,第二个x表示密码,用于passwd对所有用户可读,所以这里不显示(具体是放在/etc/shadow中,称为影子口令),1001:1001表示用户UID和GID,最后是用户价目录和默认的shell类型。这些都可以在useradd创建是通过选项来设置,或者创建完成后通过其他命令修改设置。那么/etc/shadow是什么格式?请看如下格式:
用户名 : 加密后的用户密码 :最后一次修改口令的天数(从1970.1.1开始算) :两次修改密码最短时间间隔 :最长间隔:密码失效天数:等 first_user : dhawi13rieh : 16652 : 0 : 9999 : 7 : : :如果密码前有“!”标识该用户被锁定,可以手动修改/etc/shadow,或者用命令usermod -L 用户名。从上面可以看出,有何多参数我们在创建用户时并没用指定,系统却有一个默认参数,这个默认设定就在文件/etc/default/useradd文件中(系统用户的某些参数在/etc/login.defs中)。里面有创建用户时默认指定的家目录,UID,GID的范围等。
添加用户的过程完全可以手动完成为,流程:在/etc/passwd中添加信息,然后在/etc/shadow文件中添加密码信息(此时加密的密码位空缺),然后用passwd添加密码,然后建立组(用命令时系统会自动创建,手动则需要手动创建)编辑 /etc/group,然后修改组密码/etc/gshadow中修改,然后用mkdir创建家目录,最后还要拷贝用户所需要的文件,并修改文件的属组属主,这样才完成。
修改用户属性usermod 选项 参数 用户名
其中常用选项有: -u:UID; -g: GID, -l:该登录名, -L:锁定账户; -U:解锁;-G:追加到附加组。还有其他密码时间的设定等。
chsh:change shell ,修改用户的默认shell chfn:change finger,修改用户注释信息(电话、邮箱等) passwd 用户名:修改密码(没有密码不能登录) pwch:检查用户帐号的完整性 userdel 选项 用户名 :删除用户(默认不删除用户的家目录,可以在配置文件中修改默认设定)组管理:
groupadd,groupmod,groupdel,gpasswd
修改文件的权限,属主属组
chown :修改文件的属主,常用格式:chown 属主 file_name,如果是目录,可以递归修改 chgrp :修改文件的属组,用法同上 chmod :修改文件的权限用户家目录中有一系列隐藏文件,.hash_history(上次关机的命令历史) .bash_logout(用户退出系统执行的脚本,可做修改) .bash_profile(用户最重要的一些信息,比如环境变量等)。查看环境变量:echo $PATH;
超级用户root,UID,GID都为零,超级用户的家目录不再/home下,而是在/root下。超级用户有最高的权限,尽量不要用超级用户登录。
特殊权限SUID,SGID:如果文件设置了SUID,则任何用户访问该文件时都具有文件属主的权限,SGID类似。那么普通用户就能修改一些文件(比如普通用户不能修改自己的密码,因为无法修改passwd,此时就需要设置特殊权限),格式如下:
chmod u+s file_name:添加SUID权限 chmod u-s file_name:取消SUID权限 chmod g+s file_name: chmod g-s file_name: