Linux用户及权限管理

  • Post author:
  • Post category:linux

一、用户管理

1、创建用户

//创建monitor用户,用户id为501,所属组为monitor,附加群组为admin,起始目录为/monitor
useradd -u 501 -g monitor -G admin -d /monitor monitor

-u:直接给出userID
-g:指定用户所属的群组
-G 指定用户所属的附加群组
-d:指定用户登入时的启始目录
-s:定义shell

Linux系统下新建一个用户会在以下几个文件中做记录,下面以admin用户为例:

  • /etc/passwd:用户信息文件
//查阅/etc/passwd文件,结果如下
cat /etc/passwd
admin:x:503:501::/home/admin:/bin/bash
  • /etc/shadow:用户密码文件
//查阅/etc/shadow文件,结果如下
cat /etc/shadow
admin:Dnakfw28zf38w:8764:0:168:7:::
  • /etc/group:用户组文件
//查阅/etc/group文件,结果如下
cat /etc/group
admin:x:1:root,bin,admin
  • 最后是用户的家目录
cd  /home/admin

2、修改用户

//修改用户使用usermod命令
usermod

3、修改密码

  • 修改普通用户的密码
//修改普通用户的密码使用passwd命令
passwd
  • 修改root用户的密码
    很多时候,当前用户没有权限操作文件和目录,需要切换到root用户进行操作,但是又不知道root用户的密码,这个时候,可以用下面的方法来解决。
    su passwd root
    系统会提示你输入密码和确认密码。
    然后 su – root
    输入刚才的密码即可。
    详情请参考:
    http://jingyan.baidu.com/article/5225f26b0ac250e6fb09084e.html

4、创建组

//创建monitor组
groupadd monitor

-g gid:指定组ID号

5、修改组

groupmod

6、切换用户

su  -  [用户名]

附:su [用户名] 与 su – [用户名]的区别
前者只是切换了用户身份,但Shell环境仍然是原用户的Shell;而后者连用户和Shell环境一起切换成用户身份了。只有切换了Shell环境才不会出现PATH环境变量错误。

二、/etc/passwd文件详解

用户名 : 口令 : 用户标识号 : 组标识号 : 注释性描述 : 主目录 : 登录Shell

  • 用户名(login_name):是代表用户账号的字符串。通常长度不超过8个字符,并且由大小写字母和/或数字组成。登录名中不能有冒号(:),因为冒号在这里是分隔符。为了兼容起见,登录名中最好不要包含点字符(.),并且不使用连字符(-)和加号(+)打头。

  • 口令(passwd):一些系统中,存放着加密后的用户口令字。虽然这个字段存放的只是用户口令的加密串,不是明文,但是由于/etc/passwd文件对所有用户都可读,所以这仍是一个安全隐患。因此,现在许多Linux系统(如SVR4)都使用了shadow技术,把真正的加密后的用户口令字存放到/etc/shadow文件中,而在/etc/passwd文件的口令字段中只存放一个特殊的字符,例如“x”或者“*”。

  • 用户标识号(UID):是一个整数,系统内部用它来标识用户。一般情况下它与用户名是一一对应的。如果几个用户名对应的用户标识号是一样的,系统内部将把它们视为同一个用户,但是它们可以有不同的口令、不同的主目录以及不同的登录Shell等。取值范围是0-65535。0是超级用户root的标识号,1-99由系统保留,作为管理账号,普通用户的标识号从100开始。在Linux系统中,这个界限是500。

  • 组标识号(GID):字段记录的是用户所属的用户组。它对应着/etc/group文件中的一条记录。

  • 注释性描述(users):字段记录着用户的一些个人情况,例如用户的真实姓名、电话、地址等,这个字段并没有什么实际的用途。在不同的Linux系统中,这个字段的格式并没有统一。在许多Linux系统中,这个字段存放的是一段任意的注释性描述文字,用做finger命令的输出。

  • 主目录(home_directory):也就是用户的起始工作目录,它是用户在登录到系统之后所处的目录。在大多数系统中,各用户的主目录都被组织在同一个特定的目录下,而用户主目录的名称就是该用户的登录名。各用户对自己的主目录有读、写、执行(搜索)权限,其他用户对此目录的访问权限则根据具体情况设置。

  • 登录Shell(Shell):用户登录后,要启动一个进程,负责将用户的操作传给内核,这个进程是用户登录到系统后运行的命令解释器或某个特定的程序,即Shell。Shell是用户与Linux系统之间的接口。Linux的Shell有许多种,每种都有不同的特点。常用的有sh(BourneShell),csh(CShell),ksh(KornShell),tcsh(TENEX/TOPS-20typeCShell),bash(BourneAgainShell)等。系统管理员可以根据系统情况和用户习惯为用户指定某个Shell。如果不指定Shell,那么系统使用sh为默认的登录Shell,即这个字段的值为/bin/sh。

三、权限管理

1、查看文件权限设置

//查看/bin/bash文件的权限
ls -al /bin/bash
//结果如下
-rwxr-xr-x 1 root root 938736 Apr 23  2012 /bin/bash

第1位给出了该项的属性,即是文件还是目录,或者是链接文件等。
-:表示是文件,如上面的案例就是一个文件;
d:表示是目录;
l:表示是链接文件。
第2、3、4位给出了文件或目录所有者的权限。
第5、6、7位给出了文件或目录所属用户组的权限。
第8、9、10位给出了其他用户权限。
r:为读权限。
w:为写权限。
x:为执行权限。目录的执行权限的意思是可以用cd命令进入该目录

2、修改文件权限

chmod命令:该命令用来修改文件或目录的访问权限。

一般有两种使用方式:
第一种方式为:chmod a+r 文件或目录名
其中a可用u、g、o替换,+可用=、-替换,r可用w、x替换
a:表示修改所有用户的权限。包括u、g、o
u:表示只给文件或目录所有者修改权限
g:表示给文件所有组修改权限
o:表示给其他用户修改权限
+:表示增加某种权限
-:表示减去某种权限
=:表示赋予某种权限

第二种方式为:用数字表示权限,r:用4表示 w:用2表示 x:用1表示
则1~7表示的权限如下:
1:–x
2::-w-
3:-wx
4:r–
5:r-x
6:rw-
7:rwx
于是可用“chmod 777 文件或目录名”命令来修改权限。三个7中第一个代表所有者权限,第二个代表所有组权限,第三个代表其他用户权限。当然,也可用类似于“chmod u+2文件目录名”的方式来修改权限。

附:
实例一:将/usr/local/test目录及其子目录的读、写、执行权限开放给所有用户

-R表示修改当前目录及其子目录,不加-R仅修改当前目录

chmod -R 777 /usr/local/test

版权声明:本文为u011983531原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。