diff --git a/ansible.cfg b/ansible.cfg index 89eefef..7152244 100644 --- a/ansible.cfg +++ b/ansible.cfg @@ -24,7 +24,7 @@ ansible_managed = ############################################ # #forks = 20 inventory = ./hosts remote_user = root -ask_pass=True +#ask_pass=True roles_path = ./roles vault_password_file = akb_the_vault.sh #retry_files_enabled = False diff --git a/group_vars/all/main.yml b/group_vars/all/main.yml index a6f2ddb..44cfe30 100644 --- a/group_vars/all/main.yml +++ b/group_vars/all/main.yml @@ -1,5 +1,531 @@ + --- + +# --- +# vars used by roles/common/tasks/apt.yml +# --- + +apt_manage_sources_list: true + +apt_src_enable: true +apt_backports_enable: true + +apt_debian_mirror: http://ftp.de.debian.org/debian/ +apt_debian_contrib_nonfree_enable: true + +# Ubuntu mirror +apt_ubuntu_mirror: http://archive.ubuntu.com/ubuntu + +apt_update_cache_valid_time: 3600 + +apt_upgrade: true +apt_update: true + +apt_clean: true +apt_autoremove: true + +apt_dpkg_configure: true +apt_upgrade_type: dist + +apt_upgrade_dpkg_options: + - force-confdef + - force-confold + +apt_initial_install_stretch: + - apt-transport-https + - dbus + - openssh-server + - rssh + - vim + - vim-common + - vim-doc + - mc + - screen + - tmux + - bc + - figlet + - rcconf + - sudo + - rsync + - dselect + - iputils-ping + - apt-utils + - aptitude + - zip + - unzip + - bzip2 + - arj + - locate + - curl + - gawk + - mawk + - lynx + - links + - w3m + - exuberant-ctags + - mime-support + - file + - coreutils + - moreutils + - less + - realpath + - sipcalc + - psmisc + - dnsutils + - rblcheck + - whois + - gettext + - gettext-base + - gettext-doc + - debian-keyring + - patch + - patchutils + - recode + - recode-doc + - librecode0 + - librecode-dev + - sharutils + - perl + - perl-modules-5.24 + - perl-doc + - libperl-dev + - libterm-readline-gnu-perl + - libterm-readline-perl-perl + - libterm-readkey-perl + - libmail-imapclient-perl + - libtime-duration-perl + - libtimedate-perl + - libwww-perl + - libpcre3 + - libreadline5 + - re2c + - util-linux + - parted + - lshw + - gdisk + - smartmontools + - tcpdump + - telnet + - unhide + - lsof + - hdparm + - groff + - iproute2 + - bridge-utils + - vlan + - ethtool + - wipe + - iperf + - mtr + - iptraf + - wget + - logrotate + - rsyslog + - haveged + - rdate + - ntpdate + - wipe + - man-db + - groff + - iptables + - shellcheck + - ssl-cert + - ssl-cert-check + - git + - ftp + - htop + - net-tools + - lsb-release + - attr + - acl + - quota + - quotatool + - needrestart + - socat + +apt_initial_install_buster: + - apt-transport-https + - dbus + - openssh-server + - rush + - vim + - vim-common + - vim-doc + - mc + - screen + - tmux + - bc + - figlet + - rcconf + - sudo + - rsync + - dselect + - iputils-ping + - apt-utils + - aptitude + - zip + - unzip + - bzip2 + - arj + - locate + - curl + - gawk + - mawk + - lynx + - links + - w3m + - ctags + - mime-support + - file + - coreutils + - moreutils + - less + - sipcalc + - psmisc + - dnsutils + - rblcheck + - whois + - gettext + - gettext-base + - gettext-doc + - debian-keyring + - patch + - patchutils + - recode + - recode-doc + - librecode0 + - librecode-dev + - sharutils + - perl + - perl-modules-5.28 + - perl-doc + - libperl-dev + - libterm-readline-gnu-perl + - libterm-readline-perl-perl + - libterm-readkey-perl + - libmail-imapclient-perl + - libtime-duration-perl + - libtimedate-perl + - libwww-perl + - libpcre3 + - libio-compress-perl + - libreadline5 + - re2c + - util-linux + - parted + - lshw + - gdisk + - smartmontools + - tcpdump + - telnet + - unhide + - lsof + - hdparm + - groff + - iproute2 + - bridge-utils + - vlan + - ethtool + - wipe + - iperf + - mtr + - iptraf + - wget + - logrotate + - rsyslog + - haveged + - rdate + - ntpdate + - wipe + - man + - groff + - iptables + - shellcheck + - ssl-cert + - ssl-cert-check + - git + - ftp + - htop + - net-tools + - lsb-release + - attr + - acl + - quota + - quotatool + - needrestart + - socat + +apt_initial_install_xenial: + - apt-transport-https + - dbus + - openssh-server + - rush + - vim + - vim-common + - vim-doc + - mc + - screen + - tmux + - bc + - figlet + - sudo + - rsync + - dselect + - iputils-ping + - apt-utils + - aptitude + - zip + - unzip + - bzip2 + - arj + - locate + - curl + - gawk + - mawk + - lynx + - links + - w3m + - ctags + - mime-support + - file + - coreutils + - moreutils + - less + - sipcalc + - psmisc + - dnsutils + - rblcheck + - whois + - gettext + - gettext-base + - gettext-doc + - debian-keyring + - patch + - patchutils + - recode + - recode-doc + - librecode0 + - librecode-dev + - sharutils + - perl + - perl-modules-5.22 + - perl-doc + - libperl-dev + - libterm-readline-gnu-perl + - libterm-readline-perl-perl + - libterm-readkey-perl + - libmail-imapclient-perl + - libtime-duration-perl + - libtimedate-perl + - libwww-perl + - libpcre3 + - libio-compress-perl + - libreadline5 + - re2c + - util-linux + - parted + - lshw + - gdisk + - smartmontools + - tcpdump + - telnet + - unhide + - lsof + - hdparm + - groff + - iproute2 + - bridge-utils + - vlan + - ethtool + - wipe + - iperf + - mtr + - iptraf + - wget + - logrotate + - rsyslog + - haveged + - rdate + - ntpdate + - wipe + - man + - groff + - iptables + - shellcheck + - ssl-cert + - ssl-cert-check + - git + - ftp + - htop + - net-tools + - lsb-release + - attr + - acl + - quota + - quotatool + - needrestart + - ifupdown + - socat + +apt_initial_install_bionic: + - apt-transport-https + - dbus + - openssh-server + - rush + - vim + - vim-common + - vim-doc + - mc + - screen + - tmux + - bc + - figlet + - sudo + - rsync + - dselect + - iputils-ping + - apt-utils + - aptitude + - zip + - unzip + - bzip2 + - arj + - locate + - curl + - gawk + - mawk + - lynx + - links + - w3m + - ctags + - mime-support + - file + - coreutils + - moreutils + - less + - sipcalc + - psmisc + - dnsutils + - rblcheck + - whois + - gettext + - gettext-base + - gettext-doc + - debian-keyring + - patch + - patchutils + - recode + - recode-doc + - librecode0 + - librecode-dev + - sharutils + - perl + - perl-modules-5.26 + - perl-doc + - libperl-dev + - libterm-readline-gnu-perl + - libterm-readline-perl-perl + - libterm-readkey-perl + - libmail-imapclient-perl + - libtime-duration-perl + - libtimedate-perl + - libwww-perl + - libpcre3 + - libio-compress-perl + - libreadline5 + - re2c + - util-linux + - parted + - lshw + - gdisk + - smartmontools + - tcpdump + - telnet + - unhide + - lsof + - hdparm + - groff + - iproute2 + - bridge-utils + - vlan + - ethtool + - wipe + - iperf + - mtr + - iptraf + - wget + - logrotate + - rsyslog + - haveged + - rdate + - ntpdate + - wipe + - man + - groff + - iptables + - shellcheck + - ssl-cert + - ssl-cert-check + - git + - ftp + - htop + - net-tools + - lsb-release + - attr + - acl + - quota + - quotatool + - needrestart + - ifupdown + - socat + +microcode_package: + - intel-microcode + - amd64-microcode + +apt_install_state: latest + +apt_remove: + - apt-transport-tor + - tor + - tor-geoipdb + - torsocks + - netplan.io + +apt_remove_purge: false + + +# --- +# Samba +# --- + +apt_install_server_samba: + - samba + +apt_install_client_samba: + - samba-client + - samba-common + +# --- +# CUPS +# --- + +apt_install_server_cups_buster: + - cups + +apt_install_client_cups: + - cups + - cups-client + - cups-common + - cups-ppdc + - cups-bsd + - cups-filters-ippusbxd + - lsb-printing + - hpijs-ppds + - printer-driver-hpcups + + # --- # NFS # --- @@ -12,7 +538,7 @@ nfs_server: 192.168.82.10 nfs_exports: - src: 192.168.82.10:/data/home path: /data/home - mount_opts: users,rsize=8192,wsize=8192,hard,intr + mount_opts: user,exec,rsize=8192,wsize=8192,hard,intr export_opt: rw,fsid=0,root_squash,sync,subtree_check export_networks: - 192.168.82.0/24 diff --git a/hosts b/hosts index 2a00f5e..e73d9ab 100644 --- a/hosts +++ b/hosts @@ -7,7 +7,8 @@ ab5.akb.netz ab7.akb.netz ab8.akb.netz ab9.akb.netz -file-akb.akb.netz +file-akb.akb.netz ansible_user=root +192.168.82.20 ansible_user=root [client_pc] ab1.akb.netz @@ -37,13 +38,17 @@ ab8.akb.netz ab9.akb.netz [file_server] -file-akb.akb.netz +file-akb.akb.netz ansible_user=root +192.168.82.20 ansible_user=root [nfs_server] -file-akb.akb.netz +file-akb.akb.netz ansible_user=root +192.168.82.20 ansible_user=root [nis_server] -file-akb.akb.netz +file-akb.akb.netz ansible_user=root +192.168.82.20 ansible_user=root [samba_server] -file-akb.akb.netz +file-akb.akb.netz ansible_user=root +192.168.82.20 ansible_user=root diff --git a/roles/common/handlers/main.yml b/roles/common/handlers/main.yml index 6f0d681..0d53f07 100644 --- a/roles/common/handlers/main.yml +++ b/roles/common/handlers/main.yml @@ -24,3 +24,15 @@ name: rpcbind daemon_reload: yes state: restarted + +- name: Restart smbd + service: + name: smbd + daemon_reload: yes + state: restarted + +- name: Restart nmbd + service: + name: nmbd + daemon_reload: yes + state: restarted diff --git a/roles/common/tasks/apt.yml b/roles/common/tasks/apt.yml new file mode 100644 index 0000000..466edd1 --- /dev/null +++ b/roles/common/tasks/apt.yml @@ -0,0 +1,183 @@ +--- + +- name: (apt.yml) update configuration file - /etc/apt/sources.list + template: + src: "etc/apt/sources.list.{{ ansible_distribution }}.j2" + dest: /etc/apt/sources.list + owner: root + group: root + mode: 0644 + register: apt_config_updated + when: + - ansible_facts['distribution'] == "Debian" + - apt_manage_sources_list|bool + tags: + - apt-configuration + +- name: (apt.yml) apt update + apt: + update_cache: true + cache_valid_time: "{{ 0 if apt_config_updated is defined and apt_config_updated.changed else apt_update_cache_valid_time }}" + when: apt_update|bool + tags: + - apt-update + - apt-upgrade + - apt-dpkg-configure + - apt-initial-install + - apt-microcode + - apt-compiler-pkgs + - apt-webserver-pkgs + +- name: (apt.yml) dpkg --configure + command: > + dpkg --configure -a + args: + warn: false + changed_when: _dpkg_configure.stdout_lines | length + register: _dpkg_configure + when: apt_dpkg_configure|bool + tags: + - apt-dpkg-configure + - apt-initial-install + - apt-microcode + - apt-compiler-pkgs + - apt-webserver-pkgs + +- name: (apt.yml) apt upgrade + apt: + upgrade: "{{ apt_upgrade_type }}" + update_cache: true + dpkg_options: "{{ apt_upgrade_dpkg_options | join(',') }}" + when: apt_upgrade|bool + tags: + - apt-upgrade + - apt-initial-install + - apt-microcode + - apt-compiler-pkgs + - apt-webserver-pkgs + +- name: (apt.yml) Initial install debian packages (stretch) + apt: + name: "{{ apt_initial_install_stretch }}" + state: "{{ apt_install_state }}" + when: + - ansible_facts['distribution'] == "Debian" + - ansible_facts['distribution_major_version'] == "9" + tags: + - apt-initial-install + +- name: (apt.yml) Initial install debian packages (buster) + apt: + name: "{{ apt_initial_install_buster }}" + state: "{{ apt_install_state }}" + when: + - ansible_facts['distribution'] == "Debian" + - ansible_facts['distribution_major_version'] == "10" + tags: + - apt-initial-install + +- name: (apt.yml) Initial install ubuntu packages (bionic) + apt: + name: "{{ apt_initial_install_bionic }}" + state: "{{ apt_install_state }}" + when: + - ansible_facts['distribution'] == "Ubuntu" + - ansible_facts['distribution_release'] == "bionic" + tags: + - apt-initial-install + +- name: (apt.yml) Initial install ubuntu packages (xenial) + apt: + name: "{{ apt_initial_install_xenial }}" + state: "{{ apt_install_state }}" + when: + - ansible_facts['distribution'] == "Ubuntu" + - ansible_facts['distribution_release'] == "xenial" + tags: + - apt-initial-install + +- name: (apt.yml) Ensure we have CPU microcode from backports (debian stretch) + apt: + name: "{{ microcode_package }}" + state: present + default_release: "{{ ansible_distribution_release }}-backports" + when: + - ansible_facts['distribution'] == "Debian" + - ansible_facts['distribution_major_version'] == "9" + - ansible_facts['processor']|string is search("Intel") + tags: + - apt-initial-install + - apt-microcode + +- name: (apt.yml) Install CPU microcode (debian buster) + apt: + name: "{{ microcode_package }}" + state: present + default_release: "{{ ansible_distribution_release }}" + when: + - ansible_facts['distribution'] == "Debian" + - ansible_facts['distribution_major_version'] == "10" + - ansible_facts['processor']|string is search("Intel") + tags: + - apt-initial-install + - apt-microcode + +- name: (apt.yml) Install CPU microcode (ubuntu bionic) + apt: + name: "{{ microcode_package }}" + state: present + default_release: "{{ ansible_distribution_release }}" + when: + - ansible_facts['distribution'] == "Ubuntu" + - ansible_facts['distribution_release'] == "bionic" + - ansible_facts['processor']|string is search("Intel") + tags: + - apt-initial-install + - apt-microcode + +- name: (apt.yml) Install CPU microcode (ubuntu xenial) + apt: + name: "{{ microcode_package }}" + state: present + default_release: "{{ ansible_distribution_release }}" + when: + - ansible_facts['distribution'] == "Ubuntu" + - ansible_facts['distribution_release'] == "xenial" + - ansible_facts['processor']|string is search("Intel") + tags: + - apt-initial-install + - apt-microcode + +- name: (apt.yml) Remove unwanted packages + apt: + name: "{{ apt_remove }}" + state: absent + purge: "{{ apt_remove_purge }}" + tags: + - apt-remove + +- name: (apt.yml) autoremove + apt: + autoremove: true + dpkg_options: "{{ apt_upgrade_dpkg_options | join(',') }}" + when: apt_autoremove|bool + tags: + - apt-autoremove + - apt-initial-install + - apt-microcode + - apt-compiler-pkgs + - apt-webserver-pkgs + +- name: (apt.yml) clean + command: apt-get -y clean + args: + warn: false + changed_when: false + when: apt_clean|bool + tags: + - apt-clean + - apt-initial-install + - apt-microcode + - apt-compiler-pkgs + - apt-mysql-server-pkgs + - apt-webserver-pkgs diff --git a/roles/common/tasks/basic.yml b/roles/common/tasks/basic.yml new file mode 100644 index 0000000..8e0b3be --- /dev/null +++ b/roles/common/tasks/basic.yml @@ -0,0 +1,45 @@ +--- + +- name: (basic.yml) Ensure timezone is is correct + timezone: name={{ time_zone }} + tags: + - timezone + + +- name: (basic.yml) Ensure locales are present + locale_gen: + name: "{{ item }}" + state: present + with_items: "{{ locales }}" + tags: + - locales + +- name: (basic.yml) Create a symbolic link /bin/sh -> bash + file: + src: bash + dest: /bin/sh + owner: root + group: root + state: link + tags: + - symlink-sh + +- name: (basic.yml) Check file '/etc/systemd/system.conf' exists + stat: + path: /etc/systemd/system + register: etc_systemd_system_conf + when: + - set_default_limit_nofile|bool == true + +- name: (basic.yml) Change DefaultLimitNOFILE to 1048576 + lineinfile: + dest: /etc/systemd/system.conf + state: present + regexp: '^DefaultLimitNOFILE' + line: 'DefaultLimitNOFILE=1048576' + insertafter: '^#DefaultLimitNOFILE' + when: + - set_default_limit_nofile|bool == true + - etc_systemd_system_conf.stat.exists == true + tags: + - systemd-nofiles diff --git a/roles/common/tasks/cups-install.yml b/roles/common/tasks/cups-install.yml new file mode 100644 index 0000000..5e6a63f --- /dev/null +++ b/roles/common/tasks/cups-install.yml @@ -0,0 +1,32 @@ +--- + +# --- +# Cups Server +# --- + +- name: (cups-install.yml) Ensure CUPS packages server (buster) are installed. + package: + pkg: '{{ apt_install_server_cups_buster }}' + state: present + when: + - ansible_facts['distribution'] == "Debian" + - ansible_facts['distribution_major_version'] == "10" + tags: + - cups-server + +# --- +# Cups clients +# --- + +- name: (cups.yml) Ensure CUPS packages clients are installed. + package: + pkg: "{{ apt_install_client_cups }}" + state: present + when: + - ansible_distribution_version == "18.04" + - ansible_architecture == "x86_64" + tags: + - cups-client + + + diff --git a/roles/common/tasks/main.yml b/roles/common/tasks/main.yml index bfc9d71..7addb58 100644 --- a/roles/common/tasks/main.yml +++ b/roles/common/tasks/main.yml @@ -1,5 +1,44 @@ --- +# tags supported inside basic.yml +# +# timezone +# locales +# systemd-nofiles +- import_tasks: basic.yml + tags: + - basic + + +# tags supported inside apt.yml +# +# apt-update +# apt-upgrade +# apt-dpkg-configure +# apt-initial-install +# apt-microcode +# apt-remove +# apt-autoremove +# apt-clean +- import_tasks: apt.yml + tags: apt + + +# tags supported inside cups-install.yml: +# +# cups-server +# cups-client +- import_tasks: cups-install.yml + tags: + - cups + +# tags supported inside samba-install.yml: +# +# samba-server +# samba-client +- import_tasks: samba-install.yml + tags: + - samba # tags supported inside nfs.yml: # diff --git a/roles/common/tasks/nis_samba_user.yml b/roles/common/tasks/nis_samba_user.yml deleted file mode 100644 index 31fe77b..0000000 --- a/roles/common/tasks/nis_samba_user.yml +++ /dev/null @@ -1,121 +0,0 @@ ---- - -# --- -# - Remove unwanted users -# --- - -- name: (nis_samba_user.yml) Check if samba user exists for removable nis user - shell: pdbedit -w -L | awk -F":" '{ print $1 }' | grep '{{ item.name }}' - register: samba_deleted_user_present - changed_when: "samba_deleted_user_present.rc == 0" - failed_when: "samba_deleted_user_present.rc > 1" - with_items: - - "{{ nis_deleted_user }}" - loop_control: - label: '{{ item.name }}' - tags: - - samba-user - - -- name: (nis_samba_user.yml) Remove (old) users from samba - shell: "smbpasswd -s -x {{ item.name }}" - with_items: - - "{{ nis_deleted_user }}" - loop_control: - label: '{{ item.name }}' - when: samba_deleted_user_present is changed - tags: - - samba-user - - -- name: (nis_samba_user.yml) Remove (old) users from system - user: - name: '{{ item.name }}' - state: absent - with_items: - - "{{ nis_deleted_user }}" - loop_control: - label: '{{ item.name }}' - tags: - - nis-user - - system-user - -- name: (nis_samba_user.yml) Remove home directory from deleted users - file: - path: '{{ nis_base_home }}/{{ item.name }}' - state: absent - with_items: - - "{{ nis_deleted_user }}" - loop_control: - label: '{{ item.name }}' - tags: - - nis-user - - system-user - -# --- -# - default user/groups -# --- - -- name: (nis_samba_user.yml) Ensure nis groups exists - group: - name: '{{ item.name }}' - state: present - gid: '{{ item.group_id | default(omit) }}' - loop: "{{ nis_groups }}" - loop_control: - label: '{{ item.name }}' - when: item.group_id is defined - notify: Renew nis databases - tags: - - nis-user - - system-user - -#- meta: end_host - -- name: (nis_samba_user.yml) Ensure nis users exists - user: - name: '{{ item.name }}' - state: present - uid: '{{ item.user_id | default(omit) }}' - #group: '{{ item.0.name | default(omit) }}' - groups: "{{ item.groups|join(', ') }}" - home: '{{ nis_base_home }}/{{ item.name }}' - shell: '{{ item.shell|d("/bin/bash") }}' - password: "{{ item.password | password_hash('sha512') }}" - update_password: on_create - append: yes - loop: "{{ nis_user }}" - loop_control: - label: '{{ item.name }}' - notify: Renew nis databases - tags: - - nis-user - - system-user - - -- name: (nis_samba_user.yml) Check if samba user exists for nis user - shell: pdbedit -w -L | awk -F":" '{ print $1 }' | grep '{{ item.name }}' - register: samba_nis_user_present - changed_when: "samba_nis_user_present.rc > 0" - failed_when: "samba_nis_user_present.rc > 1" - with_items: - - "{{ nis_user }}" - loop_control: - label: '{{ item.name }}' - when: - - item.is_samba_user is defined and item.is_samba_user|bool - tags: - - samba-user - -- name: (nis_samba_user.yml) Add nis user to samba (with nis users password) - shell: "echo -e '{{ item.password }}\n{{ item.password }}\n' | smbpasswd -s -a {{ item.name }}" - loop: "{{ nis_user }}" - loop_control: - label: '{{ item.name }}' - when: - - item.is_samba_user is defined and item.is_samba_user|bool - - samba_nis_user_present is changed - notify: Renew nis databases - tags: - - samba-user - diff --git a/roles/common/tasks/samba-install.yml b/roles/common/tasks/samba-install.yml new file mode 100644 index 0000000..3a2f6d1 --- /dev/null +++ b/roles/common/tasks/samba-install.yml @@ -0,0 +1,68 @@ +--- + +# --- +# Samba Server +# --- + +- name: (samba-install.yml) Ensure samba packages server (buster) are installed. + package: + pkg: '{{ apt_install_server_samba }}' + state: present + when: + - "groups['samba_server']|string is search(inventory_hostname)" + tags: + - samba-server + +# --- +# /etc/samba/smb.conf +# --- + +- name: (samba-install.yml) Check if file '/etc/samba/smb.conf.ORIG exists' + stat: + path: /etc/samba/smb.conf.ORIG + register: smb_conf_exists + when: + - "groups['samba_server']|string is search(inventory_hostname)" + tags: + - samba-server + +- name: (samba-install.yml) Backup existing file /etc/samba/smb.conf + command: cp -a /etc/samba/smb.conf /etc/samba/smb.conf.ORIG + when: + - "groups['samba_server']|string is search(inventory_hostname)" + - smb_conf_exists.stat.exists == False + tags: + - samba-server + + + +- name: (samba-install.yml) /etc/samba/smb.conf + template: + dest: /etc/samba/smb.conf + src: etc/samba/smb.conf.j2 + owner: root + group: root + mode: 0644 + notify: + - Restart smbd + - Restart nmbd + tags: + - samba-server + + +# --- +# Samba clients +# --- + +- name: (samba-install.yml) Ensure samba packages clients are installed. + package: + pkg: "{{ apt_install_client_samba }}" + state: present + when: + - "groups['nis_client']|string is search(inventory_hostname)" + - ansible_distribution == "Ubuntu" + tags: + - samba-client + + + diff --git a/roles/common/tasks/samba_user.yml b/roles/common/tasks/samba_user.yml index 22eaf28..8d6db0c 100644 --- a/roles/common/tasks/samba_user.yml +++ b/roles/common/tasks/samba_user.yml @@ -35,10 +35,9 @@ - name: (samba_user.yml) Check if samba user exists for nis user shell: pdbedit -w -L | awk -F":" '{ print $1 }' | grep '{{ item.name }}' register: samba_nis_user_present - changed_when: "samba_nis_user_present.rc > 0" + changed_when: "samba_nis_user_present.rc == 1" failed_when: "samba_nis_user_present.rc > 1" - with_items: - - "{{ nis_user }}" + loop: "{{ nis_user }}" loop_control: label: '{{ item.name }}' when: @@ -47,14 +46,13 @@ - samba-user - name: (samba_user.yml) Add nis user to samba (with nis users password) - shell: "echo -e '{{ item.password }}\n{{ item.password }}\n' | smbpasswd -s -a {{ item.name }}" - loop: "{{ nis_user }}" + shell: > + (echo '{{ item.item.password }}'; echo '{{ item.item.password }}') + | smbpasswd -s -a {{ item.item.name }} + loop: "{{ samba_nis_user_present.results }}" + when: item.changed loop_control: - label: '{{ item.name }}' - when: - - item.is_samba_user is defined and item.is_samba_user|bool - - samba_nis_user_present is changed - notify: Renew nis databases + label: '{{ item.item.name }}' tags: - samba-user diff --git a/roles/common/templates/etc/apt/sources.list.Debian.j2 b/roles/common/templates/etc/apt/sources.list.Debian.j2 new file mode 100644 index 0000000..8e79f45 --- /dev/null +++ b/roles/common/templates/etc/apt/sources.list.Debian.j2 @@ -0,0 +1,28 @@ +# {{ ansible_managed }} + +deb {{ apt_debian_mirror }} {{ ansible_lsb.codename }} main +{{ '# ' if not apt_src_enable else '' }}deb-src {{ apt_debian_mirror }} {{ ansible_lsb.codename }} main + +deb http://security.debian.org/ {{ ansible_lsb.codename }}/updates main +{{ '# ' if not apt_src_enable else '' }}deb-src http://security.debian.org/ {{ ansible_lsb.codename }}/updates main + +# {{ ansible_lsb.codename }}-updates, previously known as 'volatile' +deb {{ apt_debian_mirror }} {{ ansible_lsb.codename }}-updates main +{{ '# ' if not apt_src_enable else '' }}deb-src {{ apt_debian_mirror }} {{ ansible_lsb.codename }}-updates main + +# Contrib packages contain DFSG-compliant software, +# but have dependencies not in main (possibly packaged for Debian in non-free). +# Non-free contains software that does not comply with the DFSG. +{% if apt_debian_contrib_nonfree_enable %} +deb {{ apt_debian_mirror }} {{ ansible_lsb.codename }} contrib non-free +{{ '# ' if not apt_src_enable else '' }}deb-src {{ apt_debian_mirror }} {{ ansible_lsb.codename }} contrib non-free +{% endif %} + +# # N.B. software from this repository may not have been tested as +# # extensively as that contained in the main release, although it includes +# # newer versions of some applications which may provide useful features. +{% if apt_backports_enable %} +deb {{ apt_debian_mirror }} {{ ansible_distribution_release }}-backports main contrib non-free +{{ '# ' if not apt_src_enable else '' }}deb-src {{ apt_debian_mirror }} {{ ansible_distribution_release }}-backports main contrib non-free +{% endif %} + diff --git a/roles/common/templates/etc/samba/smb.conf.j2 b/roles/common/templates/etc/samba/smb.conf.j2 new file mode 100644 index 0000000..19374cc --- /dev/null +++ b/roles/common/templates/etc/samba/smb.conf.j2 @@ -0,0 +1,1048 @@ +# This is the main Samba configuration file. You should read the +# smb.conf(5) manual page in order to understand the options listed +# here. Samba has a huge number of configurable options (perhaps too +# many!) most of which are not shown in this example +# +# For a step to step guide on installing, configuring and using samba, +# read the Samba HOWTO Collection. +# +# Any line which starts with a ; (semi-colon) or a # (hash) +# is a comment and is ignored. In this example we will use a # +# for commentry and a ; for parts of the config file that you +# may wish to enable +# +# NOTE: Whenever you modify this file you should run the command "testparm" +# to check that you have not made any basic syntactic errors. +# + +#======================= Globale Einstellungen ===================================== + +[global] + + # workgroup = name + # + # Der Sambaserver wird Mitglied der Arbeitsgruppe "name". + # Diese Gruppenzuordnung ist sehr lose. jedeR kann in die + # Gruppe ein- oder austreten ohne irgendwelche + # Sicherheitskriterien zu erfüllen. Anders als bei den + # Domänen. + # !! Bei aktivierter Domänenfunktion wird dieser Parameter + # Domänname verwendetals !! + # + ## aktuell: workgroup = workgroup + ;workgroup = Aktionsbuendnis + workgroup = WORKGROUP + + # netbios=name + # + # NetBIOS ist im Gegensatz zu DNS ein flacher Namensraum + # ohne Hirarchie. + # Diese Namen werden vollkommen dynamisch vergeben. Bootet + # ein (Windows)-Rechner, so versucht er seinen eigen + # NetBIOS-Namen zu reservieren. existiert dieser schon, so + # hat der neue Rechnwer Pech gehabt und kann nicht am Netzwerk + # teilnehmen. + # Damit wird für den Server "name" registriert. Unter diesem + # ist er für die Sambaclients ansprechbar. + # NetBIOS-Namen sind nicht unbedingt nur auf Computer anwendbar. + # Auch angemeldete Benutzer und Computergruppen können mit + # NetBIOS-Namen angesprochen werden. + # + ## aktuell: netbios name = anita + netbios name = FILE + + name resolve order = lmhosts wins bcast host + + # server string = name + # + # Die Kommentarzeile des Servers. + # + ## aktuell: server string = anita + server string = File Server ( Samba %v ) + + # kernel oplocks = yes | no + # oplock ( opportunistischer Lock) auf betriebssystemebene. + # In der Regel werden Daten ( Dateien ) zwischengespeichert + # und nicht jede Änderung gleich geschrieben. Samba kann intern + # (Parameter oplock einer Freigabe s.u.) davon gebrauch machen. + # Mit "kernel oplocks" kann dies auch auf Betriebssystemebene + # eingestellt werden. Es kann also sowohl per Samba als auch etwa + # direkt unter Unix/Linux oder NFS zugegriffen werden ohne auf + # die Geschwindigkeitsvorteile des Oplocks zu verzichten. + # Standardmäßig ist dieser Parameter aktiviert, sofern das + # Betriebssystem dies unterstützt (derzeit IRIX und Linux + # Kernel 2.4) + # + # !!! soll "level2 oplocks" aktiviert werden, so darf muß + # "kernel oplocks" deaktiviert werden. (s.u.) + # + ## aktuell: kernel oplocks = yes + kernel oplocks = no + + # oplock break wait time = + # Dies ist (eigentlich) ein Tuning-Parameter, der aufgrund + # von fehlerhaften Windowsbetriebssystemen aufgenommen wurde: + # Antwortet Samba zu schnell auf Anfragen, die einen "oplock break + # request" zur Folge haben können, so kann die Verbindung fehlschlagen + # und der client antwortet nicht auf den break request. Mit diesem + # Parameter wird Samba angewiesen die angegebene Zeit (in Millisekunden) + # zu warten, bevor ein oplock break request gesendet wird. + # Standardeinstellung: oplock break wait time = 0 + # + # by the way: + # SMB, steht für Server Message Block, und ist ein Protokoll + # welches die gemeinsame Benutzung von Dateien, Druckern, + # seriellen Ports, auch "named pipes" und "mail slots" zwischen + # Computern erlaubt. + # 2002-09-24 ch: fix oplock break prob? + oplock break wait time = 10 + + # deadtime = n + # nach n Minuten Inakrivität wird die Verbindung + # unterbrochen. + # + deadtime = 0 + + # keepalive = n + # überprüft alle n Sekunden, ob ein client noch erreichbar + # ist (ob er überhaupt noch lebt ). Wenn nicht, geht der + # Server davon aus, daß der client abgeschaltet oder abgestürzt + # ist und beendet die Verbindung. + # !! Besser ist es, dies nicht auf Samba-Ebene sondern auf + # Verbindungsebene zu regeln ( mit "socket options") + # + ## aktuell: keepalive = 30 + keepalive = 0; + + # socket options = OPTIONS + # + # TCP_NODELAY + # ist standardmäßig aktiviert. Pakete werden + # sofort abgeschickt. Normalerweise wird bei + # kleinen Datenmengen gewartet bis "genügend" + # Daten zusammen sind damit es sich lohnt diese + # übers Netz zu schicken. + # + # SO_KEEPALIVE + # Bei TCP-Verbindungen wird mit dieser Option + # erreicht, daß die Gegenstelle der Verbindung + # auf Erreichbarkeit und Funktionsbereitschaft + # überprüft wird. Ist dies nicht der Fall, so + # wird die Verbindung beendet + # + # SO_BROADCAST + # Erlaubt das Versenden von Broadcast-Meldungen an + # das gesamte Netzwerk. + # + # SO_REUSEADDR + # Erlaubt die Weiterverwendung von Socketadressen + # + # IPTOS_LOWDELAY + # IPTOS_THROUGHPUT + # Diese beiden Optionen sind fuer das routing. Soll die + # direkte (IPTOS_LOWDELAY) oder die mit mehr Bandbreite + # (IPTOS_THROUGHPUT) benutz werden ? Die meisten Router + # reagieren auf die entsprechenden Einträge in den + # Paketheadern nicht, so sind diese Socketoptionen meistens + # sinnlos + # + # SO_SNDBUF = + # der Sendepuffer kann mit dieser Option gesetzt werden + # Bemerkung: siehe SO_RCVBUF + # + # SO_RCVBUF = + # Der Empfangspuffer kann mit dieser Option gesetzt werden + # Bemerkung: + # Mit den beiden Optionen SO_SNDBUF und SO_RCVBUF kann der + # letzte Schliff in die Konfiguration gebracht werden. Wer + # aber nicht wirklich ein Geschwindigkeitsfanatiker ist, + # sollte die Finger davon lassen + # + # SO_SNDLOWAT = + # SO_RCVLOWAT = + # Diese beiden Parameter definieren, wievile Daten vorhanden sein + # müssen, damit sie vom socket weitergeleitet werden. Auch dies + # sollte gelassen werdewn wie es ist. Unter Linux kann das + # Verhalten gar nicht verändert werdeb + # + ## aktuell: socket options = SO_KEEPALIVE IPTOS_LOWDELAY TCP_NODELAY + socket options = TCP_NODELAY + + # security = share | user | server | domain + # + # Mit diesem Parameter wird der Sicherheitsmodus eingestellt. Es + # wird das "security mode bit" gesetzt. Es werden zur Zeit die vier + # unten aufgelisteten Modi unterstütz. + # + # share die Authentifizierung erfolgt auf Freigabeebene. Beim Einloggen + # Server wird noch keine Überprüfungen vorgenommen. Erst zum + # das Verbinden mit einer Freigabe ist ein Passwort (kein + # Benutzername) erforderlich. Windows sendet trotzdem ein + # Benutzername mit. Für Authentifizierung werden foldende + # Benutzer verwendet + # - wird ein benutzername mitgesendet wird zunächst dieser + # zur Anmeldung benutzt. + # - ist der rechner bereits beim Sambaserver angemeldet wird + # der hierbei verwendete Name benutzt + # - danach wird der Name der Freigabe benutzt + # - als nächstes wird der NetBIOS_Name des Clients versucht + # - schließlich werden die in der "username"_liste der Freigabe + # aufgeführten Namen versucht + # - falls der "guest ok" Parameter gesetzt, alle anderen + # Anmeldungen fehlschlugen, wird der "guest account" Name + # verwendet. + # + # user Bevor sich ein Client mit dem Server verbinden kann, muß er + # sich mit Benutzernamen und Passwort authentifizieren. Erst + # wenn dies erfolgreich war, wird die Liste der verfügbaren + # Freigaben gesendet + # + # server Dieser Modus funktioniert im Prinzip we der user-Modus. + # Allerdings wird zunächst ein anderer SMB-Server nach + # Benutzernamen und Passwort befragt (password server = Computername). + # Erst wenn dies fehlschlägt, wird in der eigenen Datenbank + # nachgeschaut. Dieser Modus ist durch den domain-Modus überholt. + # + # domain Ähnlich wie beim server-Modus wird auf die Benutzerauthentufizierung + # eines anderen Servers vertraut. Anders als beim server-Modus + # wird das NT-Domain-Sicherheitsprotokoll unterstützt. Das + # bedeute, daß auch Benutzer aus vertrauten Domänen der Zugang + # gestattet werden kann. + # + security = user + + + # encrypt passwords = yes | no + # aktiviert die Passwortverschlüsselung (= yes). Damit ist zwar + # die Verschlüsselung aktiviert, aber weil Microsoft eine andere + # Verschlüssellungsroutine benutzt als Linux, können die + # Linux-Paßwortdateien ("passwd","shadow" oder die NIS-Datenbank + # nicht benutzt werden. Samba benötigt eine eigene Paßwortdatei, + # üblicherweise heißt sie "smbpasswd" und liegt im private-Verzeichnis + # der Sambainstallation (s.u. parameter "smb passwd file") + # + encrypt passwords = true + + passdb backend = smbpasswd + + + # smb passwd file = Dateiname + # Gibt den Ort und Namen der Samba-Paßwortdatei an. Diese wird benötigt + # wenn Paßwortverschlüsselung benutzt wird. + # + # !!! Die Paßwotdatei und die darin befindlichen Hashwerte sind angreifbar. + # Sie sollte dem user "root" gehören und nur von ihm lesbar, beschreibbar + # und ausführbar sein. (chmod 700) + # + # benötigt: encrypt passwords = yes + # + ## aktuell: /etc/samba/smbpasswd + #smb passwd file = /usr/local/samba/private/smbpasswd + smb passwd file = /etc/samba/smbpasswd + + + # unix password sync = yes | no + # Wenn Kennwörter durch den Client oder durch das Passwortprogramm + # smbpasswd geändert werden, so müßte anschließend auch das "normale" + # unix-Passwort geändert werden, wenn nicht mit zwei verschiedenen + # Kennwörtenr gearbeitet werden soll. Das läßt sich durch diesen + # Parameter (yes) ändern. Falls dieser Parameter aus Yes eingestellt + # ist, wird das in dem Parameter "passwd program" angegebene Programm + # als ROOT aufgerufen, um zu erlauben, das neue Passwort zu setzen ohne + # das alte angeben zu müssen. + # + ## aktuell: unix password sync = no + unix password sync = yes + + + # passwd program = Dateinme + # Dieser Parameter gibt den Ort und Namen des Programms an, mit dem + # das UNIX-Passwort geändert werden kann (i.allg. /bin/passwd oder + # /usr/bin/passwd). Diese Programm wird als root ausgeführt und weiß + # nicht, für welchen Namen das Passwort geändert werden soll. Daher + # sollte diesem mit dem Makro %u der Benutzername übergeben werden. + # + # Beachte: Passwortprogramme sind i.d.R. interaktive Programme. Die + # Unterhaltung (Chat) muß mit Hilfe des Parameters "passwd chat" + # konfiguriert werden (s.u.). + # + # benötigt: unix password sync = yes + # + ## aktuell: passwd program = /bin/passwd + passwd program = /usr/bin/passwd %u + + + # passwd chat = "Ausgabestring" "Eingabestring" + # [ "Ausgabestring" "Eingabestring" ] [...] + # + # Mit den anzugebenden Zeichenketten wird die Unterhaltung zwischen + # dem passwd-Programm und dem smbd beim Ändern des Passwortes + # konfiguriert (eine oder mehrere aufeinanderfolgende Aus- und + # Eingabepaare). Die Ein- und Ausgabestrings sind durch ein Leerzeichen + # voneinader getrennt. Der Ausgabeteil besteht aus dem Text, welches das + # passwd-Programm ausgibt. Dabei ist es möglich, das Jokerzeichen "*", + # welches für eine beliebige auch 0-Zeichen lange Zeichenkette steht. + # Der Eingabeteil sind die Eingaben, die das passwd-Programm benötigt. + # Hierbei wird "%o" für das alte (wir in der Regel nicht gebraucht, da + # das passwd-Programm als user "root" aufgerufen wird und somit das alte + # Passwort nicht benötigt wird) und "%n" für das neue Passwort verwendet. + # Ferner können folgende Escapesequenzen benutzt werden: + # /n Zeilenvorschub + # /r Wagenrücklauf + # /t Tabulator + # /s Leerzeichen + # + # beachte:Ein String kann durch doppelte Anführungszeichen + # "zusammengehalten" werden. Um Leerzeichen in Passwörten + # zu ermöglichen sollten in der Chat-Zeile "%n" und "%o" durch + # doppelte Anführungszeichen geschützt werden. + # + # Das Chat-script ist case-sensitiv + # + # benötigt: unix password sync = yes + # + # Für Red Hat 7.2: + # passwd chat = *asswor*\n* "%n"\n *asswor* "%n"\n *success* + # + #passwd chat = *new*password* "%n"\n **new*password* "%n"\n *success* + passwd chat = *Enter\snew\s*\spassword:* %n\n *Retype\snew\s*\spassword:* %n\n *password\supdated\ssuccessfully* . + + # guest account = + # Mit diesem Parameter werden Gastzugriffe einem echten + # Unix-Benutzer zugeordnet. ( Freigabe Parameter guset = ok + # oder guest only = yes) + # Standardeinstellung: guest account = nobody + # + ## aktuell: guest account = nobody + ; guest account = nobody + + # guest ok = yes |no + # Soll eine Freigabe auch für Gäste zugänglich sein, so ist dieser + # Parameter auf "yes" zu setzen + # + guest ok = no + + # map to guest = Never | Bad User | Bad Passwort + # Mit diesem Parameter wird eingestellt, was mit Anfrgaen + # passeirt, die keinen Benutzern und kein gültiges + # Passwort besitzen + # + # Never + # Requests mit ungültigem Passwort werden zurückgewiesen. Es + # werden noch nichteinmal die Freigaben gezeigt. + # (Standardeinstellung) + # + # Bad User + # Benutzer mit faslchem Passwort werden zurückgewiesen. Bei + # unbekanntem Benutzer wird auf den "guest account" gemappt + # + # Bad Password + # Benutzer mit falschem Passwort werden auf den "guest account" + # gemappt. + # VORSICHT: + # der Benutzer erkennt dies nicht und weiß somit + # nicht mit welchen Rechten er auf den Server zufreift. + # Das kann zu Verwirrungen führen. + # + ## aktuell: map to guest = Bad User + map to guest = Never + + # username map = + # Wenn auf den Windows-Clients ein Usere unter anderem Namen + # Auftritt als auf dem Samba-Server, so bietet sich eine Datei + # für die Zuordnung an + # Bsp.: + # root = admin administrator + # weist den usernamen admin oder administraor den unixnamen + # root zu + ; username map = /usr/local/samba/lib/users.map + + # hide files = [DateiOderVerzeichnis[/andereDateiOderVerzeichnis[/... + # Mir diesem Parameter kann eine Liste von Dateien und/oder + # Verzeichnissen angegeben werden, die nicht angezeigt werden + # sollen (hidden Attribut wird gesetzt). Die einzelnen + # Dateien/Verzeichnisse werden durch ein Slash "/" getrennt und + # können Wildcards "*" und "?" enthalten, nicht aber den Slash + # selbst. Die Eintraege mussen den UNIX Dateinamenkonventionen + # gehorchen. + # + ## aktuell: hide files = /DesktopFolderDB/TrashFor%m/resource.frk/Icon%0D/ + hide files = /.*/DesktopFolderDB/TrashFor%m/resource.frk/ + + # default case = upper | lower + # Standardschreibweise für neu angelegte Dateien + # Standardeinstellung: default case = lower + # + defaultcase = lower + + # preserve case = yes | no + # Mit diesem Parameter kann festgelegt werden, ob bei neu angelegte + # Dateien die Klein/Großschreibung des Clienten beibehalten + # wird (yes) oder die Standardeinstellung (Parameter "default case") + # benutzt wird (no). + # + preserve case = yes + + # short preserve case = yes | no + # Wie Parameter "preserve case" jedoch nur gültig für kurze + # im DOS-Format 8.3 gehaltene Dateien + # + short preserve case = yes + + # dos charset = + # Mit dieser Option wird der Zeichensatz eingestellt, mit dem Samba zu + # den DOS-Clienten sprechen soll + # Standardeinstellung: hängt von den installierten Zeichensätzen ab. Samba + # versucht den Zeichensatz 850 zu benutzen. Ist dieser nicht vorhanden, wird + # der ASCII Zeichensatz genommen. + # + dos charset = CP850 + + # unix charset = + # Gibt an, welchen Zeichensatz Samba (auf der Unix Maschine) benutzen soll. + # Diese Angabe wird benötigt, damit Samba weiß, wie es text für die clients konvertieren muß + # Standardeinstellung: unix charset = UTF8 + # + ##unix charset = ISO-8859-1 + unix charset = UTF8 + + # display charset = + # Zeichensatz den Sammba für Ausgaben auf stdout, stderr und für SWAT + # benutzt. Sollte der gleiche wie für den Parameter "unix charset" + # sein. + # Standardeinstellung: display charset = ASCII + # + ##display charset = ISO-8859-1 + #display charset = UTF8 + + + # valid chars + # In Samba 3.x nicht mehr verfügbar + ## aktuell valid chars = 0224:0231 0204:0216 0201:0232 + + # character set = + # In Samba 3.x nicht mehr verfügbar + ## aktuell: character set = ISO8859-15 + + # client code page = + # In Samba 3.x nicht mehr verfügbar + ## aktuell: client code page = 850 + + + os level = 50 + local master = yes + preferred master = yes + domain master = yes + + # wins support = yes | no + # Ist dieser Parameter auf yes, so übernimmt der nmbd die + # Funktion eines WINS-Servers. Die Datenbankdatei mit dem + # namen wins.dat (ascii-format) wird im lock-Verzeichnis + # gespeichert + # Standardeinstellung: wins support = no + # + # !! VORSICHT !! + # Es kann immer nur ein Samba-Server wins support aktiviert + # haben. Andernfalls kan es zu großen Problemen kommen. + #wins support = Yes + + # If you want Samba to use an existing wins server, please uncomment the + # following line and replace the dummy with the wins server's ip number. + ;wins server = 192.168.52.1 + + + + + # log file = + # Dieser Parameter erlaibt es, eine alternative Log-Datei + # anzulegen. (Die einkompilierten Angaben werden dabei + # Überschrieben). Durch Makros wird es möglich, für jeden + # Nutzer oder jede Maschine seperate Log_dateien zu schreiben: + # log file = /log.%u legt für jeden + # User eine eigene Protokolldatei an. + # + ## aktuel: deaktiviert + # + # für jede Maschine ein eigenes log-file + log file = /var/log/samba/%m.log + + # log level = 0-10 | 100 + # Dieser Parameter spezifiziert, wie ausführlich die Meldungen + # von Samba sein sollen. (0 nur kritische Fehlermeldungen) + # Der Wert 100 spielt eine besondere Rolle. err speichert die + # während der Authetifizierung verwendeten Passworte + # + ## aktuell: log level = 2 + log level = 2 + + # max log size (G) + # + # Gibt die Größe (in Kilobyte) an, bis zu der die Logfiles + # wachsen dürfen. + # Samba überprüft regelmäßig die Größe. Falls das angegebene + # Maximum überschritten ist, wird der Logdatei die Endung .old + # angehangen und eine neue angelegt. + # + # A size of 0 means no limit. + # + # Default: max log size = 5000 + # + # Example: max log size = 1000 + # + max log size = 5000 + + ## - To use the CUPS printing interface set + ## - printcap name = cups + ## - + ## - This should be supplemented by an addtional setting + ## - printing = cups + ## - + #printcap name = /etc/printcap + printcap name = cups + printing = cups + + ## - A boolean variable that controls whether all printers in the + ## - printcap will be loaded for browsing by default. + ## - + ## - Default: load printers = yes + ## - + load printers = Yes + + # interfaces = IP-Adress/Subnetzmaske[ IP-Adress/Subnetzmaske... + # Dieser Parameter gibt das bzw. die Netzwerk(e) an, die Samba + # verwendet. + # Standard: erstes gefundenes Netzwerk und 127.0.0.1 + # + # !! VORSICHT !! + # eben die Standardeinstellung kann zum Problem werden, da + # Samba häufig das Dummy-Device als solches erkennt. Auch wenn + # nur ein Netzwerk installiert ist, ist es also sinnvoll, diesen + # Parameter zu verwendn + # + ;interfaces = eth0 192.168.82.10/24 lo 127.0.0.1/8 + interfaces = {{ ansible_default_ipv4.address }}/24 127.0.0.1/8 + + hosts deny = 0.0.0.0/0 + hosts allow = 192.168.0.0/16 10.0.0.0/8 127.0.0.0/8 + + # bindet nur an die im Parameter "interfaces" angegebenen Adressesn + # + # !! VORSICHT !! + # Wenn "bind interfaces only" gesetzt ist und die Netzwerkadresse + # 127.0.0.1 nicht im Parameter "interfaces" mit angegeben ist, dann + # arbeiten "smppasswd" und "swat" nicht wie erwartet. + # (siehe auch manpage smb.conf) + # + bind interfaces only = Yes + + local master = yes + prefered master = yes + domain master = yes + time server = yes + + + +# Do you wan't samba to act as a logon-server for your windows 95/98 +# clients, so uncomment the following: + domain logons = NO +# For a specific logon script per user +; logon script = %U.bat +# For a specific logon script per machine +; logon script = %m.bat + +# Where to store the logon scripts. +;[netlogon] +; comment = Network Logon Service +; path = /var/lib/samba/netlogon + +# Where profiles of Windows 9x systems are stored. +# First example for a centralized place. +; logon home = \\%L\profiles\%U +# Second example for a subdirectory of the users home. +; logon home = \\%L\%U\profile +# Where profiles of Windows NT systems are stored. +; logon path = \\%L\profiles\%U + + + +#============================ Freigaben ============================== + +# Extra share for profiles. Default is the home of the user. +#[profiles] +# comment = Network Profiles Service +# path = /var/lib/samba/profiles +# browseable = No + +[homes] + comment = Home Directories + read only = No + create mask = 0640 + directory mask = 0750 + browseable = No + + # By default, \\server\username shares can be connected to by anyone + # with access to the samba server. + # The following parameter makes sure that only "username" can connect + # to \\server\username + # This might need tweaking when using external authentication schemes + valid users = %S + + +[Transfer] + comment = Transfer + path = /data/samba/Transfer + ;root preexec = mount /dev/md1 /data ; mount /dev/md2 /data/samba + + # oplocks = yes | no + # + # oplock ist die Kurzform für opportunistischer Lock. + # Der Client speichert Dateien intern zwischen und schickt nicht + # jede Änderung gleich übers Netz. (Geschwindigkeitsvorteil). Sobald + # ein anderer Client auf die Daten zugreift, wird ein "oplock break" + # gesendet. Die Zwischengespeicherten Daten werden nun geschrieben und + # beide Clients greifen auf dieselben Daten zu. + # + oplocks = yes + + # level2 oplocks = yes | no + # Ist ein "oplock break" gesendet worden werden keinerlei Zugriffe + # mehr zwischengespeichert. Wollen jedoch alle zugreifenden Clients + # nur lesen, so gibt es dafür keinen Grund. Mit diesem Parameter + # wird ermöglicht, daß lesende Zugriffe trotzdem zwischengespeichert + # werden + # + # !!!! Unix kennt keine solchen "schreibgeschützten Oplocks". Ist + # also "kernel oplocks" aktiviert, so kann die ganze Sache nicht + # funktionieren + # + # benötigt: oplocks = yes, kernel oplocks = no + # + level2 oplocks = yes + + browseable = yes + read only = no + writeable = Yes + + force group = +transfer + # can login into that share + ;valid users = chris,jonas,anna,ralf,annika,frauke + valid users = @transfer + # allow to write + write list = @transfer + + create mask = 0664 + force create mode = 664 + directory mask = 2775 + force directory mode = 2775 + + ;vfs objects = vscan-clamav recycle + ;vscan-clamav: config-file = /usr/local/samba/lib/vscan-clamav.conf + vfs objects = recycle + recycle:keeptree = yes + # touch access time from this file + # note: this is not the modified time, which is + # outdatet by ls-command + # so yo can delete files older then n day with the following command: + # find /data/samba/share/bhoch3/.Trash -atime + -exec rm -rf {} \; + # + recycle:touch = yes + recycle:touch_mtime = no + recycle:versions = yes + recycle:maxsize = 10485760 # around 10MB + recycle:exclude = *.tmp,*.temp,*.o,*.obj,~$*,*.~?? + recycle:excludedir = /tmp,/temp,/cache,.Trash + recycle:repository = .Trash/%U + veto files = /.Trash/ + +[Transfer-trash] + comment = Papierkorb (Transfer) + path = /data/samba/Transfer/.Trash + + browseable = yes + read only = yes + +##[Archiv] +## comment = Archiv +## path = /data/samba/archiv +## ;root preexec = mount /dev/md1 /data ; mount /dev/md2 /data/samba ; chown sysadm:sysadm /data/samba/archiv +## ;root postexec = umount /dev/md2 +## +## # oplocks = yes | no +## # +## # oplock ist die Kurzform für opportunistischer Lock. +## # Der Client speichert Dateien intern zwischen und schickt nicht +## # jede Änderung gleich übers Netz. (Geschwindigkeitsvorteil). Sobald +## # ein anderer Client auf die Daten zugreift, wird ein "oplock break" +## # gesendet. Die Zwischengespeicherten Daten werden nun geschrieben und +## # beide Clients greifen auf dieselben Daten zu. +## # +## oplocks = yes +## +## # level2 oplocks = yes | no +## # Ist ein "oplock break" gesendet worden werden keinerlei Zugriffe +## # mehr zwischengespeichert. Wollen jedoch alle zugreifenden Clients +## # nur lesen, so gibt es dafür keinen Grund. Mit diesem Parameter +## # wird ermöglicht, daß lesende Zugriffe trotzdem zwischengespeichert +## # werden +## # +## # !!!! Unix kennt keine solchen "schreibgeschützten Oplocks". Ist +## # also "kernel oplocks" aktiviert, so kann die ganze Sache nicht +## # funktionieren +## # +## # benötigt: oplocks = yes, kernel oplocks = no +## # +## level2 oplocks = yes +## +## browseable = yes +## read only = no +## writeable = Yes +## +## force group = +archive +## +## # can login into that share +## valid users = @users +## # allow to write +## write list = @archive +## +## create mask = 664 +## directory mask = 2775 + + +[Verwaltung] + comment = Verwaltung + path = /data/samba/Verwaltung + ;root preexec = mount /dev/md1 /data ; mount /dev/md2 /data/samba ; chown sysadm:sysadm /data/samba/archiv + + browseable = yes + read only = no + writeable = Yes + + force group = +verwaltung + + # can login into that share + ;valid users = chris,jonas,anna,ralf,annika,frauke + valid users = @verwaltung + # allow to write + write list = @verwaltung + + force create mode = 660 + create mask = 0660 + force directory mode = 2775 + directory mask = 2775 + + ;vfs objects = vscan-clamav recycle + ;vscan-clamav: config-file = /usr/local/samba/lib/vscan-clamav.conf + vfs objects = recycle + recycle:keeptree = yes + # touch access time from this file + # note: this is not the modified time, which is + # outdatet by ls-command + # so yo can delete files older then n day with the following command: + # find /data/samba/share/bhoch3/.Trash -atime + -exec rm -rf {} \; + # + recycle:touch = yes + recycle:touch_mtime = no + recycle:versions = yes + recycle:maxsize = 10485760 # around 10MB + recycle:exclude = *.tmp,*.temp,*.o,*.obj,~$*,*.~?? + recycle:excludedir = /tmp,/temp,/cache,.Trash + recycle:repository = .Trash/%U + veto files = /.Trash/ + + +[Verwaltung-trash] + comment = Papierkorb (Verwaltung) + path = /data/samba/Verwaltung/.Trash + + browseable = yes + read only = yes + + +[Scans] + comment = Scans + path = /data/samba/Scans + ;root preexec = mount /dev/md1 /data ; mount /dev/md2 /data/samba ; chown sysadm:sysadm /data/samba/archiv + + browseable = yes + read only = no + writeable = Yes + + force group = +scans + + # can login into that share + ;valid users = chris,jonas,anna,ralf,annika,frauke + valid users = @scans + # allow to write + write list = @scans + + force create mode = 660 + create mask = 0660 + force directory mode = 2775 + directory mask = 2775 + +[Buero_Scans] + comment = Scans Buero + path = /data/samba/Scans/Buero_Scans + ;root preexec = mount /dev/md1 /data ; mount /dev/md2 /data/samba ; chown sysadm:sysadm /data/samba/archiv + + browseable = yes + read only = no + writeable = Yes + + force group = +scans + + # can login into that share + ;valid users = chris,jonas,anna,ralf,annika,frauke + valid users = @scans + # allow to write + write list = @scans + + force create mode = 660 + create mask = 0660 + force directory mode = 2775 + directory mask = 2775 + +[Frauke_Scans] + comment = Scans Frauke + path = /data/samba/Scans/Frauke_Scans + ;root preexec = mount /dev/md1 /data ; mount /dev/md2 /data/samba ; chown sysadm:sysadm /data/samba/archiv + + browseable = yes + read only = no + writeable = Yes + + force group = +scans + + # can login into that share + ;valid users = chris,jonas,anna,ralf,annika,frauke + valid users = @scans + # allow to write + write list = @scans + + force create mode = 660 + create mask = 0660 + force directory mode = 2775 + directory mask = 2775 + +[FSJ_Scans] + comment = Scans FSJ + path = /data/samba/Scans/FSJ_Scans + ;root preexec = mount /dev/md1 /data ; mount /dev/md2 /data/samba ; chown sysadm:sysadm /data/samba/archiv + + browseable = yes + read only = no + writeable = Yes + + force group = +scans + + # can login into that share + ;valid users = chris,jonas,anna,ralf,annika,frauke + valid users = @scans + # allow to write + write list = @scans + + force create mode = 660 + create mask = 0660 + force directory mode = 2775 + directory mask = 2775 + +[Jibran_Scans] + comment = Scans Jibran + path = /data/samba/Scans/Jibran_Scans + ;root preexec = mount /dev/md1 /data ; mount /dev/md2 /data/samba ; chown sysadm:sysadm /data/samba/archiv + + browseable = yes + read only = no + writeable = Yes + + force group = +scans + + # can login into that share + ;valid users = chris,jonas,anna,ralf,annika,frauke + valid users = @scans + # allow to write + write list = @scans + + force create mode = 660 + create mask = 0660 + force directory mode = 2775 + directory mask = 2775 + +[Julia_Scans] + comment = Scans Julia + path = /data/samba/Scans/Julia_Scans + ;root preexec = mount /dev/md1 /data ; mount /dev/md2 /data/samba ; chown sysadm:sysadm /data/samba/archiv + + browseable = yes + read only = no + writeable = Yes + + force group = +scans + + # can login into that share + ;valid users = chris,jonas,anna,ralf,annika,frauke + valid users = @scans + # allow to write + write list = @scans + + force create mode = 660 + create mask = 0660 + force directory mode = 2775 + directory mask = 2775 + +[Maica_scans] + comment = Scans Maica + path = /data/samba/Scans/Maica_scans + ;root preexec = mount /dev/md1 /data ; mount /dev/md2 /data/samba ; chown sysadm:sysadm /data/samba/archiv + + browseable = yes + read only = no + writeable = Yes + + force group = +scans + + # can login into that share + ;valid users = chris,jonas,anna,ralf,annika,frauke + valid users = @scans + # allow to write + write list = @scans + + force create mode = 660 + create mask = 0660 + force directory mode = 2775 + directory mask = 2775 + +[Thomas_Scans] + comment = Scans Thomas + path = /data/samba/Scans/Thomas_Scans + ;root preexec = mount /dev/md1 /data ; mount /dev/md2 /data/samba ; chown sysadm:sysadm /data/samba/archiv + + browseable = yes + read only = no + writeable = Yes + + force group = +scans + + # can login into that share + ;valid users = chris,jonas,anna,ralf,annika,frauke + valid users = @scans + # allow to write + write list = @scans + + force create mode = 660 + create mask = 0660 + force directory mode = 2775 + directory mask = 2775 + +[Kamera] + comment = Kamera + path = /data/samba/Kamera + ;root preexec = mount /dev/md1 /data ; mount /dev/md2 /data/samba ; chown sysadm:sysadm /data/samba/archiv + + browseable = yes + read only = no + writeable = Yes + + force group = +intern + + # can login into that share + ;valid users = chris,jonas,anna,ralf,annika,frauke + valid users = @intern + # allow to write + write list = @intern + + force create mode = 660 + create mask = 0660 + force directory mode = 2775 + directory mask = 2775 + +[Install] + comment = Install + path = /data/samba/Install + ;root preexec = mount /dev/md1 /data ; mount /dev/md2 /data/samba ; chown sysadm:sysadm /data/samba/archiv + + browseable = yes + read only = no + writeable = Yes + + force group = +intern + + # can login into that share + ;valid users = chris,jonas,anna,ralf,annika,frauke + valid users = @intern + # allow to write + write list = @intern + + force create mode = 660 + create mask = 0660 + force directory mode = 2775 + directory mask = 2775 + + +## - # Un-comment the following and create the netlogon directory for Domain Logons +## - # (you need to configure Samba to act as a domain controller too.) +## - ;[netlogon] +## - ; comment = Network Logon Service +## - ; path = /home/samba/netlogon +## - ; guest ok = yes +## - ; read only = yes +## - +## - # Un-comment the following and create the profiles directory to store +## - # users profiles (see the "logon path" option above) +## - # (you need to configure Samba to act as a domain controller too.) +## - # The path below should be writable by all users so that their +## - # profile directory may be created the first time they log on +## - ;[profiles] +## - ; comment = Users profiles +## - ; path = /home/samba/profiles +## - ; guest ok = no +## - ; browseable = no +## - ; create mask = 0600 +## - ; directory mask = 0700 +## - +## - [printers] +## - comment = All Printers +## - browseable = no +## - path = /var/spool/samba +## - printable = yes +## - guest ok = no +## - read only = yes +## - create mask = 0700 +## - +## - # Windows clients look for this share name as a source of downloadable +## - # printer drivers +## - [print$] +## - comment = Printer Drivers +## - path = /var/lib/samba/printers +## - browseable = yes +## - read only = yes +## - guest ok = no +## - # Uncomment to allow remote administration of Windows print drivers. +## - # You may need to replace 'lpadmin' with the name of the group your +## - # admin users are members of. +## - # Please note that you also need to set appropriate Unix permissions +## - # to the drivers directory for these users to have write rights in it +## - ; write list = root, @lpadmin +## - +## - # A sample share for sharing your CD-ROM with others. +## - ;[cdrom] +## - ; comment = Samba server's CD-ROM +## - ; read only = yes +## - ; locking = no +## - ; path = /cdrom +## - ; guest ok = yes +## - +## - # The next two parameters show how to auto-mount a CD-ROM when the +## - # cdrom share is accesed. For this to work /etc/fstab must contain +## - # an entry like this: +## - # +## - # /dev/scd0 /cdrom iso9660 defaults,noauto,ro,user 0 0 +## - # +## - # The CD-ROM gets unmounted automatically after the connection to the +## - # +## - # If you don't want to use auto-mounting/unmounting make sure the CD +## - # is mounted on /cdrom +## - # +## - ; preexec = /bin/mount /cdrom +## - ; postexec = /bin/umount /cdrom +## -