linux用户与权限管理

linux用户与权限管理

(一):文件及目录权限管理

在linux系统中,针对文件而言主要分为三类用户:文件的所有者、组用户、其他用户。而linux系统的文件及目录的权限就是针对这三类不同的用户的(管理员拥有最高权限,在此不考虑系统管理员)。

首先,我们可以通过 ls -l 命令查看文件及目录权限

wuhui@ABC:~$ ls -l
total 36
drwxrwxr-x 5 wuhui wuhui 4096 Mar  3 16:41 Demo
drwxr-xr-x 2 wuhui wuhui 4096 Feb 24 18:09 Desktop
drwxr-xr-x 2 wuhui wuhui 4096 Feb 24 18:09 Documents
drwxr-xr-x 2 wuhui wuhui 4096 Feb 24 18:09 Downloads
drwxr-xr-x 2 wuhui wuhui 4096 Feb 24 18:09 Music
drwxr-xr-x 2 wuhui wuhui 4096 Feb 24 18:09 Pictures
drwxr-xr-x 2 wuhui wuhui 4096 Feb 24 18:09 Public
drwxr-xr-x 2 wuhui wuhui 4096 Feb 24 18:09 Templates
drwxr-xr-x 2 wuhui wuhui 4096 Feb 24 18:09 Videos
 
  
由此我们可以看到文件及目录的常见权限为r(读)、w(写)、x(执行)除此之外,部分文件还拥有特殊权限。如

wuhui@ABC:~$ ls -l /bin/ping
-rwsr-xr-x 1 root root 44168 May  8  2014 /bin/ping
 
  
在此,我们只讨论rwx权限。在ls -l 命令的执行结果中,第二位到第十位表示文件的权限,其中每三位代表一个用户,依次为文件所有者、文件属组用户、其他用户。我们先看看不同的文件权限的作用。

针对目录文件:

r:可以对此目录执行ls以列出该目录下的所有文件

w:可以在该目录下创建文件

x:可以使用cd切换此目录,也可以使用ls -l该内部文件的详细信息

针对文本文件:

r:可读,可以使用cat等命令查看

w:可写,可以编辑或删除此文件

x:可执行,可以在命令提示符下当做命令提交给内核运行

通过ls -l命令我们可以看到,三个权限的占位是固定的,我们可以尝试用二进制来表示文件的权限,如果文件的所有者拥有读权限,我们就将第二位置为1,反之则为0,按照每三位一组,我们不难看出可以直接用8进制数来表示一类用户的访问权限。例如:rwx:8    r-x:5   rwxrwxrwx:777

当我们创建文件或者目录时,我们可以看到文件的权限都是固定的

wuhui@ABC:/tmp$ mkdir dir
drwxrwxr-x 2 wuhui wuhui 4096 Mar 15 21:53 dir
total 4
wuhui@ABC:/tmp$ ls -l
wuhui@ABC:/tmp$ 
wuhui@ABC:/tmp$ touch file
wuhui@ABC:/tmp$ ls -l
total 4
drwxrwxr-x 2 wuhui wuhui 4096 Mar 15 21:53 dir
-rw-rw-r-- 1 wuhui wuhui    0 Mar 15 21:54 file

 
  

我们可以看到文件的默认权限是rw-rw-r--:664   而目录的默认权限是:rwxrwxr-x:775 这是由于掩码造成的,我们可以通过umask 命令查看和修改当前环境中的umask

wuhui@ABC:/tmp$ umask
0002
 
  
 
  

对于文件而言:文件权限 + umask = 666; 对于目录而言:目录权限 + umask = 777;默认情况下创建的文本文件不具有执行权限,如果当我们修改了umask后创的文本文件拥有了执行权限,系统在创建文件时自动在文件权限上加一。

下面说说如何修改文件权限:

chmod: 修改文件权限

-R, --recursive:递归修改目录及其目录内包含的所有文件的权限(change files and directories recursively)

--reference=RFILE:指定参照文件,将文件的权限修改为和所参照的文件的权限一样(use RFILE's mode instead of MODE values)

还可以直接通过三位8进制数来修改文件的权限,如:chmod 777 file    chmod 755 file

chmod命令也可以修改某些用户的某些权限;u代表文件的所有者、g代表同组用户、o代表其他用户,

如:chmod u+x file:给文件所有者添加执行权限   

chmod uo+wr:给文件的所有者和其他用户添加读写权限

chmod u-w,g+w,o= file: 给删除文件所有者的w权限,同组用户添加w权限,删除其他用户的wrx权限


(二):用户管理

linux系统的用户主要分为两种:系统管理员和普通用户,而普通用户又分为系统用户和一般用户,当然系统管理员拥有系统的最高权限。其中每个用户都有一个唯一的UID,管理员的UID为0,除此之外系统用户的UID是从1到499,一般用户的UID是从500到65535。除了用户之外还有一个用户组的概念,而用户组又分为:基本组(默认组、私有组)和附加组(额外组两种),每个组也有一个唯一的GID。

    linux系统是根据/etc/passwd文件来保存当前系统中的用户与其对应的组的。我们先看看该文件的格式(ps:可以通过  man 5 passwd 命令来查看该文件的格式)

该文件的每一行通过:分为七个字段,依次为:

用户的登录名(login name)

可选加密密码(optional encrypted password),由于安全性考虑,用户的密码另外保存在/etc/shadow文件之中

用户ID(numerical user ID)

组ID(numerical group ID)

注释信息(user name or comment field)

用户家目录(user home directory)

默认shell(optional user command interpreter)

关于用户组的信息也可通过查看/etc/group文件获取,其格式类似于passwd文件。

下面讲讲如何管理用户及用户组:

useradd:创建一个新用户(create a new user or update default new user information)

该命令的默认配置文件保存在/etc/login.defs文件

-u, --uid UID:指定UID

-g, --gid GROUP:指定基本组,如果不指定基本组,则默认创建一个与用户名同名的组

-G, --groups:指定附加组,可以指定多个,用逗号隔开

-c, --comment COMMENT:添加注释信息(Any text string. It is generally a short description of the login, and is currently used as the field for the user's full name.)

-d, --home HOME_DIR:指定家目录

-s, --shell SHELL:指定默认shell

-m, --create-home:强制创建家目录

-M:不创建用户家目录

-r:添加一个系统用户

userdel: 删除一个用户(delete a user account and related files)

默认情况不删除用户的家目录

-r:删除用户的同时也删除家目录

id:查看用户的信息(print real and effective user and group IDs)

finger: 查看用户账号信息(user information lookup program)

usermod:修改用户账号信息(modify a user account)

-u, --uid UID:修改UID

-g, --gid GROUP:修改基本组

-G, --groups GROUP1[,GROUP2,...[,GROUPN]]]:修改附加组,如果该用户已有附加组,则会覆盖原有的附加组

-Ga:在原有的附加组上添加新的附加组

-c, --comment COMMENT:修改注释信息(The new value of the user's password file comment field. It is normally modified using the chfn(1) utility.)

-d, --home HOME_DIR: 修改家目录,修改后该用户不能访问原有的家目录

-dm:修改家目录后将此前家目录的文件移动到新的家目录中

-s, --shell SHELL:修改shell (The name of the user's new login shell. Setting this field to blank causes the system to select the default login shell.)

-L, --lock: 锁定账号

 -U, --unlock:解锁账号

chsh:修改用户默认shell

chfn:修改用户的注释信息,finger查看的信息

passwd:修改密码,普通用户修改自己的密码,管理员可以修改其他用户的密码(change user password)

-l, --lock:锁定账号

-u, --unlock:解锁账号

-d, --delete:删除用户密码(Delete a user's password (make it empty). This is a quick way to disable a password for an account. It will set the named account passwordless.)

groupadd:创建一个用户组,使用方法类似于useradd(create a new group)

groupmod:修改组信息,用法类似于usermod (modify a group definition on the system)

groupdel:删除组,使用方法类似于userdel (delete a user account and related files)

gpasswd:给组加密码 (administer /etc/group and /etc/gshadow)

newgrp:临时切换用户的基本组,此时会需要组密码(附加组中没有要切换到的组)否则也不需要密码

exit:退出临时登录到的组




你可能感兴趣的:(Linux)