ubuntu用户管理与权限操作实例

ubuntu用户管理与权限操作实例

昨天在转载此文时提到都要把文件及目录权限的操作也会独立成文来给大家介绍,今天特地学习了用户管理和权限操作的例程,现总结如下。这些命令基本都是我在自己电脑上运行过后能够实现此功能,我才把他们加进来,希望对大家有所帮助,也希望和大家多交流^_^

一个实例

例子:假设有两个用户bill和jane,他们都有音乐CD集,并要创建一个共享目录,在该目录下他们各自存储自己的音乐文件。此时用户bill通过sudo获得了超级用户权限。

  • 首先,创建一个以bill和jane为成员的用户组。

    sudo addgroup music
    sudo useradd -g music jane
    sudo useradd -g music bill
    
  • 然后,bill创建了存储音乐文件的目录。

    sudo mkdir /usr/local/share/music
    

    因为bill正在操作他主目录之外的文件,所以他需要超级用户权限,新创建的目录如下:

    ls -ld /usr/local/share/music
    drwxr-xr-x 2 root root 4096 Jun 22 12:10 /usr/local/share/music
    
  • 这个主目录为root所有,且权限值为755,要使该目录共享,bill需要更改该目录的所属群组,而且该群组要拥有写入权限。

    sudo chown :music /usr/local/share/music
    sudo chmod 775 /usr/local/share/music
    ls -ld /usr/local/share/music
    drwxrwxr-x 2 root music 4096 Jun 22 12:10 /usr/local/share/music
    

    所以目前music群组就拥有了对music目录的读写权限,music的成员bill和jane也具有相同的权限,其他用户可以查看该目录,而不能修改该目录。

  • 修改默认掩码:仍然有一个问题,在当前权限下,每个用户创建的文件和目录拥有bill和jane的常规权限;

    touch 12;ls -l
    -rw-r--r-- 1 bill music 0 Jun 22 12:20 12
    

    由于系统中默认掩码是0022,导致该用户组的其他成员不能写入该文件,所以需要把bill和jane的默认掩码值修改为0002。

    drwxrwxr-x 2 bill music 4096 Jun 22 12:25 bill
    drwxrwxr-x 2 jane music 4096 Jun 22 12:24 jane
    

    此时创建的文件和目录都具有正确的权限,允许用户组内成员在music目录下创建文件和目录。

linux文件/目录模式(权限)与用户管理

传统的UNIX操作系统与传统的MS-DOS操作系统的不同之处在于它不仅是多重任务处理系统,而且是多用户系统。意味着同一时间内可以有多个用户使用同一台计算机。

linux文件/目录模式管理

  • chomod文件模式(权限):只有超级用户和文件所有者才可以更改权限。chmod支持八进制和字符表示法两种方法来改变文件模式。

    rwx(0|1)(0|1)(0|1)读 写 执行

    chmod支持一种符号表示法来指定文件模式,该符号表示法分为三部分:更改会影响谁、要执行哪个操作、要设置哪种权限。可以通过u(user,文件目录所有者)、g(group文件所用户组)、o(others,其他用户)、a(all所有)的组合来制定要影响的对象,如果没有指定,则默认使用all。操作符+表示添加一种权限,-表示删除一种权限,=表示只有指定权限可用,其他权限都被删除。
    指定多种权限时,需用逗号分隔:u+x,go=rx。符号表示法的优点在于允许设置单个属性,而不影响其他的任何属性。

  • umask——设置默认权限:umask命令控制着创建文件时指定给文件的默认权限,它用八进制表示法表示从该文件模式属性中删除一个位掩码。总共为4位(gid/uid,属主,组权,其它用户的权限),不过通常用到的是后3个,对于新创建的目录,其默认模式为~umask&(0777),对于新创建的文件则是~umask&(0666)。例如umask=0002,则创建目录的默认模式为0775,创建文件默认模式为0664。掩码的二进制数值中每个出现1的位置,其对应属性就被取消。
    root 的 umask 为 0022,而一般使用者则为 0002 ,因为可写的权限蛮严重的,因此预设都会拿掉这个权限!此外,因为 root 比较重要!所以为了安全的需求,其同群组的写入属性就被拿掉了!这东西对于安全性也有一定程度的贡献呦!

linux用户管理

赋予普通身份特殊权限

su—以其他用户和组ID的身份来运行shell:su [-[l]] [user],-l显示登陆界面,可缩写为-。也可以使用su命令执行单个命令,而不需要开启一个新的交互式命令界面:su –c ‘command’,注意命令需要用单引号括起来。(在ubuntu 14.04中要使用该功能,就需要首先在root权限下设置root密码:passwd root,然后才能使用su命令)。
sudo—以另一个用户的身份执行命令:和su功能类似,但是sudo命令并不需要输入超级用户密码。使用sudo命令,用户只需要输入自己的密码来进行认证。并且仅能执行预设的权限。
sudo工具由文件/etc/sudoers进行配置,该文件包含所有可以访问sudo工具的用户列表并定义了他们的特权。

liming ALL=(ALL) ALL
ADMINS ALL=(ALL) NOPASSWD: ALL  表示允许ADMINS不用口令执行一切操作

管理员需要允许gem用户在主机sun上执行reboot和shutdown命令,在/etc/sudoers中加入:

gem sun=/usr/sbin/reboot,/usr/sbin/shutdown
sudo –l会显示当前用户在sudo模式下可以执行的权限。

chown—更改文件所有者和所用户组,这个命令需要超级用户权限:

chown [ower][:[group]] file…

该命令更改的是文件所有者还是文件所用户组,取决于该命令的第一个参数。

chown bob file  把文件所有者从当前所有者更改为用户bob
chown bob:users file 把文件所有者更改为bob,所用户组更改为users
chown :admins file  把文件所用户组改为admins
chown bob: file  把文件所有者更改为用户bob,所用户组改为用户bob登录时的所属的组

添加用户的方法

adduser [--home DIR] [--shell SHELL] [--no-create-home] [--uid ID][--firstuid ID] [--lastuid ID] [--gecos GECOS] [--ingroup GROUP | --gid ID][--disabled-password] [--disabled-login] [--encrypt-home] USER添加普通用户(sudo adduser mountzf)

注意这里有很多选项,可直接将用户加入用户组

adduser --system [--home DIR] [--shell SHELL] [--no-create-home] [--uid ID][--gecos GECOS] [--group | --ingroup GROUP | --gid ID] [--disabled-password] [--disabled-login] USER添加系统用户

useradd [options] LOGIN,有很多选项,可实现密码、根目录、用户组等

添加用户组的方法

adduser --group [--gid ID] GROUP(sudo adduser --group media)
addgroup [--gid ID] GROUP (sudo addgroup document)
addgroup --system [--gid ID] GROUP加入—system选项表示添加系统用户组
groupadd [options] GROUP(sudo groupadd music)
groupmod修改用户组属性

添加用户至用户组

adduser USER GROUP(sudo adduser mountzf music)添加已存在的用户至已存在的用户组
usermod –G/-g GROUP USER(usermod命令用来改变用户账号状态)

如果一个用户同时属于多个用户组,那么用户可以在用户组之间切换,以便具有其他用户组的权限。用户可以在登录后,使用命令newgrp切换到其他用户组,这个命令的参数就是目的用户组。例如:newgrp root

删除用户

deluser USER
  --remove-home             remove the users home directory and mail spool
  --remove-all-files        remove all files owned by user
  --backup                  backup files before removing.
  --backup-to          target directory for the backups. Default is the current directory.
  --system                  only remove if system user

userdel [options] LOGIN
  -f, --force                   force removal of files, even if not owned by user
  -h, --help                    display this help message and exit
  -r, --remove                  remove home directory and mail spool
  -R, --root CHROOT_DIR         directory to chroot into
  -Z, --selinux-user            remove any SELinux user mapping for the user
kill -9 [pid]删除进程号为[pid]的进程。

删除用户组

delgroup GROUP
deluser --group GROUP
  --system                  only remove if system group
  --only-if-empty           only remove if no members left
groupdel [options] GROUP

从用户组中删除用户

deluser USER GROUP(sudo deluser mountzf music)但是不能从主用户组中移除

查看用户组

cat /etc/group   music:x:1001:mountzf,jane同时可以显示该用户组中的用户成员(不包括以该组为主组的成员)
groups 查看当前用户所属的用户组,当前用户组排在最前面
groups user 查看用户user所属的用户组

查看用户

id/whoami查看当前用户
w/who查看当前登录的用户
cat /etc/passwd查看所有用户列表

增加用户账号就是在/etc/passwd文件中为新用户增加一条记录,同时更新其他系统文件如/etc/shadow, /etc/group等。

用户口令管理

passwd:超级用户可以为自己和普通用户指定口令,而普通用户只能修改自己口令。
passwd修改自己的口令
passwd user超级用户修改user的口令
  -l 锁定口令,即禁用账号。
  -u 口令解锁。
  -d 使账号无口令。
  -f 强迫用户下次登录时修改口令。

与用户管理有关的文件

完成用户管理的工作有多种方法,但是每一种方法实际上都是对有关的系统文件进行修改,这些文件包括/etc/passwd, /etc/shadow, /etc/group等。

/etc/passwd

/etc/passwd文件是用户管理工作涉及的最重要的一个文件,/etc/passwd中一行记录对应着一个用户,其格式和具体含义如下:

mountzf:x:1000:1000:mountzf,,,:/home/mountzf:/bin/bash
用户名:口令:用户标识号:组标识号:注释性描述:主目录:登录Shell

系统中有一类用户称为伪用户(psuedo users),这些用户在/etc/passwd文件中也占有一条记录,但是不能登录,因为它们的登录Shell为空。它们的存在主要是方便系统管理,满足相应的系统进程对文件属主的要求。

/etc/shadow

/etc/shadow中的记录行与/etc/passwd中的一一对应,它由pwconv命令根据/etc/passwd中的数据自动产生。

/etc/group

用户组的所有信息都存放在/etc/group文件中。

以上就是我这两天在ubuntu系统中学习用户管理和文件/目录权限操作所涉及的内容。

祝枫
2016年6月22日于深圳

你可能感兴趣的:(Operation,System,ubuntu,实例,用户管理,文件权限)