用户管理:

useradd, userdel, usermod, passwd, chsh, chfn, finger, id, chage





组管理:

groupadd, groupdel, groupmod, gpasswd



权限管理:

chown, chgrp, chmod, umask



/etc/passwd:

用户名:密码:UID:GID:注释:家目录:默认SHELL





/etc/group:

组名:密码:GID:以此组为其附加组的用户列表





/etc/shadow:

用户名:密码:最近一次修改密码的时间:最短使用期限:最长使用期限:警告时间:非活动时间:过期时间:





用户管理:

useradd, userdel, usermod, passwd, chsh, chfn, finger, id, chage









useradd  [options]  USERNAME 

-u UID

-g GID(基本组)

-G GID,...  (附加组)

-c "COMMENT"

-d /path/to/directory

-s SHELL

-m -k

-M

-r: 添加系统用户



/etc/login.defs



环境变量:

PATH

HISTSIZE

SHELL





/etc/shells:指定了当前系统可用的安全shell







userdel:

userdel [option] USERNAME

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





id:查看用户的帐号属性信息

-u

-g

-G

-n





finger: 查看用户帐号信息

finger USERNAME





修改用户帐号属性:

usermod

-u UID 

-g GID

-a -G GID:不使用-a选项,会覆盖此前的附加组;

-c

-d -m:

-s

-l

-L:锁定帐号

-U:解锁帐号



chsh: 修改用户的默认shell





chfn:修改注释信息





密码管理:

passwd [USERNAME]

--stdin

-l

-u

-d: 删除用户密码





pwck:检查用户帐号完整性









组管理:

创建组:groupadd

groupadd 

-g GID

-r:添加为系统组



groupmod

-g GID

-n GRPNAME





groupdel





gpasswd:为组设定密码





newgrp GRPNAME <--> exit

文件的访问权限说明:

相关的ID:实际用户ID实际组id,有效用户id,有效组id,附加组id,保存的设置用户id,保存的设置组id

    实际用户id和实际组id:用于表示当前LInux的登录用户,在会话中并不会改变,只有在使用sudo等命令时会暂时发生改变。

    有效用户id,有效组id,附加组id:用于确定每个文件的访问组权限,保存在stat结构体中的st_mode分量中。

    S_IRUSR:用户读

    S_IWUSR:用户写

    S_IXUSR:用户执行

    S_IRGRP:组读

    S_IWGRP:组写

    S_IXGRP:组执行

    S_IROTH:其他用户读

    S_IWOTH:其他用户写

    S_IXOTH:其他用户执行

    保存的设置组id和保存的设置用户id:保存了该用户的有效组id和有效用户id的一个副本

测试文件访问权限函数:

    #include <unistd.h>

    int access(const char *pathname, int mode);

    

    umask函数:

    mode_t umask(mode_t cmode);



    chmod函数和fchmod函数:

    umask函数只能在创建文件的时候给定文件的权限,而chmod和fchmod函数可以修改已经存在的文件的权限。chmod可以在任何时候修改指定文件的权限,而fchmod需要在文件被打开后使用文件描述符来修改。

    #include <sys/types.h>

    #include <sys/stat.h>

    int chmod(const char *filename, mode_t mode);

    int fchmod(int fd, mode_t mode);

    修改文件的用户ID和用户组ID:chown,fchown,lchown



    rename函数:

    #include <stdio.h>

    int rename(const char *oldname, const char *newname);

文件的其他高级操作函数:

    1.    #include <unistd.h>

          int dup(int fd);

          int dup2(int fd, int fd2);

    2.    #include <sys/types.h>

        #include <unistd.h>

        #include <fcntl.h>

        int fcntl(int fd, int cmd, int arg);

        第二个参数:

        F_DUPD:返回大于或等于arg的最低序号的文件描述符。该功能可以由dup函数实现。新的文件描述符与旧的可以互换使用。调用成功时,返回值为新的文件描述符。        

        F_GETFD:获得close-on-exec标志。如果最后一位是0,则该标志没有设置。返回值为0或1.

        F_SETFD:设置close-on-exec标志为指定的值arg(只有最后一位有效,为0或1)

        F_GETFL:获得文件的打开方式。返回所有的标志位,标志位的含义与open函数中相同。

        F_SETFL:设置文件打开的方式的标志。设置文件打开方式为arg指定的打开方式。仅能设置O_APPEND和O_NONBLOCK或O_NDELAY,有的系统还可以设置O_SYNC,该标志被所有的文件描述符所共享。

        F_GETLK:获得本进程得到锁的第一个锁的flock结构。

        F_SETLK:获得离散的文件锁,不等待。

        F_SETLKW:获得离散的文件锁,必要时等待。

        F_GETOWN:返回当前接受SIGIO或SIGURG信号(signal)的进程ID或进程组。进程ID以负值返回。

        F_SETOWN:设置进程或进程组接受SIGIO和SIGURG信号,进程组ID以负值返回。进程ID以正值指定。

    文件锁:在文已经共享的情况下如何操作,也就是当多个进程同时操作同一个文件时,我们怎么保证文件数据的正确性。linux通常采用的方法是文件上锁,来避免共享资源的产生竞争状态。



               文件锁包括建议性锁和强制性的锁。建议性的,顾名思义,相对温柔一些,在对文件进行锁操作时,会检测是否已经有锁存在,并且尊重已有的锁。在一般的情况下,内核和系统都不使用建议锁。强制性的锁是由内核执行的锁,当一个文件被上锁进行写入操作的时候,内核将阻止其他进程对其进行读写操作。采取强制性的锁对性能的影响很大,每次进行读写操作都必须检查是否有锁存在。

    fcntl函数返回文件状态标志:

        O_RDONLY:只读

        O_WRONLY:只写

        O_RDWR:读写

        O_APPEND:每次写时追加

        O_NONBLOCK:非阻塞模式

        O_SYNC:等待数据和属性写完成

        O_DSYNC:等待数据写完成

        O_RSYNC:同步读写

        O_FSYNC:等待写完成

        O_ASYNC:异步I/O操作

    truncate和ftruncate函数:

    #include <unistd.h>

    int truncate(char *filepath, size_t len);

    int ftruncate(int fd, size_t len);



    remove函数:

    #include <stdio.h>

    int remove(const char *pathname);



目录文件操作:

    mkdir和rmdir

    #include <sys/types.h>

    #include <sys/stat.h>

    #include <unistd.h>

    int mkdir(const char *pathname, mode_t mode);//创建一个目录

    int rmdir(const char *pathname);//删除一个目录

    int chdir(const char *pathname);//改变工作路径

    int fchdir(int fd);//改变文件工作路径

    char *getcwd(char *buf, size_t size);//获取文件的完整路径

    #include <dirent.h>

    DIR *opendir(const char *pathname);//打开目录,返回的是一个DIR指针,是一个内部结构,用来保存被度的目录的有关信息。

    int close(DIR *dp);//关闭目录,参数是一个内部结构指针

    struct dirent *readdir(DIR *dp);//读目录,返回一个目录dirent结构体指针。

    struct dirent

    {

    ino_t d_ino;//i-node number

    char d_name[NAME_MAX+1];//null-terminated filename

    };

10-11Linux用户管理规则及用户管理函数的更多相关文章

  1. 用户管理 之 Linux 用户(User)查询篇

    用户(User)和用户组(Group)的配置文件,是系统管理员最应该了解和掌握的系统基础文件之一,从另一方面来说,了解这些文件也是系统安全管理的重要组成部份:做为一个合格的系统管理员应该对用户和用户组 ...

  2. 用户管理 之 Linux 用户(user)和用户组(group)管理概述

    一.理解Linux的单用户多任务,多用户多任务概念:Linux 是一个多用户.多任务的操作系统:我们应该了解单用户多任务和多用户多任务的概念: 1.Linux 的单用户多任务:单用户多任务:比如我们以 ...

  3. (转)用户管理 之 Linux 用户(user)和用户组(group)管理概述

    用户管理 之 Linux 用户(user)和用户组(group)管理概述  原文:http://www.cnblogs.com/licheng/p/6103992.html 一.理解Linux的单用户 ...

  4. linux用户的基本操作2 用户密码管理

    目录 linux系统的基本用户操作2 用户的扩展知识 用户密码管理 linux系统的基本用户操作2 3)使用userdel删除账户 语法 : userdel [-r] username -r 同时删除 ...

  5. 『学了就忘』Linux用户管理 — 50、用户管理相关文件详细说明

    目录 1.用户信息文件 2./etc/shadow影子文件 3./etc/group 组信息文件 4.组密码文件 5.用户的家目录 6.用户邮箱目录 7.用户模板目录 总结: 提示:严格的用户权限划分 ...

  6. Linux下查看/管理当前登录用户及用户操作历史记录

    转载自: http://www.cnblogs.com/gaojun/archive/2013/10/24/3385885.html 一.查看及管理当前登录用户 1.使用w命令查看登录用户正在使用的进 ...

  7. linux中用户、组的管理(密码管理、权限管理及其修改用户、组)(转)

    process(进程) 1 计算资源 权限 用户(获取资源或服务的凭证或标识) 用户,容器,关联权限:用户组(标识符),方便地指派权限 2 用户.组.权限   安全上下文(secure context ...

  8. 用户管理 之 Linux 用户管理工具介绍

    Linux是一个多用户的操作系统,她有完美的用户管理工具,这些工具包括用户的查询.添加.修改,以及用户之间相互切换的工具等:通过这些工具,我们能安全.轻松的完成用户管理: 在这里我们要引入用户控制工具 ...

  9. Oracle用户、权限、角色管理(转)

    http://blog.csdn.net/junmail/article/details/4381287 Oracle 权限设置一.权限分类:系统权限:系统规定用户使用数据库的权限.(系统权限是对用户 ...

随机推荐

  1. canvas高级动画示例

    canvas高级动画示例 演示地址 https://qzruncode.github.io/example/index.html <!DOCTYPE html> <html lang ...

  2. Ubuntu上装KVM:安装、初次使用

    KVM 是 Linux 内核自带的虚拟机系统, 使用它,你的机器就可以变成几台机了 试用过程如下: 环境: Ubuntu 14.04 64bit 1,  KVM需要CPU硬件支持虚拟化,所以首先要确认 ...

  3. 使用正则表达式读取简单的xml文件

    '<?xml version='1.0' encoding='GB2312'?>'<ntsc>'   <time>'       <year>2010& ...

  4. Linux Tomcat 7.0 管理员登录时"401 Unauthorized" 问题解决方法

    http://blog.csdn.net/u010359532/article/details/36055291 tomcat 7.0没有默认值,需要在conf的tomcat-users.xml中设置 ...

  5. Guide to installing 3rd party JARs

    Although rarely, but sometimes you will have 3rd party JARs that you need to put in your local repos ...

  6. 迷你MVVM框架 avalonjs 学习教程9、类名操作

    ms-class是avalon用得最多的几个绑定之一,也正因为如此其功能一直在扩充中.根据时期的不同,分为旧风格与新风格两种. 旧风格是指ms-class-xxx=”expr”,*ms-class-a ...

  7. Python与Go快速排序

    #!/usr/bin/env python # -*- coding: utf-8 -*- # 快速排序 # 时间复杂度 O(n lgn)-- O(n^2) def quick_sort(array) ...

  8. s 销售视图数据

    INSERT,需将公司ID匹对到以下EXCEL表 INSERT,需将公司ID匹对到以下EXCEL表 [Public] ConnectString=host="siebel://10.10.0 ...

  9. react-native 生命周期

    一.前言 问: 什么是组件的生命周期? 组件的生命周期中都包含哪些方法,各有什么作用? 生命周期的方法都在什么时候调用? 生命周期: 顾名思义,一个主体从出生到死亡的整个过程 学习组件(React的基 ...

  10. 基于python的Appium自动化测试的坑

    真的感谢@虫师 这位来自互联网的老师,让我这个原本对代码胆怯且迷惑的人开始学习自动化测试. 一开始搜索自动化测试的时候,虫师的博客园教程都是在百度的前几位的,我就跟着虫师博客园里面的教程学习.后来学s ...